SPEC IN38 TYPED TOOLS · 3 UNSAFE FLAGGED

Behavior-verified API integration

A spec is a claim.We go and check.

Paste an OpenAPI spec, a Postman collection, or one cURL command. DocentAPI turns it into typed tools, works out which call produces the id the next one needs, runs the read-safe operations against your live service — and writes down what actually came back, with the evidence attached.

Try an example

No signup · keys never stored · 24-hour anonymous workspace

Subject
Any HTTP API — OpenAPI, Postman, or one cURL command
Method
Read-safe operations executed against the running service
Issued
On import, and re-issued whenever the spec changes
scroll
FOR HUMANSINTEGRATION PAGEONE IMPORTFOR AGENTSHOSTED MCPClaudeCursorCopilot

02Surfaces

Every API company is getting the same question: “Do you have an MCP server?”

Humans read docs. Agents need tools. Most APIs can answer for only one of them — and the agent traffic is already arriving. DocentAPI answers for both, from a single import.

For humans

A live integration page

A hosted, shareable page for your API — real docs, working examples, and a playground where visitors test calls with their own key. Claimable by you, linkable by everyone.

  • Try-it playground — keys never stored, never logged
  • Generated snippets — cURL, TypeScript, Python
  • Always current — regenerated on every spec change

For agents

A hosted MCP server

The same import, exposed over the Model Context Protocol. Claude, Cursor, and Copilot call it directly — typed tools, auth handled, every call checked against how your API really behaves.

  • Drop-in endpoint — zero infra on your side
  • Verified tools, not spec echoes
  • Every tool annotated read or write — unsafe ops flagged
PRODUCESPOST/customersresponse.idPRODUCESGET/pricesresponse.data[].idforeign_key_name · highdistinctive_name · highREQUIRESPOST/subscriptionsbody.customerproduced_by_apibody.items[].priceproduced_by_apibody.trial_period_dayscaller_suppliedno producernothing produces this.we say so, rather than guess.

03Lineage

Which call produces the id the next call needs.

An agent that invents an identifier fails, retries, and fails again. DocentAPI reads every operation’s output against every other operation’s input and works out what feeds what — weighing eleven signals, from a shared schema title down to a type mismatch that argues against the link.

≥ 0.95

Precision, gate-enforced

Measured against four hand-labelled corpora built to the structural shapes that break this — RPC paths with no resource hierarchy, pagination params, five resources all exposing a bare id. The build fails below the gate.

Silence

The answer when we don’t know

Recall is measured and printed, never asserted. Asserting on it would pressure the engine toward guessing, which is the one failure this is built to avoid. A low-confidence edge is withheld, not shown with a hedge.

Every edge

Carries its reasoning

No link is asserted without the signals that produced it. A pet’s id and a category’s id are both bare integers named id; resolving which is which is most of the work, and the reasoning is published with the answer.

04The truth layer

Every field says where its value is supposed to come from.

The single most expensive question when integrating an API is “what do I put here?” — and a spec answers it for almost nothing. DocentAPI classifies every writable field into one of 5 origins, and records how it knows.

The five field origins DocentAPI classifies into
OriginWhat it means for a callerDecided by
server_generatedThe API produces it. Anything you send is ignored or rejected.readOnly in the schema
constantExactly one legal value, so there is nothing to decide.const in the schema
produced_by_apiAnother operation returns it — and we name which one, per field.Lineage
enum_constrainedPick from a fixed list. We can show you the list.enum in the schema
caller_suppliedGenuinely yours to choose. This is the only one that needs you.Nothing else matched

Each annotation also carries how confident we are entitled to be. A value the owner confirmed is marked human; one inferred from a quote in their own documentation is assumed, and carries that quote; one we worked out from structure alone is heuristic. Only a person can set the human mark — a database constraint makes anything else unrepresentable, not merely discouraged.

Some things a document genuinely cannot say.

Whether the server honours the id you send. Whether a PUT replaces the record or merges into it. What userStatus: 2 means. Nobody can derive these — so we ask you, once, and we never ask with a blank box.

Every question is one of 8 shapes, and each shape’s answers are enumerated from the field itself — its type, its enum, its position in the path, what lineage already found. The options are not generated. They are what the structure allows.

  1. 01Identifier ownershipOn a create, does the server assign this id or honour the one I send?
  2. 02Producer disambiguationLineage found several plausible sources. Which should a caller actually use?
  3. 03Description contradicts operationThe field says “delete”, but this is a read. Which one is stale?
  4. 04Scope of effectDoes this PUT replace the record, or merge? Do omitted fields get wiped?
  5. 05Format or shapeA bare string named expiresAt with no declared format. Which format is it?
  6. 06Optionality in practiceOptional in the schema — but what actually happens if it is omitted?
  7. 07Undocumented code semanticsA status integer with no enum. What do 1 and 2 mean?
  8. 08Origin unknownThe fallback — still a closed choice over the five origins, never a blank box.

