Published 2026-09-22 · Tested 2026-09-22

Middesk

C-

Middesk received 6 PASS votes and passed 4 of five agent surface checks. The clearest finding came from the find the exact limits task.

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

Three AI models, GPT 5.6 Sol, Claude Opus 5, and DeepSeek v4 Flash, each read Middesk’s public documentation independently and attempted five first-hour developer jobs: verify the first business, find the exact limits, recover from a 429, verify a webhook, page through the business list.

No accounts, API calls, or code execution were used. Every verdict came from public pages and every published quotation passed a live verification check. Preflight substitutions: T5: List pagination replaces the SDK task because Middesk's documentation names no official client library for any language.

Freshness

How rechecks work
Category
Identity & auth
Tested
Quotes verified
Surface rechecked
Not yet rechecked
Middesk Fern · published
C-

71.2% · 57/80 · AI Agent Readiness Score · reading 30 pts · surface 50 pts

llms.txt PASS
llms-full.txt FAIL
markdown mirror PASS
MCP server PASS
docs AI PASS
Task GPT 5.6 SolOpus 5DeepSeek v4F Consensus
Verify the first business PASSPASSPASS PASS
Find the exact limits FAILPARTIALPARTIAL PARTIAL
Recover from a 429 PARTIALPARTIALFAIL PARTIAL
Verify a webhook PASSPASSPASS PASS
Page through the business list FAILPARTIALFAIL FAIL

docs platform: Fern (unscored) · verified 2026-09-22

What to fix first

These 4 fixes could add up to 23 points to the AI Agent Readiness Score. The list ranks each fix by the points it would add. How the ranking works

  1. 1
    +10 points llms-full.txt check failed

    Found: HTTP 301 redirect to llms.txt, so no separate full-text file is served.

    Fix: Publish llms-full.txt at the docs root with the full text of every docs page in one plain-text file.

    Evidence: docs.middesk.com/llms-full.txt (opens in a new tab)

  2. 2

    Found: The List businesses reference returns has_more and total_count but documents no query parameters, so no page shows how to request page two over REST.

    Fix: Document the page and per_page query parameters on the List businesses reference, as the List business batches endpoint already does, and name any filter parameters it accepts.

    Evidence: docs.middesk.com/api-reference/business-verification/businesses/list-businesses (opens in a new tab)

  3. 3
    +4 points Find the exact limits PARTIAL

    Found: The only rate limit, 20 requests per second, sits in one sentence on the status codes page, and no page gives plan quotas or the sandbox creation limit.

    Fix: Add a rate limits page that states the 20 per second limit, the sandbox business creation limit, and any plan quotas, and link it from the API reference.

    Evidence: docs.middesk.com/build/status-codes-errors (opens in a new tab)

  4. 4
    +4 points Recover from a 429 PARTIAL

    Found: Only a dated changelog entry names the Retry-After header; the status codes page lists 429 with no retry signal, response headers, or backoff guidance.

    Fix: Document the Retry-After header on the status codes page, with the 429 response body and a client backoff example, not only in the changelog.

    Evidence: docs.middesk.com/guides/get-started/changelog/2026/8/17 (opens in a new tab)

What the docs get right

  • Verify the first business: 3 PASS votes. The quickstart embeds complete sandbox POST and GET examples, although its linked create and retrieve reference routes both returned HTTP 404.
  • Verify a webhook: 3 PASS votes. The API reference creates the endpoint and secret, while linked guides document payload receipt and raw-body SHA-256 verification.
  • 4 of 5 agent surface checks. Present: llms.txt, markdown mirrors, an MCP server, docs AI. Missing: llms-full.txt.

Verify the first business

PASS

PASS consensus from 3 PASS.

The quickstart embeds complete sandbox POST and GET examples, although its linked create and retrieve reference routes both returned HTTP 404. The quickstart gives one continuous path, sandbox key location in the Dashboard, the api-sandbox base URL, a runnable POST /v1/businesses curl with named trigger values, the 201 caveat, and a GET retrieve call, though its two links to the Create a Business and Retrieve a Business reference pages both return HTTP 404 because the live slugs are create-business and get-business. Quickstart provides one clear path from get sandbox API key to create business to retrieve results, with curl examples and key-value trigger values for predictable sandbox outcomes.

