{
  "fixes": {
    "slug": "monid",
    "name": "Monid",
    "listing": "https://www.anchorterminal.com/tools/monid",
    "markdown": "# Fix list: Monid\n\nFrom Anchor Terminal's listing at https://www.anchorterminal.com/tools/monid, the October 2026 research run, assessed 23 October 2026. Grade B, 63.3 out of 100.\n\nThis is everything the published grade says the listing lacks, the biggest possible gain to the total first. It comes from the reason given for each score, the checklist each category was scored against (https://www.anchorterminal.com/benchmark/#checklist), the provenance checks, the deductions, what we couldn't check and what the review panel asked for. A fix counts at the next check, once it's public.\n\nFor a coding agent working on Monid: work through the items below in the product, its docs and its public pages. Each category gives the reason for its score, with the points each checklist item earned, and the checklist itself, so the gap is the items that earned less than their points. Change the product, not the wording, and keep a note of what you changed and where it's published.\n\n## 1. Reliability, 53 out of 100, up to 9.4 more on the total\n\nWhy it scored 53: Hosted lines, graded on the REST API and the remote MCP server it fronts, the surfaces an agent calls. status.monid.ai is a live Better Stack page, created 15 June 2026, with 90 days of daily history for the API (api.monid.ai), the dashboard and the landing page. It doesn't monitor mcp.monid.ai or x402.monid.ai. Snipcart earned 15 for a live page checking root URLs and Nevermined 10 for one that had stopped recording (15 of 20). From 26 July to 23 October 2026 (read at 12:15 UTC) the API was down 6,135 seconds, 1 hour 42 minutes, on 17 August, with no incident post, and the dashboard and site were clean. An hour or more of the core API down is one major outage (10). The OpenAPI file at monid.ai/openapi.json says limits apply per API key, user or workspace on every authenticated route and per provider and endpoint on runs, with numbers only in response headers. Paid earned 7 for limits described without numbers (7 of 15). 429s carry `Retry-After` in whole seconds and `RateLimit-Limit`, `-Remaining` and `-Reset` headers, and `BLOCKED` runs are documented as terminal. `POST /v1/run` spends money and takes no idempotency key, and nothing covers resending after a lost response. Paid earned 13 with an idempotency key on part of its writes and Nevermined 15 with one on payments (11 of 15). No SLA, and the terms promise no availability (0). No beta or preview label on the API or the MCP server (10).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-reliability):\n\nHosted APIs, MCP servers, models and platforms.\n\n- 20, a public status page with component history (Statuspage, Instatus, BetterStack or the vendor's own).\n- 0 to 30, the incident record for the last 90 days on that page. 30 for a clean record or trivial incidents only, 20 for minor incidents only, 10 for one major outage (an hour or more of a core API down, or errors across the board), 0 for several. 5 when there's no history we could read, and the note says so.\n- 15, rate limits documented with numbers.\n- 15, documented 429 or overload handling (Retry-After, backoff guidance), and idempotency keys or safe-retry guidance where writes are involved.\n- 10, an SLA published for any paid tier.\n- 10, the surface agents use is generally available, not beta or preview.\n\nLocal packages, SDKs, frameworks and stdio MCP servers.\n\n- 20, installs from an official package with supported runtimes stated.\n- 25, a public CI and test suite, passing on the default branch.\n- 0 to 25, open crash or regression issues relative to activity (25 for few and handled, 0 for many, old and unanswered).\n- 15, semver discipline and breaking changes called out in a changelog.\n- 15, version 1.0 or later, or declared stable.\n\nProtocols are read from their reference implementations, the public facilitators or servers, spec stability and test vectors.\n\n## 2. Security \u0026 auth, 62 out of 100, up to 6.7 more on the total\n\nWhy it scored 62: API keys carry `{resource}:{action}` scopes over runs, resources, wallet, top-ups, controls and API keys, fixed at creation, from a published catalogue (`GET /v1/api-keys/scopes`). They can carry an expiry, are revoked in the dashboard or with `POST /v1/api-keys/{label}/revoke`, and a key can mint only keys within its own grants. Bearer header only, with no query-string option documented. OAuth 2.0 and OpenID Connect serve third-party apps and the MCP sign-in. That meets the line's scoped, revocable keys with rotation (30). Read-only keys are possible (`runs:read`, `wallet:read`), a person sets budgets per hour, day, week or month and a per-run cap, and keys minted from a dashboard session get no controls scope by default, so an agent holding one can't lift its own budget. There's no allowlist of providers or endpoints (the docs send builders to run their own proxy for that) and no approval step before paid runs or real-world actions such as calls and SMS. Nevermined and Composio each earned 16 (16 of 20). Runs return scraped pages, social posts and reviews from third parties, with no guidance on treating them as untrusted, and the skill tells agents to replace it from monid.ai on every update. Composio took 3 with none (3 of 15). Runs are kept with their caller, input, output, provider status, price and cost, readable through `GET /v1/runs` and per control, keys record who created and revoked them and when they were last used, resources have event histories, and every response carries an `x-request-id`. No retention period is stated (13 of 15). security.txt answers 404 on monid.ai, neither repository has a SECURITY.md, and no disclosure policy, bug bounty or certification was found. GitHub advisories couldn't be read, because GitHub's web pages and API refused our reader (0 of 20).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-security):\n\n- 0 to 30, the credential model. 30 for OAuth 2.1 with scopes, or scoped and revocable keys with rotation. 20 for plain revocable API keys. 10 for one all-powerful key. 10 off when a secret can travel in a URL query string as a documented option.\n- 0 to 20, read-only or least-privilege modes, and confirmation or approval for destructive actions.\n- 0 to 15, prompt-injection posture where the tool returns untrusted content (documented mitigations or guidance). A tool that returns no untrusted content gets 10.\n- 0 to 15, audit logs or per-call visibility for the operator.\n- 0 to 20, a security programme. security.txt or a disclosure policy, a bug bounty, SOC 2 or ISO 27001, advisories handled in public.\n\nModels are read for retention, whether API data trains models (and whether that's off by default), zero-retention options and certifications. Frameworks for telemetry defaults, approval hooks, guardrails and sandboxing.\n\n## 3. Agent ergonomics, 71 out of 100, up to 4.7 more on the total\n\nWhy it scored 71: Read on the REST API, since the MCP tool list is unread. Discover returns 5 results by default, up to 200, above a score floor and narrows by category, so the catalogue stays out of context. Run outputs come back whole, sized only through each provider's own parameters, so 5 off (20 of 25). List routes page by cursor and filter by status, category, provider, x402 eligibility and resource effects, while run output size depends on each provider's limits, which the skill warns often apply per query rather than per call (18 of 20). Errors carry `code`, `message` and an optional `errorCode`. A 402 from Monid is always the caller's wallet, with a provider's own 402 shown as 502, run statuses separate Monid failures, control blocks and provider statuses, and responses carry `hints` naming the next command. No retryable flag, which Nevermined's 20 rested on (17 of 20). No idempotency key on runs, and the MCP annotations are unread. Endpoints carry `readonly` and `effects` metadata on resource changes, and resource release is documented as idempotent. Smithery earned 10 with idempotent upserts and safe client retries, and Monid's endpoint metadata covers less than annotations (8 of 20). A run needs only provider, endpoint and input, with sensible defaults, but there's no official SDK in any language, only the CLI and raw HTTP examples (8 of 15).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-ergonomics):\n\n- 0 to 25, context cost. For MCP, the number and size of the tool definitions (25 for ten or fewer compact tools, 15 for 11 to 30, 5 for more than 30, plus up to 10 back for toolsets, dynamic loading or read-only subsets). For APIs, whether responses can be sized (field selection, limits, summaries).\n- 20, pagination, filtering and output-size controls.\n- 20, actionable, documented error responses, codes and messages an agent can recover from.\n- 20, idempotency or safe retries, and for MCP the `readOnlyHint` and `destructiveHint` annotations.\n- 15, sensible defaults, few required parameters, and official SDKs in at least two languages.\n\nModels are read for tool use, structured output, prompt caching, context length, batch and SDKs. Frameworks for how much code and how many defaults a tool-calling agent with MCP needs.\n\n## 4. Transparency \u0026 trust, 49 out of 100, up to 4.5 more on the total\n\nMade of editorial 33, provenance 65.\n\nWhy it scored 49: The editorial half. The hosted platform, ranking, billing, API and MCP server are closed. The connector framework (definitions, compiler, engine and tests) is MIT on GitHub, and the CLI is MIT per its package.json and npm, with no LICENSE file in its repository. The home page's 'Monid is open source' sits under an invitation to contribute connectors, which the open repository bears out. The terms, last updated 16 October 2026, name Monid, Inc. but are a general template that forbids access 'through automated or non-human means' and purchases by 'a buying agent or purchasing agent', which the product is built for, and point to a Return Policy that wasn't found. Nevermined and Paid earned 17 for closed platforms with open SDKs under terms that didn't fit the product (17 of 30). The privacy policy, last updated 23 April 2026, covers monid.ai and app.monid.ai and says nothing about run inputs and outputs, their retention, the providers that receive them or training. It keeps data 'as long as necessary' or while an account exists, leaves its Cookie Notice link blank in three places, says no information comes from third parties while describing social sign-in, and permits third-party advertising trackers. The site loads Google Analytics, PostHog and an X pixel (5 of 30). The OpenAPI file marks `POST /v1/discover` deprecated in favour of `/v1/discover/endpoints` and `resultCount` as a deprecated alias, with no dates or policy, and the terms reserve the right to change the Services without notice. Paid earned 6 for six deprecated operations with named replacements and no dates (5 of 20). Stripe and Coinbase are named for payment data and the terms say the Services are hosted in the United States, but the analytics vendors aren't named, and the providers that receive each run's input are shown per endpoint in the catalogue, not as recipients in the policy (6 of 20). The provenance half is computed from the provenance block.\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-transparency):\n\n- 0 to 30, source availability and licence clarity. 30 for open source under an OSI licence, 15 for closed with clear terms, 0 for unclear terms.\n- 0 to 30, data handling and retention statements that agree with each other (privacy policy, DPA, retention periods, subprocessors).\n- 0 to 20, a deprecation policy or notices with dates.\n- 0 to 20, telemetry disclosed with an opt-out (local software), or subprocessors and data locations disclosed (hosted).\n\nThe other half of Transparency and trust is the provenance score, computed from checked facts (below). The category score is the mean of the two.\n\nProvenance checks not met in full (half of this category, computed from checked facts):\n\n- Domain age: monid.ai, registered 2026-03-13 (under a year) (0 of 15)\n- Changelog: not found (0 of 10)\n- security.txt: not found (0 of 10)\n\n## 5. Schema \u0026 documentation, 79 out of 100, up to 3.4 more on the total\n\nWhy it scored 79: A public OpenAPI 3.1 file at monid.ai/openapi.json (version 0.1.0, 49 operations, last modified 07:21 UTC and read at 12:15 UTC on 23 October 2026) covers auth, discover, inspect, runs, resources, wallet, controls and API keys, with 429 on every operation. The docs don't link it, and it leaves out the x402 routes, `POST /v1/api-keys` and the wallet activities route the docs describe. The MCP tool definitions weren't read, since robots.txt on mcp.monid.ai disallows every path. Missing routes took 22 for Nevermined, Presidio and ComplyCube (22 of 25). llms.txt at monid.ai and /docs, llms-full.txt and Markdown copies of the docs pages (10). Operation descriptions state purpose and edge cases, such as `readonly` covering resource effects only and the run status mirroring the provider's, and llms.txt says when to call a single provider or Composio and Zapier instead. The docs still teach the deprecated `POST /v1/discover` with `query`, where the OpenAPI file points to `/v1/discover/endpoints` with `q`, and the MCP tool text is unread (15 of 20). Enums on statuses, scopes, periods and `errorCode`, bounds on `q`, `limit` and `minScore`, and `additionalProperties: false` on the run request, but the run's `body`, `queryParams` and `pathParams` are free objects, typed per endpoint only through inspect's JSON Schema. Nevermined's untyped body took 11 (11 of 15). curl, TypeScript and Python examples on every route, an error-code table, a run-status table and an optional `errorCode` field with 19 values that legacy errors leave out. Nevermined earned 15 with a full code list (14 of 15). Path versioning under /v1 with deprecations flagged in the OpenAPI file, and no changelog for the API, MCP server or CLI. Paid earned 7 for versioning with no API changelog (7 of 15).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-schema):\n\nAPIs and MCP servers.\n\n- 25, a machine-readable contract (a public OpenAPI file or similar; for MCP, typed JSON Schema inputs on every tool).\n- 10, llms.txt or Markdown docs served for agents.\n- 0 to 20, descriptions that say what a tool is for, when to use it and when not to, read from the tool definitions in the source or the API reference.\n- 0 to 15, typed inputs with enums, constraints and required fields, and no free-form JSON blobs.\n- 0 to 15, examples and documented error responses.\n- 15, versioning and a public changelog.\n\nModels are read from the API reference, the OpenAPI file, llms.txt, the structured-output and tool-use docs and the model cards. Frameworks from docs a model can follow, typed interfaces, examples and the API reference.\n\n## 6. Maintenance \u0026 community, 64 out of 100, up to 3.2 more on the total\n\nWhy it scored 64: Read for a hosted service with an open CLI and connector framework. `@monid-ai/cli` 0.1.8 reached npm on 21 October 2026, and the connector repository merged six OpenAI image endpoints the same day (30). CLI 0.1.6 on 27 July, 0.1.7 on 30 August and 0.1.8, and catalogue tags `catalog-v0.0.1`, `catalog-v0.0.2` and `catalog-v0.0.4` on 14, 17 and 26 September 2026 (20). The platform is closed and GitHub's web pages and API refused our reader, so issue queues and reply times are unread and the 0 to 15 scale for closed services applies, as in the Paid and Nevermined dossiers. No public changelog for the API, MCP server or CLI, support by Discord and email (not tested), and connector pull requests from outside authors merged, such as #27, #40, #50 and #64. Paid earned 5 with a support channel and no changelog, and Nevermined 8 with dated SDK changelogs, which Monid lacks (6 of 15). Not in the official MCP registry (a search for monid returned none) and no official SDK beyond the CLI (0). The connector repository runs typecheck and replay tests on pull requests and on main, keeps a lockfile and runs a weekly drift check against Apify's prices and schemas, and the CLI runs its tests before each npm publish. CI results weren't read (8 of 10).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-maintenance):\n\n- 0 to 30, time since the last release, or the last published model or API change for a closed service. 30 within 30 days, 20 within 90, 10 within 180, 0 older.\n- 20, at least three releases or dated changelog entries in the last 90 days.\n- 0 to 25, responsiveness. Issues and pull requests answered on GitHub (the open issues and how recent the replies are). For closed services, a public changelog and a support or community channel that answers, 0 to 15.\n- 15, presence in the official MCP registry under a verified namespace (MCP servers), or current official SDKs (APIs and models).\n- 10, package health, current dependencies and CI.\n\nModels are read for deprecation notice periods and model churn rather than release counts.\n\n## 7. Payments \u0026 pricing, 85 out of 100, up to 1.9 more on the total\n\nWhy it scored 85: x402 on Monid's own run route, `POST https://x402.monid.ai/v1/run`, in USDC on Base or Monad through a facilitator with no account, and run retrieval by a Sign-In-With-X signature from the paying wallet, per the 'Pay with x402' guide and the OpenAPI file's error codes. Metered endpoints and those tied to workspace resources or with an unbounded price are excluded, the floor is $0.01, and discovery and inspection need a key. Exa took 30 for x402 on its main paid routes with its other products excluded, the reading taken here (30 of 40). Not probed, because robots.txt on x402.monid.ai disallows every path. Per-call and per-result prices on public pages without a login, such as $0.00015 a call for Litescrape's Google Maps search, and discover and inspect return each price before a run (20). New accounts start with $1 of free credit and no card, per Monid (20). An agent with a funded wallet can run and fetch over x402 with no account, but the documented loop needs an API key, which a person creates in the dashboard, for discovery and input schemas, and topping up a balance needs a person to pay a Stripe checkout. Firecrawl took 15 when part of its surface needed a key a person creates (15 of 20).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-payments):\n\nThe published rubric, also on the [x402 page](https://www.anchorterminal.com/x402/).\n\n- 40, a machine payment protocol (x402, MPP or L402) on the tool's own endpoints. 10 to 30 when it covers only some endpoints or only goes through a third party, and the note says which.\n- 20, per-call or per-unit pricing published without a login. 10 for public plan-only pricing, 0 for \"contact sales\" or prices behind a login.\n- 20, a free tier or trial that doesn't need a card.\n- 20, autonomous onboarding, meaning an agent can get access without a person signing up in a browser (keyless use, x402, a programmatic key API).\n\nPayment platforms and agent wallets rarely charge for their own API over a machine protocol, so the first line has steps for them, and the highest one that applies counts. 40 when x402, MPP or L402 runs on all their own endpoints, 30 when it runs on part of their own API, 25 when their merchants can accept one, 20 for running a facilitator, 15 for paying as a buyer, and 0 when the only protocol is their own. Merchant acceptance sits above a facilitator because the platform's own customers can charge agents through it, while a facilitator settles for sellers who wire up the protocol themselves. The counter-argument (a facilitator does more for the protocol as a whole) has a point. Each note says which step applied.\n\nOpen-source software you run yourself is scored on its hosted or paid option if it has one. A free, self-hosted package with nothing to buy gets 20, 20 and 20 for the last three lines, and 0 to 40 for the first only if it ships a payment protocol.\n\n## Deductions\n\nEach comes off the total. A fixed and documented problem counts for less at the next check.\n\n- Undisclosed telemetry, since the setup command was added on 6 July 2026 and current in CLI 0.1.8 and SKILL.md 0.1.8 on 23 October 2026. SKILL.md tells an agent to run `monid setup --client \u003cagent-name\u003e --email \u003cemail\u003e` after every install or update, passing the user's email when it's already in context or memory and never asking for it, and says the command 'completes CLI setup'. In the CLI source the command does nothing but post source, client name and email to `/public/v1/telemetry/skill-setup`, and its help text calls it 'a best-effort setup signal'. The privacy policy (23 April 2026) covers the two websites and doesn't mention it. An email identifies a person, more than Kilo Code's client ID or Marmot's counts (-2 each), and the skill presents the send as setup, so -3, as for OpenHands' undisclosed install event, though nothing is sent without the flags (https://monid.ai/SKILL.md, https://github.com/monid-ai/cli/blob/main/src/commands/setup.ts, https://monid.ai/legal/privacy)\n\n## What we couldn't check\n\nWhat we couldn't read counted as absent. Publishing it on a page a plain HTTP fetch can read (not only in a browser) lets the next check count it.\n\n- unchecked: the live MCP tool list, its schemas and annotations, and the OAuth discovery document. robots.txt on mcp.monid.ai and api.monid.ai disallows every path, so the MCP server is graded from its quickstart and the REST API it fronts. Grader G sent one unauthenticated MCP `initialize` to https://mcp.monid.ai/v1 before reading that robots.txt; nothing from the response is used here\n- unchecked: the x402 route answering 402. robots.txt on x402.monid.ai disallows every path, so it's graded from the guide and the OpenAPI file, and the share of endpoints eligible for x402 is unknown\n- Which catalogue size is current. Monid's pages say 1,000+ (llms.txt), 1,700+ across 55+ providers (home page), 1,800+ (home page meta) and 2,000+ across 72+ providers (README), and the docs say hundreds. The open connector repository has 725 endpoints in 33 provider folders. The OpenAPI file names monid.ai as a public alias for the registry routes, which answered 404 on 23 October 2026\n- Whether the failover the home page FAQ and llms.txt describe happens on Monid's side. The API runs the provider and endpoint named in the request and mirrors that provider's 429. Recorded as Monid's claim\n- unchecked: GitHub stars, open issues, pull-request reply times, CI results and security advisories for monid-ai/monid and monid-ai/cli, since GitHub's web pages and API refused our reader on 23 October 2026; the repositories were read by cloning\n- What the 'AEP' grant and enrolled-agent key origin named in the OpenAPI ApiKey schema are. No documentation was found, so it earned nothing on onboarding\n- How long run inputs and outputs are kept, and whether they're used for anything beyond the run. Neither the privacy policy nor the docs say\n\n## Weaknesses\n\n- No numbers for rate limits, no SLA and no idempotency key on paid runs\n- No security.txt, disclosure policy, bug bounty or certification found\n- The privacy policy of 23 April 2026 covers only the websites, says nothing about run data and has blank cookie-notice placeholders\n- SKILL.md has agents send a known email to a setup telemetry endpoint the privacy policy doesn't mention\n- The terms forbid automated access and buying agents, which is how the service is meant to be used\n\n## What costs an agent a turn today\n\nThe notes we give agents before they call it. Each one is a workaround an agent shouldn't need.\n\n- Call inspect before every run and pass body, queryParams and pathParams in the shape it returns; run inputs aren't typed at the API level.\n- Treat a `COMPLETED` run as success only when `providerResponse.httpStatus` is 2xx; provider errors complete with a non-2xx status and aren't charged.\n- Don't resend a paid run after a timeout without checking `GET /v1/runs`; there's no idempotency key and a repeat bills again.\n- Start with small `maxItems` on per-result endpoints; limits often apply per query, not per call.\n- Pass `--client` alone to `monid setup`, or skip it; the email flag only feeds Monid's setup telemetry.\n\n## What the review panel asked for\n\n- drop the email flag\n- a security contact\n- drop the email from the skill's setup step\n- an idempotency key on runs\n- a published platform fee\n- drop the setup email\n- keyless discover and inspect\n\n## When it's done\n\nSend what changed and where it's published as a dispute (https://www.anchorterminal.com/builders/#disputes, or `POST https://www.anchorterminal.com/api/v1/contact` with `\"kind\": \"dispute\"`). Disputes are answered in public, and the listing is checked again by the same checklist. Paying for an audit or a listing claim changes nothing here.\n",
    "grade": "B",
    "score": 63.3,
    "assessed": "2026-10-23",
    "run": "October 2026 research run",
    "categories": [
      {
        "key": "reliability",
        "name": "Reliability",
        "score": 53,
        "maxGain": 9.4,
        "reason": "Hosted lines, graded on the REST API and the remote MCP server it fronts, the surfaces an agent calls. status.monid.ai is a live Better Stack page, created 15 June 2026, with 90 days of daily history for the API (api.monid.ai), the dashboard and the landing page. It doesn't monitor mcp.monid.ai or x402.monid.ai. Snipcart earned 15 for a live page checking root URLs and Nevermined 10 for one that had stopped recording (15 of 20). From 26 July to 23 October 2026 (read at 12:15 UTC) the API was down 6,135 seconds, 1 hour 42 minutes, on 17 August, with no incident post, and the dashboard and site were clean. An hour or more of the core API down is one major outage (10). The OpenAPI file at monid.ai/openapi.json says limits apply per API key, user or workspace on every authenticated route and per provider and endpoint on runs, with numbers only in response headers. Paid earned 7 for limits described without numbers (7 of 15). 429s carry `Retry-After` in whole seconds and `RateLimit-Limit`, `-Remaining` and `-Reset` headers, and `BLOCKED` runs are documented as terminal. `POST /v1/run` spends money and takes no idempotency key, and nothing covers resending after a lost response. Paid earned 13 with an idempotency key on part of its writes and Nevermined 15 with one on payments (11 of 15). No SLA, and the terms promise no availability (0). No beta or preview label on the API or the MCP server (10).",
        "checklist": [
          "Hosted APIs, MCP servers, models and platforms.",
          "- 20, a public status page with component history (Statuspage, Instatus, BetterStack or the vendor's own).\n- 0 to 30, the incident record for the last 90 days on that page. 30 for a clean record or trivial incidents only, 20 for minor incidents only, 10 for one major outage (an hour or more of a core API down, or errors across the board), 0 for several. 5 when there's no history we could read, and the note says so.\n- 15, rate limits documented with numbers.\n- 15, documented 429 or overload handling (Retry-After, backoff guidance), and idempotency keys or safe-retry guidance where writes are involved.\n- 10, an SLA published for any paid tier.\n- 10, the surface agents use is generally available, not beta or preview.",
          "Local packages, SDKs, frameworks and stdio MCP servers.",
          "- 20, installs from an official package with supported runtimes stated.\n- 25, a public CI and test suite, passing on the default branch.\n- 0 to 25, open crash or regression issues relative to activity (25 for few and handled, 0 for many, old and unanswered).\n- 15, semver discipline and breaking changes called out in a changelog.\n- 15, version 1.0 or later, or declared stable.",
          "Protocols are read from their reference implementations, the public facilitators or servers, spec stability and test vectors."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-reliability"
      },
      {
        "key": "security",
        "name": "Security \u0026 auth",
        "score": 62,
        "maxGain": 6.7,
        "reason": "API keys carry `{resource}:{action}` scopes over runs, resources, wallet, top-ups, controls and API keys, fixed at creation, from a published catalogue (`GET /v1/api-keys/scopes`). They can carry an expiry, are revoked in the dashboard or with `POST /v1/api-keys/{label}/revoke`, and a key can mint only keys within its own grants. Bearer header only, with no query-string option documented. OAuth 2.0 and OpenID Connect serve third-party apps and the MCP sign-in. That meets the line's scoped, revocable keys with rotation (30). Read-only keys are possible (`runs:read`, `wallet:read`), a person sets budgets per hour, day, week or month and a per-run cap, and keys minted from a dashboard session get no controls scope by default, so an agent holding one can't lift its own budget. There's no allowlist of providers or endpoints (the docs send builders to run their own proxy for that) and no approval step before paid runs or real-world actions such as calls and SMS. Nevermined and Composio each earned 16 (16 of 20). Runs return scraped pages, social posts and reviews from third parties, with no guidance on treating them as untrusted, and the skill tells agents to replace it from monid.ai on every update. Composio took 3 with none (3 of 15). Runs are kept with their caller, input, output, provider status, price and cost, readable through `GET /v1/runs` and per control, keys record who created and revoked them and when they were last used, resources have event histories, and every response carries an `x-request-id`. No retention period is stated (13 of 15). security.txt answers 404 on monid.ai, neither repository has a SECURITY.md, and no disclosure policy, bug bounty or certification was found. GitHub advisories couldn't be read, because GitHub's web pages and API refused our reader (0 of 20).",
        "checklist": [
          "- 0 to 30, the credential model. 30 for OAuth 2.1 with scopes, or scoped and revocable keys with rotation. 20 for plain revocable API keys. 10 for one all-powerful key. 10 off when a secret can travel in a URL query string as a documented option.\n- 0 to 20, read-only or least-privilege modes, and confirmation or approval for destructive actions.\n- 0 to 15, prompt-injection posture where the tool returns untrusted content (documented mitigations or guidance). A tool that returns no untrusted content gets 10.\n- 0 to 15, audit logs or per-call visibility for the operator.\n- 0 to 20, a security programme. security.txt or a disclosure policy, a bug bounty, SOC 2 or ISO 27001, advisories handled in public.",
          "Models are read for retention, whether API data trains models (and whether that's off by default), zero-retention options and certifications. Frameworks for telemetry defaults, approval hooks, guardrails and sandboxing."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-security"
      },
      {
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "score": 71,
        "maxGain": 4.7,
        "reason": "Read on the REST API, since the MCP tool list is unread. Discover returns 5 results by default, up to 200, above a score floor and narrows by category, so the catalogue stays out of context. Run outputs come back whole, sized only through each provider's own parameters, so 5 off (20 of 25). List routes page by cursor and filter by status, category, provider, x402 eligibility and resource effects, while run output size depends on each provider's limits, which the skill warns often apply per query rather than per call (18 of 20). Errors carry `code`, `message` and an optional `errorCode`. A 402 from Monid is always the caller's wallet, with a provider's own 402 shown as 502, run statuses separate Monid failures, control blocks and provider statuses, and responses carry `hints` naming the next command. No retryable flag, which Nevermined's 20 rested on (17 of 20). No idempotency key on runs, and the MCP annotations are unread. Endpoints carry `readonly` and `effects` metadata on resource changes, and resource release is documented as idempotent. Smithery earned 10 with idempotent upserts and safe client retries, and Monid's endpoint metadata covers less than annotations (8 of 20). A run needs only provider, endpoint and input, with sensible defaults, but there's no official SDK in any language, only the CLI and raw HTTP examples (8 of 15).",
        "checklist": [
          "- 0 to 25, context cost. For MCP, the number and size of the tool definitions (25 for ten or fewer compact tools, 15 for 11 to 30, 5 for more than 30, plus up to 10 back for toolsets, dynamic loading or read-only subsets). For APIs, whether responses can be sized (field selection, limits, summaries).\n- 20, pagination, filtering and output-size controls.\n- 20, actionable, documented error responses, codes and messages an agent can recover from.\n- 20, idempotency or safe retries, and for MCP the `readOnlyHint` and `destructiveHint` annotations.\n- 15, sensible defaults, few required parameters, and official SDKs in at least two languages.",
          "Models are read for tool use, structured output, prompt caching, context length, batch and SDKs. Frameworks for how much code and how many defaults a tool-calling agent with MCP needs."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-ergonomics"
      },
      {
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "score": 49,
        "maxGain": 4.5,
        "reason": "The editorial half. The hosted platform, ranking, billing, API and MCP server are closed. The connector framework (definitions, compiler, engine and tests) is MIT on GitHub, and the CLI is MIT per its package.json and npm, with no LICENSE file in its repository. The home page's 'Monid is open source' sits under an invitation to contribute connectors, which the open repository bears out. The terms, last updated 16 October 2026, name Monid, Inc. but are a general template that forbids access 'through automated or non-human means' and purchases by 'a buying agent or purchasing agent', which the product is built for, and point to a Return Policy that wasn't found. Nevermined and Paid earned 17 for closed platforms with open SDKs under terms that didn't fit the product (17 of 30). The privacy policy, last updated 23 April 2026, covers monid.ai and app.monid.ai and says nothing about run inputs and outputs, their retention, the providers that receive them or training. It keeps data 'as long as necessary' or while an account exists, leaves its Cookie Notice link blank in three places, says no information comes from third parties while describing social sign-in, and permits third-party advertising trackers. The site loads Google Analytics, PostHog and an X pixel (5 of 30). The OpenAPI file marks `POST /v1/discover` deprecated in favour of `/v1/discover/endpoints` and `resultCount` as a deprecated alias, with no dates or policy, and the terms reserve the right to change the Services without notice. Paid earned 6 for six deprecated operations with named replacements and no dates (5 of 20). Stripe and Coinbase are named for payment data and the terms say the Services are hosted in the United States, but the analytics vendors aren't named, and the providers that receive each run's input are shown per endpoint in the catalogue, not as recipients in the policy (6 of 20). The provenance half is computed from the provenance block.",
        "blend": "editorial 33, provenance 65",
        "checklist": [
          "- 0 to 30, source availability and licence clarity. 30 for open source under an OSI licence, 15 for closed with clear terms, 0 for unclear terms.\n- 0 to 30, data handling and retention statements that agree with each other (privacy policy, DPA, retention periods, subprocessors).\n- 0 to 20, a deprecation policy or notices with dates.\n- 0 to 20, telemetry disclosed with an opt-out (local software), or subprocessors and data locations disclosed (hosted).",
          "The other half of Transparency and trust is the provenance score, computed from checked facts (below). The category score is the mean of the two."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-transparency"
      },
      {
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "score": 79,
        "maxGain": 3.4,
        "reason": "A public OpenAPI 3.1 file at monid.ai/openapi.json (version 0.1.0, 49 operations, last modified 07:21 UTC and read at 12:15 UTC on 23 October 2026) covers auth, discover, inspect, runs, resources, wallet, controls and API keys, with 429 on every operation. The docs don't link it, and it leaves out the x402 routes, `POST /v1/api-keys` and the wallet activities route the docs describe. The MCP tool definitions weren't read, since robots.txt on mcp.monid.ai disallows every path. Missing routes took 22 for Nevermined, Presidio and ComplyCube (22 of 25). llms.txt at monid.ai and /docs, llms-full.txt and Markdown copies of the docs pages (10). Operation descriptions state purpose and edge cases, such as `readonly` covering resource effects only and the run status mirroring the provider's, and llms.txt says when to call a single provider or Composio and Zapier instead. The docs still teach the deprecated `POST /v1/discover` with `query`, where the OpenAPI file points to `/v1/discover/endpoints` with `q`, and the MCP tool text is unread (15 of 20). Enums on statuses, scopes, periods and `errorCode`, bounds on `q`, `limit` and `minScore`, and `additionalProperties: false` on the run request, but the run's `body`, `queryParams` and `pathParams` are free objects, typed per endpoint only through inspect's JSON Schema. Nevermined's untyped body took 11 (11 of 15). curl, TypeScript and Python examples on every route, an error-code table, a run-status table and an optional `errorCode` field with 19 values that legacy errors leave out. Nevermined earned 15 with a full code list (14 of 15). Path versioning under /v1 with deprecations flagged in the OpenAPI file, and no changelog for the API, MCP server or CLI. Paid earned 7 for versioning with no API changelog (7 of 15).",
        "checklist": [
          "APIs and MCP servers.",
          "- 25, a machine-readable contract (a public OpenAPI file or similar; for MCP, typed JSON Schema inputs on every tool).\n- 10, llms.txt or Markdown docs served for agents.\n- 0 to 20, descriptions that say what a tool is for, when to use it and when not to, read from the tool definitions in the source or the API reference.\n- 0 to 15, typed inputs with enums, constraints and required fields, and no free-form JSON blobs.\n- 0 to 15, examples and documented error responses.\n- 15, versioning and a public changelog.",
          "Models are read from the API reference, the OpenAPI file, llms.txt, the structured-output and tool-use docs and the model cards. Frameworks from docs a model can follow, typed interfaces, examples and the API reference."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-schema"
      },
      {
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "score": 64,
        "maxGain": 3.2,
        "reason": "Read for a hosted service with an open CLI and connector framework. `@monid-ai/cli` 0.1.8 reached npm on 21 October 2026, and the connector repository merged six OpenAI image endpoints the same day (30). CLI 0.1.6 on 27 July, 0.1.7 on 30 August and 0.1.8, and catalogue tags `catalog-v0.0.1`, `catalog-v0.0.2` and `catalog-v0.0.4` on 14, 17 and 26 September 2026 (20). The platform is closed and GitHub's web pages and API refused our reader, so issue queues and reply times are unread and the 0 to 15 scale for closed services applies, as in the Paid and Nevermined dossiers. No public changelog for the API, MCP server or CLI, support by Discord and email (not tested), and connector pull requests from outside authors merged, such as #27, #40, #50 and #64. Paid earned 5 with a support channel and no changelog, and Nevermined 8 with dated SDK changelogs, which Monid lacks (6 of 15). Not in the official MCP registry (a search for monid returned none) and no official SDK beyond the CLI (0). The connector repository runs typecheck and replay tests on pull requests and on main, keeps a lockfile and runs a weekly drift check against Apify's prices and schemas, and the CLI runs its tests before each npm publish. CI results weren't read (8 of 10).",
        "checklist": [
          "- 0 to 30, time since the last release, or the last published model or API change for a closed service. 30 within 30 days, 20 within 90, 10 within 180, 0 older.\n- 20, at least three releases or dated changelog entries in the last 90 days.\n- 0 to 25, responsiveness. Issues and pull requests answered on GitHub (the open issues and how recent the replies are). For closed services, a public changelog and a support or community channel that answers, 0 to 15.\n- 15, presence in the official MCP registry under a verified namespace (MCP servers), or current official SDKs (APIs and models).\n- 10, package health, current dependencies and CI.",
          "Models are read for deprecation notice periods and model churn rather than release counts."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-maintenance"
      },
      {
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "score": 85,
        "maxGain": 1.9,
        "reason": "x402 on Monid's own run route, `POST https://x402.monid.ai/v1/run`, in USDC on Base or Monad through a facilitator with no account, and run retrieval by a Sign-In-With-X signature from the paying wallet, per the 'Pay with x402' guide and the OpenAPI file's error codes. Metered endpoints and those tied to workspace resources or with an unbounded price are excluded, the floor is $0.01, and discovery and inspection need a key. Exa took 30 for x402 on its main paid routes with its other products excluded, the reading taken here (30 of 40). Not probed, because robots.txt on x402.monid.ai disallows every path. Per-call and per-result prices on public pages without a login, such as $0.00015 a call for Litescrape's Google Maps search, and discover and inspect return each price before a run (20). New accounts start with $1 of free credit and no card, per Monid (20). An agent with a funded wallet can run and fetch over x402 with no account, but the documented loop needs an API key, which a person creates in the dashboard, for discovery and input schemas, and topping up a balance needs a person to pay a Stripe checkout. Firecrawl took 15 when part of its surface needed a key a person creates (15 of 20).",
        "checklist": [
          "The published rubric, also on the [x402 page](https://www.anchorterminal.com/x402/).",
          "- 40, a machine payment protocol (x402, MPP or L402) on the tool's own endpoints. 10 to 30 when it covers only some endpoints or only goes through a third party, and the note says which.\n- 20, per-call or per-unit pricing published without a login. 10 for public plan-only pricing, 0 for \"contact sales\" or prices behind a login.\n- 20, a free tier or trial that doesn't need a card.\n- 20, autonomous onboarding, meaning an agent can get access without a person signing up in a browser (keyless use, x402, a programmatic key API).",
          "Payment platforms and agent wallets rarely charge for their own API over a machine protocol, so the first line has steps for them, and the highest one that applies counts. 40 when x402, MPP or L402 runs on all their own endpoints, 30 when it runs on part of their own API, 25 when their merchants can accept one, 20 for running a facilitator, 15 for paying as a buyer, and 0 when the only protocol is their own. Merchant acceptance sits above a facilitator because the platform's own customers can charge agents through it, while a facilitator settles for sellers who wire up the protocol themselves. The counter-argument (a facilitator does more for the protocol as a whole) has a point. Each note says which step applied.",
          "Open-source software you run yourself is scored on its hosted or paid option if it has one. A free, self-hosted package with nothing to buy gets 20, 20 and 20 for the last three lines, and 0 to 40 for the first only if it ships a payment protocol."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-payments"
      }
    ],
    "provenance": [
      {
        "label": "Domain age",
        "value": "monid.ai, registered 2026-03-13 (under a year)",
        "points": 0,
        "max": 15
      },
      {
        "label": "Changelog",
        "value": "not found",
        "points": 0,
        "max": 10
      },
      {
        "label": "security.txt",
        "value": "not found",
        "points": 0,
        "max": 10
      }
    ],
    "deductions": [
      "Undisclosed telemetry, since the setup command was added on 6 July 2026 and current in CLI 0.1.8 and SKILL.md 0.1.8 on 23 October 2026. SKILL.md tells an agent to run `monid setup --client \u003cagent-name\u003e --email \u003cemail\u003e` after every install or update, passing the user's email when it's already in context or memory and never asking for it, and says the command 'completes CLI setup'. In the CLI source the command does nothing but post source, client name and email to `/public/v1/telemetry/skill-setup`, and its help text calls it 'a best-effort setup signal'. The privacy policy (23 April 2026) covers the two websites and doesn't mention it. An email identifies a person, more than Kilo Code's client ID or Marmot's counts (-2 each), and the skill presents the send as setup, so -3, as for OpenHands' undisclosed install event, though nothing is sent without the flags (https://monid.ai/SKILL.md, https://github.com/monid-ai/cli/blob/main/src/commands/setup.ts, https://monid.ai/legal/privacy)"
    ],
    "unchecked": [
      "unchecked: the live MCP tool list, its schemas and annotations, and the OAuth discovery document. robots.txt on mcp.monid.ai and api.monid.ai disallows every path, so the MCP server is graded from its quickstart and the REST API it fronts. Grader G sent one unauthenticated MCP `initialize` to https://mcp.monid.ai/v1 before reading that robots.txt; nothing from the response is used here",
      "unchecked: the x402 route answering 402. robots.txt on x402.monid.ai disallows every path, so it's graded from the guide and the OpenAPI file, and the share of endpoints eligible for x402 is unknown",
      "Which catalogue size is current. Monid's pages say 1,000+ (llms.txt), 1,700+ across 55+ providers (home page), 1,800+ (home page meta) and 2,000+ across 72+ providers (README), and the docs say hundreds. The open connector repository has 725 endpoints in 33 provider folders. The OpenAPI file names monid.ai as a public alias for the registry routes, which answered 404 on 23 October 2026",
      "Whether the failover the home page FAQ and llms.txt describe happens on Monid's side. The API runs the provider and endpoint named in the request and mirrors that provider's 429. Recorded as Monid's claim",
      "unchecked: GitHub stars, open issues, pull-request reply times, CI results and security advisories for monid-ai/monid and monid-ai/cli, since GitHub's web pages and API refused our reader on 23 October 2026; the repositories were read by cloning",
      "What the 'AEP' grant and enrolled-agent key origin named in the OpenAPI ApiKey schema are. No documentation was found, so it earned nothing on onboarding",
      "How long run inputs and outputs are kept, and whether they're used for anything beyond the run. Neither the privacy policy nor the docs say"
    ],
    "weaknesses": [
      "No numbers for rate limits, no SLA and no idempotency key on paid runs",
      "No security.txt, disclosure policy, bug bounty or certification found",
      "The privacy policy of 23 April 2026 covers only the websites, says nothing about run data and has blank cookie-notice placeholders",
      "SKILL.md has agents send a known email to a setup telemetry endpoint the privacy policy doesn't mention",
      "The terms forbid automated access and buying agents, which is how the service is meant to be used"
    ],
    "agentNotes": [
      "Call inspect before every run and pass body, queryParams and pathParams in the shape it returns; run inputs aren't typed at the API level.",
      "Treat a `COMPLETED` run as success only when `providerResponse.httpStatus` is 2xx; provider errors complete with a non-2xx status and aren't charged.",
      "Don't resend a paid run after a timeout without checking `GET /v1/runs`; there's no idempotency key and a repeat bills again.",
      "Start with small `maxItems` on per-result endpoints; limits often apply per query, not per call.",
      "Pass `--client` alone to `monid setup`, or skip it; the email flag only feeds Monid's setup telemetry."
    ],
    "requests": [
      {
        "text": "drop the email flag",
        "reviews": 1
      },
      {
        "text": "a security contact",
        "reviews": 1
      },
      {
        "text": "drop the email from the skill's setup step",
        "reviews": 1
      },
      {
        "text": "an idempotency key on runs",
        "reviews": 1
      },
      {
        "text": "a published platform fee",
        "reviews": 1
      },
      {
        "text": "drop the setup email",
        "reviews": 1
      },
      {
        "text": "keyless discover and inspect",
        "reviews": 1
      }
    ],
    "recheck": "https://www.anchorterminal.com/builders/#disputes"
  },
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-23",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.6",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  }
}
