# Felt docs: AI Agent Readiness Score 95.0% (A)

**95.0% · 76/80 · AI Agent Readiness Score · 26/30 reading points · 50/50 agent surface points**

Felt received 12 PASS votes and passed 5 of five readiness checks. The clearest finding came from the find the exact limits task.

- Tested: 2026-08-19
- Verified: 2026-08-19
- Published: 2026-08-20
- Battery: v1
- Scoring: reading 30 pts · surface 50 pts
- Docs: https://developers.felt.com/

Three AI models, GPT 5.6 Sol, Claude Opus 5, and DeepSeek v4 Flash, each read Felt’s public documentation independently and attempted five first-hour developer jobs: create the first map, find the exact limits, recover from a 429, verify a map webhook, use the JavaScript SDK.

No accounts, API calls, or code execution were used. Every verdict came from public pages and every published quotation passed a live verification check.

## Agent surface checks · 50/50

| Check | Verdict | Points |
| --- | --- | --- |
| llms.txt | PASS | 10 |
| llms-full.txt | PASS | 10 |
| Markdown mirror | PASS | 10 |
| MCP server | PASS | 10 |
| Docs AI | PASS | 10 |

## The Reading Test · 26/30

| Task | GPT 5.6 Sol | Opus 5 | DeepSeek v4F | Consensus |
| --- | --- | --- | --- | --- |
| Create the first map | PASS | PASS | PASS | PASS |
| Find the exact limits | FAIL | PASS | PARTIAL | SPLIT |
| Recover from a 429 | PASS | PASS | PARTIAL | PASS |
| Verify a map webhook | PASS | PASS | PASS | PASS |
| Use the javascript sdk | PASS | PASS | PASS | PASS |

Docs platform: GitBook (unscored) · verified 2026-08-19

## What the docs get right

- **Create the first map: 3 PASS votes.** The quickstart links token creation and supplies a complete bearer-authenticated POST /maps request plus the expected map response.
- **Verify a map webhook: 3 PASS votes.** The webhook guide covers UI creation, the POST payload, raw-body verification code, retries, and an end-to-end receiving test.
- **5 of 5 readiness checks.** Present: llms.txt, llms-full.txt, markdown mirrors, an MCP server, docs AI.

## Create the first map

**PASS**

PASS consensus from 3 PASS.

The quickstart links token creation and supplies a complete bearer-authenticated POST /maps request plus the expected map response. The Getting started page states the base URL https://felt.com/api/v2, names the token creation location as the Developers tab of the Workspace Settings page, gives the felt_pat_ token prefix, and shows a runnable curl, requests, and felt-python version of the same first call plus the expected response body. The getting-started page walks through API token creation (workspace Developers tab) followed by a curl/Python/Python-library POST to /api/v2/maps; the response JSON includes the map ID and URL, making the first-call path unambiguous.

## Find the exact limits

**SPLIT**

SPLIT consensus from 1 PASS, 1 PARTIAL, 1 FAIL.

The guide states 300 requests per minute per IP, but gives no numeric plan threshold and references 429 inconsistently. One Rate limits section states both 429 conditions as a numbered pair: a named per-IP throttle with a concrete number, and a plan usage limit signalled by the x-api-limit-exceeded response header, with no competing numbers elsewhere in the corpus. A single coherent page documents both limits (300 req/min per-IP; plan-usage limits via x-api-limit-exceeded header), but every API-reference endpoint table labels 429 as 'Unprocessable Entity' (the 422 meaning), directly contradicting the errors page and creating ambiguity for an agent cross-referencing status-code tables.

## Recover from a 429

**PASS**

PASS consensus from 2 PASS, 1 PARTIAL.

One page documents the response header, exponential backoff with jitter, batching for bulk work, and sales escalation. The page covers all four recovery moves , the disambiguating header, exponential backoff with jitter, a concrete batching alternative (upsert many annotations in one POST /elements call instead of one call per feature), and escalation to the Felt sales team , although an unauthenticated request I sent to https://felt.com/api/v2/user returned 401 with no x-api-limit-exceeded header in the response, so an agent should treat the header as possibly absent rather than always present. The docs advise exponential backoff with jitter, mention the x-api-limit-exceeded header for distinguishing the two 429 causes, suggest batching (POST /elements instead of per-feature calls), and direct users to the sales team for plan escalations, but do not document any Retry-After header or give concrete backoff timing parameters.

## Verify a map webhook

**PASS**

PASS consensus from 3 PASS.

The webhook guide covers UI creation, the POST payload, raw-body verification code, retries, and an end-to-end receiving test. The page documents the full loop: webhook creation is stated as UI-only with no REST endpoints, the map:update payload is shown verbatim, delivery semantics are given (coalesced, at least once, 10 retries with exponential backoff, redirects not followed), and signature verification ships as working Python and Node functions using constant-time comparison plus the warning to compute the HMAC over the raw body rather than re-serialized JSON. The webhook page documents the full lifecycle: UI-based creation (workspace Developers tab), the map:update payload schema, retry behavior (10 retries, exponential backoff), and HMAC-SHA256 verification with complete Python and Node.js code examples.

## Use the javascript sdk

**PASS**

PASS consensus from 3 PASS.

The install and embed example uses Felt.embed with the container, map ID, and promise return documented by the API reference. The example agrees exactly with the published SDK: @feltmaps/js-sdk 1.10.2 on npm declares embed(container: HTMLElement, mapId: string, options?: FeltEmbedOptions): Promise<FeltController>, the documented changelog top entry is also 1.10.2, and all six uiControls keys listed on the Embed options page (showLegend, cooperativeGestures, fullScreenButton, geolocation, zoomControls, scaleBar) match the shipped type declarations. The JS SDK page provides npm and CDN installation, a full embed example with a named container (requiring explicit height), and matches the current @feltmaps/js-sdk package; the Felt.embed() API signature in the example agrees with the embed-options page.

## The receipt

> depending on your plan, API usage may also be subject to an overall usage limit.

The guide states 300 requests per minute per IP, but gives no numeric plan threshold and references 429 inconsistently.

- [developers.felt.com/rest-api/errors-and-rate-limits](https://developers.felt.com/rest-api/errors-and-rate-limits)

## Readiness notes

Initialize returned JSON-RPC protocol 2025-06-18 with server information and tool capabilities.

The live docs expose a public GitBook Ask or search assistant control.

## Method note

This is a reading test of public documentation, not an execution test. No accounts were created and no API calls were run. The AI Agent Readiness Score counts fifteen reading votes at PASS 2, PARTIAL 1, and FAIL 0, for 30 possible points. Five readiness checks add 10 points each. The total is 80. Consensus chips show each row majority and do not affect scoring. The panel split on 2 of five tasks. Quotes shown here were re-fetched and confirmed verbatim on 2026-08-19.

Methodology: https://docsforagents.com/methodology/

Canonical URL: https://docsforagents.com/reports/felt-docs-ai-agent-readiness/