Find the exact limits

PARTIAL

PARTIAL consensus from 2 PARTIAL, 1 FAIL.

The guide states 20 requests per second, but no fetched page gives plan quotas or the numeric sandbox per-minute creation limit. One exact global number is stated in a single sentence on a page titled for status codes, but no plan quotas, per-endpoint limits, or dedicated rate-limit page exist, and the OpenAPI spec and the API reference pages never mention the limit at all. The general rate limit (20 req/s) is stated once on the status codes page, but no plan-specific quotas are published anywhere. The OpenAPI spec additionally defines a separate sandbox business-creation rate limit (429 on POST /v1/businesses) with no documented numeric threshold in the guides, creating a drift between the guide and the API spec.

Recover from a 429

PARTIAL

PARTIAL consensus from 2 PARTIAL, 1 FAIL.

A dated changelog gives the Retry-After recovery step, while the error guide and endpoint reference omit it. The docs name the limit and the status code, but document no Retry-After header, no rate-limit response headers, no 429 error body shape, and no client backoff guidance, the only exponential-backoff text in the docs describes Middesk's own webhook delivery retries, which is the opposite direction. The 429 status code is listed with its meaning, but the docs give no Retry-After header name, no retry-interval guidance, no exponential-backoff strategy, and no sample 429 response body. An agent hitting a 429 has no documented signal to determine when to retry.

Verify a webhook

PASS

PASS consensus from 3 PASS.

The API reference creates the endpoint and secret, while linked guides document payload receipt and raw-body SHA-256 verification. The full chain is documented end to end: POST /v1/webhooks with url, enabled_events, and an optional secret; the event type list and payload envelope; then HMAC-SHA256 over the raw body with an explicit warning to verify before JSON parsing and to use constant-time comparison, with working Ruby and Python handlers. End-to-end documentation: register a webhook (Dashboard or API with optional secret), receive events with documented payload structure, verify HMAC-SHA-256 signature via X-Middesk-Signature-256 header, including the requirement to verify against the raw request body before parsing.

Page through the business list

FAIL

FAIL consensus from 1 PARTIAL, 2 FAIL.

The endpoint documents has_more and total_count in responses but no pagination or filter request parameters. The REST List businesses endpoint documents zero query parameters, its OpenAPI entry for GET /v1/businesses has an empty parameters array, while returning has_more in the body, so paging past page one over REST requires borrowing the page and per_page parameters documented only on the sibling List business batches endpoint; the only fully documented paging path for businesses is the separate GraphQL API. The List Businesses endpoint response includes has_more and total_count, suggesting cursor-based pagination exists, but no pagination or filter parameters (page, per_page, starting_after, ending_before, status, etc.) are documented. Other list endpoints like List Signals and List Orders do document page and per_page, making the omission for businesses noticeable.

The receipt

The Middesk API has rate limiting to ensure high performance across all customers. Requests per customer are limited to 20 requests per second.

One exact global number is stated in a single sentence on a page titled for status codes, but no plan quotas, per-endpoint limits, or dedicated rate-limit page exist, and the OpenAPI spec and the API reference pages never mention the limit at all.

Agent surface notes

Initialize returned JSON-RPC protocol 2025-06-18 with serverInfo name fern-docs-mcp-server.

The hydrated docs home exposes a Fern Ask AI button with id fern-ask-ai-button that controls an assistant panel.

Show the score

AI Agent Readiness Score 71.2%, grade C-

Paste this into a readme:

[![AI Agent Readiness Score 71.2%](https://docsforagents.com/badge/middesk.svg)](https://docsforagents.com/reports/middesk-docs-ai-agent-readiness/)

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 agent surface checks add 10 points each. The total is 80. Consensus chips show each row majority and do not affect scoring. The panel split on 3 of five tasks. Quotes shown here were re-fetched and confirmed verbatim on 2026-09-22.

Read the full methodology

Put another docs site through the battery.

Nominate a docs site