Published 2026-08-20 · Tested 2026-08-19

Felt

A

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

Panel: GPT 5.6 Sol, Opus 5, DeepSeek v4F Battery: v1 Verified: 2026-08-19 Read as markdown (opens in a new tab)

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.

Felt GitBook · published 2026-08-20
A

95.0% · 76/80 · AI Agent Readiness Score · reading 30 pts · surface 50 pts

llms.txt PASS
llms-full.txt PASS
markdown mirror PASS
MCP server PASS
docs AI PASS
Task GPT 5.6 SolOpus 5DeepSeek v4F Consensus
Create the first map PASSPASSPASS PASS
Find the exact limits FAILPASSPARTIAL SPLIT
Recover from a 429 PASSPASSPARTIAL PASS
Verify a map webhook PASSPASSPASS PASS
Use the javascript sdk PASSPASSPASS 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.

Agent surface 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.

Read the full methodology

Put another docs site through the battery.

Nominate a docs site