Ordered easiest first, because someone who answers three quickly keeps going. One answer applies to every operation the field appears on, and skipping is a real answer — it publishes an honest unresolved rather than a guess.

identifier ownershipQuestion 1 of 13

Who assigns this id?

add_pet · body.id

add_pet creates a record, and "body.id" is writable, so a caller cannot tell whether sending an id does anything.

  • The server assigns it and ignores what I send
  • The caller chooses itA client-assigned id the server stores as given.
  • Either — the server assigns one if I leave it out
  • Something else…

Unlocks Agents stop inventing ids on create, or stop omitting one you actually require.

Rendered by the live classifier, not written for this page.
DOCUMENTEDOBSERVEDid: stringid: stringamount: integeramount: integercurrency: stringcurrency: stringstatus: enumstatus: enumstatus: "pending_review"← PATCHED

05Verification

Anyone can turn OpenAPI into MCP. We prove the tools work.

Transpilers echo the spec and hope. DocentAPI executes the tools, catches where the docs lie, patches the tool definitions — and re-verifies so drift never reaches an agent.

agent ↔ www.docentapi.xyz/mcp/acmereplay
agentcreate a $120 transfer for cust_81
docentapi tools/call → create_transfer · verified 2h ago
01 create_user → user_id
02 create_account ×2 → account_id · requires user_id
03 create_transfer → transfer_id · Idempotency-Key attached
! drift caught · status “pending_review” not in spec — tool schema patched automatically
agent 200 — shipped on the first pass

Session replay — scripted from a real drift finding.

  • Read-safe probes. Live calls against real endpoints — writes are graded statically, never executed.
  • Evidence-linked. Every point traces back to a recorded fact, not a heuristic guess.
  • Owner-verified. Claim your domain, run verification — the mark is earned, never assumed.

Stainless generates SDKs. Mintlify renders docs. Speakeasy transpiles MCP. DocentAPI verifies the surface agents actually touch — and scores it.

87AGENT-READY■ EARNED LIVE■ GRADED FROM THE DOCUMENT

Worked example — not a measurement of any API.

06Score

Lighthouse gave the web a number. This is yours.

A 0–100 grade of how well an agent can drive your API. Two of the four sub-scores are earned by making real calls against the running service; two are graded from the document. We label which is which, on the page and in the MCP tool that explains it.

Error quality78

Live — a read-safe call is deliberately malformed

Do failures explain themselves, or dead-end at an unlabelled 400?

Doc drift84

Live — real responses compared against the documented shape

Do the top-level keys and types match what the spec promised?

Auth clarity92

Static — graded from the declared scheme

Can an agent discover and satisfy auth without a human in the loop?

Idempotency95

Static — whether a retry key is offered at all

Agents retry. Does the API give them a safe way to?

Bands 90+ excellent · 75+ good · 55+ mixed · 35+ weak · below that, the spec alone is not enough to integrate reliably.

Agent-Ready 87this badge, in your README

07Deliverables

One import. Everything an agent needs.

Paste a spec once. DocentAPI fans it out into 6 surfaces — generated together, verified together, and kept in sync with every change you ship.

Integration page

A public, shareable page for your API — docs, examples, and a try-it playground. Every page is a landing page for your API, findable and linkable.

Live playground

Visitors test real calls with their own key — used for that one request, never stored, never logged. No signup, no sandbox to provision.

Hosted MCP server

www.docentapi.xyz/mcp/you — a drop-in endpoint Claude, Cursor, and Copilot call directly. Typed tools, auth handled, zero infrastructure on your side.

Agent-Ready Score

A 0–100 grade of how well agents can drive your API — measured by executing the tools, not reading the spec. Your number to beat.

Embeddable badge

“Agent-Ready 87” in your README and docs — proof your API works for agents, and a live link back to your page for everyone who sees it.

Claim & verify

Prove you own the domain — DNS, meta tag, or email — and the page is yours. Run read-safe probes and the score turns from preview to verified.

Built to spread.

Every public page, badge, and claim link is a door back to your API. Adoption compounds while you sleep.

Claimable public pages

Every public API gets a live page — even before its owner shows up. Found yours? Prove you own the domain and make it official.

www.docentapi.xyz/stripe · claim this page

The badge

Drop it in your README and docs. It renders your live score — and links every reader back to your integration page.

<img src="https://www.docentapi.xyz/badge/you" />

BYOK playground

Visitors try your API with their own key. It’s used for the one call and discarded — never stored, never logged, zero sales calls.

key used per call · never stored, never logged

Hosted MCP for agents

Your users paste one URL into Claude, Cursor, or Copilot and their agents are calling your API — metered, rate-limited, every tool annotated read or write.

www.docentapi.xyz/mcp/you · ready

Pricing

Free for public APIs. Forever.

Public pages are our distribution and your adoption. Plans cover private APIs, teams, and business-critical reliability.

See plans

Put your API in front of agents today.

The importer at the top is live — no signup, no credit card. Leave your email and we’ll send your claim link plus each verification feature as it ships.

Free for public APIs · anonymous workspaces expire in 24 hours unless claimed