# API changelog

What changed in our API since 15 Oct 2026, newest first: removed routes, retired products, changes and new routes. The OpenAPI's version now: 3.3.0 (https://agentdrives.com/openapi.json?via=md). As JSON: https://agentdrives.com/data/api-changelog.json?via=md. Page: https://agentdrives.com/data/api-changelog?via=md

## 24 Oct 2026 · 3.3.0

Added:

- category_median on GET /api/tools/{slug}.json: each part score's median in the product's category ({median, n} for holds_up and docs_match), only for a category with 5 or more driven products and a part 5 or more of them have; null otherwise.

## 24 Oct 2026 · 3.2.0

Added:

- rules_version and rules_url on every listing (GET /api/tools/{slug}.json, the directory's pages, GET /api/tools) and every move in GET /api/changes (MCP what_changed): the rules version the level was judged under, its entry on /method/changelog.

## 24 Oct 2026 · 3.1.0

Added:

- POST /api/tools/{slug}/reports (MCP report_attempt): an agent reports its own attempt on a product, by API key: the checkpoint it reached, the wall it met and the day. Kept apart from our drives; it never sets or changes a level.

## 24 Oct 2026 · 3.0.0

Changed:

- GET /api/tools.json is page 1 of 100 products, no longer every product: page, pages, per_page, total, next, prev and full say where the rest is.

Added:

- GET /api/tools/pages/{n}.json: the directory's pages after the first, 100 products each.
- GET /api/tools-{day}.json: every product in one file, the day in its name.

## 24 Oct 2026 · 2.3.0

Added:

- rank, rank_of, rank_change and rank_since on every product in /api/tools.json, /api/tools and /api/tools/{slug}.json: its place in its category among the products our agent got into on its own, from drive results only, and how it last moved.

## 24 Oct 2026 · 2.2.0

Added:

- GET /api/stats: how many products we drove, how many domains our newest survey looked at and how many products wait for a drive.

## 23 Oct 2026 · 2.1.0

Changed:

- GET /api/me/delete: kept and a refund's domain can be null, as the answers were; credit_cents and credit_line are described.
- POST /api/orders/{id}/payment's 402: order.url is null for a data plan, and order.name is described.
- POST /api/orders 201: payment.url is null when the order is paid over HTTP 402 only.

## 23 Oct 2026 · 2.0.0

Removed:

- POST /api/billing/cancel: the Monthly drive's cancel. It answers 404 not_found; nothing is left to cancel.

Changed:

- Every operation lists its error answers as application/problem+json, each with error and fix.
- API keys show their hourly limit (1,000 requests); a 429 waits only until the hour ends (Retry-After, resets_at).
- Directory search gives the true total of matches and pages past 100 with offset.
- info.version now moves with this changelog. 2.0.0 follows 1.4.0 (14 Oct): routes were removed since then.

Added:

- GET /api/orders/{id}: one order, as GET /api/orders lists it.

## 22 Oct 2026

Retired:

- The Stack check is now called the Tool comparison. Its product ids stay stack3 and stack.

Added:

- GET /api/a2a and POST /api/a2a: the A2A agent card and its JSON-RPC endpoint (search the directory, get a listing, ask for a free drive).
- POST /api/claims/{id}/directory: show your product as In Audit while its Audit runs, or keep it private until it is Audited.

## 21 Oct 2026

Removed:

- POST /api/paid/detail/{slug}: one product's attempt log, sold per call from 19 Oct. It answers 410 gone; the verified owner reads it at GET /api/detail/{slug}.

Retired:

- Keep it driven and Monitor: product watch and keep answer 400 product_retired, as the Monthly drive does.

Changed:

- GET /api/detail/{slug} answers only the product's verified owner; anyone else gets 403 owner_only with the public listing.
- A key over its hourly limit gets 429 rate_limited with Retry-After, no longer 401. An unknown or revoked key stays 401.

Added:

- GET /api/payments: each drive's result at the pay step, dated.
- GET /api/bot-checks: per product and vendor, whether a bot check stopped our agent.

## 20 Oct 2026

Removed:

- POST /api/billing/switch: the Monthly drive's switch between monthly and yearly (it answered 410). It answers 404 not_found.

Changed:

- GET /api/me has no monthly field, and a new order's 201 no monthly.starts.

Added:

- GET /api/keys: your API keys.
- The account's own routes: GET /api/auth/get-session, GET /api/auth/list-sessions, POST /api/auth/update-user, POST /api/auth/change-password, POST /api/auth/link-social, POST /api/auth/revoke-session, POST /api/auth/revoke-other-sessions, POST /api/me/password and GET /api/auth-config.
- PATCH /api/claims/{id}: link your product to its directory entry. DELETE /api/claims/{id}: remove a claim.

## 19 Oct 2026

Added:

- GET /api/tools: the directory, filtered, with the same filters as the MCP tool search_tools.
- GET /api/capabilities: what an agent can do, by domain, for find-tools.
- GET /api/categories.json: the areas and categories with stable ids.
- GET /api/changes: level moves between drives, with the cause.
- GET /api/export: every published listing in one file, on Team.
- GET /api/follows, POST /api/follows, DELETE /api/follows/{tool} and PUT /api/follows/webhook: hear when a product's level changes.
- GET /api/orders/{id}/report: an order's report as Markdown.
- GET /api/detail/{slug}: your own product's newest drive in full.
- POST /api/claims/{id}/reply: reply to your product's drive as its owner.
- GET /api/billing/receipt/{id}: a payment's receipt.
- GET /api/subscribe/confirm, POST /api/subscribe/confirm and POST /api/unsubscribe: the monthly report by email.

## 18 Oct 2026

Retired:

- The Monthly drive: product monthly and yearly answer 400 product_retired, and none runs.
- Findings and the Full report: product drive, findings, quick and report, and any upgrade_from, answer 400 product_retired. Order product audit, the Audit Drive.

Added:

- GET /api/orders/{id}/fixes and POST /api/orders/{id}/fixes/{n}: an Audit's fix list.
- POST /api/orders/{id}/finish: end an Audit Drive early once a drive found L5.
- GET /api/billing/renewals, POST /api/billing/renewals/{id}/cancel and POST /api/billing/renewals/{id}/resume: an Audit's renewal.
- GET /api/explore and GET /api/explore/options: filter the whole record.
- GET /api/id/{id}: a company, product or surface by its stable id.

## 17 Oct 2026

Added:

- POST /api/auth/email-otp/verify-email: verify the account's address with the emailed code.

## 16 Oct 2026

Added:

- GET /api/claims/{id}/fixed and POST /api/claims/{id}/fixed: a verified owner's free drive after a fix.
- GET /api/me/reports/{slug}: what our agent found in your product's latest drive, counted.

## 15 Oct 2026

Added:

- POST /api/orders/{id}/checkout: reopen an unpaid order's card checkout.
- GET /api/credits, POST /api/credits/topup, POST /api/credits/rotate and GET /api/credits/{id}/receipt: prepaid credit for paid calls, and a new key for the same credit.
