{
  "data": {
    "a": {
      "slug": "adam-cad",
      "name": "Adam",
      "vendor": "Adam AI Labs, Inc.",
      "vendorUrl": "https://adam.new",
      "kind": "mcp",
      "category": "cad",
      "summary": "Adam is Adam AI Labs' AI copilot for mechanical CAD. It creates and edits parts in Onshape, Fusion, SOLIDWORKS and other desktop CAD through a hosted agent that AI clients reach over a remote MCP server and a REST API.",
      "url": "https://www.anchorterminal.com/tools/adam-cad",
      "markdownUrl": "https://www.anchorterminal.com/tools/adam-cad.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/adam-cad.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/adam-cad.json",
      "dns": "adam-cad.grade.anchorterminal.com",
      "repo": "https://github.com/Adam-CAD/CADAM",
      "license": "Closed service under Adam's Terms of Service (Adam AI Labs, Inc., last updated 5 June 2026). The CADAM text-to-CAD web application is open source under GPL-3.0.",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://adam.new/mcp",
      "packages": [],
      "auth": "mixed",
      "authNotes": "OAuth 2.1 authorisation code with PKCE (S256) against https://api.adam.new/auth, with automatic client registration, a revocation endpoint and 11 scopes (projects, tasks, files and automations read or write, `tools:execute`, `billing:read`, `integrations:read`) chosen per area at approval. A personal API key (`adam_pk_...`, minted in team settings for one workspace with chosen scopes, shown once) works as a bearer token for clients without OAuth. Workspace admins can switch API and MCP access off or block single permissions, including full execution.",
      "pricing": "freemium",
      "pricingNotes": "Free, Pro, Max, Team Pro and Team Max (per seat) and Enterprise plans, with a daily usage pool on Free and monthly included usage on paid plans, plus prepaid add-on funds. The prices are drawn by script on adam.new/pricing and were not read; the Markdown version lists only the plan names. Engineering work through MCP or the API spends the workspace's usage. No per-call price is published.",
      "priceSummary": "Freemium",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the OpenAPI specs, the MCP manifest, llms.txt or the docs (checked 3 November 2026). A 402 answer means a plan or usage is needed, with no payment requirements.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 5382,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://docs.adam.new/mcp/overview",
      "llmsTxt": "https://adam.new/llms.txt",
      "openapi": "https://adam.new/openapi.json",
      "capabilities": [
        "cad.generate",
        "cad.edit",
        "cad.export",
        "cad.simulate"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "mcp",
        "remote-mcp",
        "oauth",
        "api-key",
        "openapi",
        "llms-txt",
        "freemium",
        "beta",
        "soc2",
        "bug-bounty",
        "idempotency",
        "status-page"
      ],
      "lastRelease": "2026-09-10",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59.4,
        "grade": "C",
        "agentReady": false,
        "rank": 630,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 1,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 82,
          "maintenance": 55,
          "payments": 15,
          "reliability": 35,
          "schema": 81,
          "security": 74,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "An agent reaches Adam's CAD tasks over OAuth 2.1 with per-area scopes, idempotency keys and a public OpenAPI spec, and can export STEP, STL, IGES and 3MF from Adam-stored models. The MCP server and API are beta, numeric rate limits and plan prices are not published, and native CAD edits need a connected desktop application.",
        "bestFor": "An agent that drives mechanical CAD work in Onshape, Fusion or SOLIDWORKS through a hosted engineering agent, or needs STEP and 3MF exports of Adam-stored models.",
        "strengths": [
          "OAuth 2.1 with PKCE, automatic client registration and 11 scopes approved per area, with `tools:execute` kept separate from read and write",
          "Idempotency-Key required on task creation, messages and tool calls, replayed for 24 hours, with documented handling of an unknown outcome",
          "Public OpenAPI 3.1 specs, llms.txt, Markdown for every page on request, a docs index and a starter skill for MCP clients",
          "SOC 2 Type I, a bug bounty with safe harbour, patch SLAs by severity and a subprocessor list with regions, all published",
          "Deprecation and Sunset headers with at least 90 days' notice before a removal"
        ],
        "weaknesses": [
          "The MCP server and REST API are labelled beta, with breaking changes allowed",
          "Rate limits are documented only as headers; no numeric quota is published",
          "Plan prices are drawn by script on the pricing page and were not readable; the Markdown version lists only plan names",
          "Native CAD work needs the vendor's application connected on a desktop, which MCP sign-in does not do",
          "Not published in the official MCP registry, and no official SDK"
        ],
        "agentNotes": [
          "Call adam_get_context first and check the scopes; client-driven tool calls need `tasks:read`, `tasks:write` and `tools:execute`, which an admin may have blocked",
          "Send a fresh UUID as Idempotency-Key on every task, message and tool call, reuse it on a retry, and on status unknown inspect the task before retrying with a new key",
          "Poll adam_get_tool_call for queued or running calls; creating an external task starts no inference, but executing tools spends the workspace's usage",
          "Treat 402 as a plan or usage limit for the person to resolve, and on 429 wait for Retry-After",
          "Expect only Adam-stored models to export without a desktop; ask the person to connect Onshape, Fusion or SOLIDWORKS before native edits"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59.4
          }
        ],
        "editorialScores": {
          "ergonomics": 82,
          "maintenance": 55,
          "payments": 15,
          "reliability": 35,
          "schema": 81,
          "security": 74,
          "transparency": 67
        },
        "provenanceScore": 76,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -H \"Authorization: Bearer $ADAM_API_KEY\" https://api.adam.new/v1/auth/context",
        "claudeCode": "claude mcp add --transport http --scope user adam https://adam.new/mcp",
        "config": {
          "mcpServers": {
            "adam": {
              "url": "https://adam.new/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/cad.generate",
        "tool": "https://letme.dev/adam-cad"
      },
      "area": "design-diagrams",
      "provenance": {
        "legalEntity": "Adam AI Labs, Inc.",
        "domain": "adam.new",
        "domainRegistered": "2025-07-13",
        "endpointOnVendorDomain": true,
        "terms": "https://adam.new/terms-of-service",
        "privacy": "https://adam.new/privacy-policy",
        "statusPage": "https://status.adam.new/",
        "changelog": "https://adam.new/changelog",
        "securityTxt": "none",
        "checked": "2026-11-03",
        "notes": [
          "The terms of service (last updated 5 June 2026) and privacy policy (last updated 24 October 2026) name Adam AI Labs, Inc. Neither contains a clause on automated access, and the terms state no governing law.",
          "adam.new/robots.txt allows all crawlers except /api/, /_serverFn/, /gerhard-richter/ and /devtools/. docs.adam.new and status.adam.new were read.",
          "status.adam.new is a page of the company's own that loads its components and history by script; nothing readable was served, so no incident history was read.",
          "/.well-known/security.txt returns 404. The security page points to a bug bounty with a report form and hello@adam.new.",
          "RDAP at the .new registry gives a registration date of 13 July 2025 for adam.new."
        ],
        "score": 76
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/adam-cad.json",
      "live": {
        "slug": "adam-cad",
        "probe": {
          "target": "https://adam.new/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-11-04T20:04:47.930359097Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 240,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 235,
          "p95ms24h": 434,
          "samples24h": 48,
          "samples30d": 48,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 48,
              "ok": 48
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.adam.new",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-04T15:31:19.488859227Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "Adam-CAD/CADAM",
            "version": "v0.3.0",
            "released": "2026-06-17",
            "seenAt": "2026-11-04T19:54:22.764379964Z"
          }
        ],
        "githubStars": 5386,
        "securityTxt": {
          "url": "https://adam.new/.well-known/security.txt",
          "state": "unknown",
          "checkedAt": "2026-11-04T15:54:00.139268319Z"
        },
        "updatedAt": "2026-11-04T20:04:47.930359097Z"
      }
    },
    "answer": "Adam and Zoo score within a point of each other on agent readiness, 59.4 (C) and 58.7 (C). Zoo leads on reliability, payments \u0026 pricing and maintenance \u0026 community.",
    "b": {
      "slug": "zoo",
      "name": "Zoo",
      "vendor": "Zoo Corporation",
      "vendorUrl": "https://zoo.dev",
      "kind": "http-api",
      "category": "cad",
      "summary": "Zoo is a hosted CAD platform from Zoo Corporation with a REST API, the Zookeeper design agent over a websocket, file conversion and analysis endpoints, a CLI and a local MCP server, all built on its KCL modelling language.",
      "url": "https://www.anchorterminal.com/tools/zoo",
      "markdownUrl": "https://www.anchorterminal.com/tools/zoo.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/zoo.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/zoo.json",
      "dns": "zoo.grade.anchorterminal.com",
      "repo": "https://github.com/KittyCAD/mcp",
      "transports": [
        "stdio",
        "streamable-http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "zoo-mcp"
        },
        {
          "registry": "pypi",
          "name": "kittycad"
        }
      ],
      "auth": "mixed",
      "authNotes": "Bearer API token minted at zoo.dev/account/developer after a browser sign-in (SSO by OAuth 2.0, OpenID Connect or email; Zoo uses no passwords). Tokens are listed, created and deleted at /user/api-tokens; no scopes were found. Team and Enterprise plans add organisation-wide service accounts, and OAuth 2.0 apps with PKCE and a device grant exist for apps. The MCP server reads ZOO_API_TOKEN (ZOO_TOKEN in the registry manifest). Websockets authenticate before the first message.",
      "pricing": "freemium",
      "pricingNotes": "Free plan with $10 of monthly usage (1,205 seconds) and no plan fee; Plus $20 a month with $200 of usage, Pro $99 with $1,245, Team $399 per user with $4,980, Enterprise by contract. Zookeeper reasoning and billable API calls (direct or through MCP) are metered per second at $0.0083, about $0.50 a minute, rounded up to the next second. Failed calls are not charged; GET, /user, /org and /oauth2 calls are free. Pay-as-you-go beyond the allowance is off by default and needs a payment method.",
      "priceSummary": "$0.0083 / credit",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the OpenAPI document (226 operations), the API pricing page, the FAQ or the MCP server source (checked 2026-11-03). Payment runs through Stripe-hosted pages and subscription endpoints.",
        "endpoints": []
      },
      "toolCount": 42,
      "popularity": {
        "githubStars": 11,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://zoo.dev/docs/developer-tools/agent-api",
      "openapi": "https://api.zoo.dev/",
      "registryName": "io.github.KittyCAD/zoo-mcp",
      "capabilities": [
        "cad.generate",
        "cad.edit",
        "cad.export"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "freemium",
        "usage-priced",
        "free-tier",
        "mcp",
        "mcp-registry",
        "openapi",
        "cli",
        "python",
        "typescript",
        "rust",
        "go",
        "status-page",
        "soc2",
        "security-txt",
        "bug-bounty"
      ],
      "lastRelease": "2026-10-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.7,
        "grade": "C",
        "agentReady": false,
        "rank": 669,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 2,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 44,
          "maintenance": 90,
          "payments": 35,
          "reliability": 55,
          "schema": 65,
          "security": 67,
          "transparency": 69
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "A public OpenAPI document, SDKs in four languages, a 42-tool MCP server and a $10 monthly allowance let an agent generate KCL geometry and export STEP without a contract. No rate limits, retry guidance or scoped tokens are documented, the MCP server has no read-only subset, and the Free plan's data trains Zoo's models with no opt-out.",
        "bestFor": "Agents that need to produce or iterate editable mechanical geometry as code and export STEP, with a hosted engine and no desktop.",
        "strengths": [
          "OpenAPI 3.0.3 served at api.zoo.dev with 226 described operations, and SDKs in Python, TypeScript, Rust and Go generated from it",
          "Zookeeper returns editable KCL rather than a mesh, and the CLI or zoo-kcl package exports it to STEP",
          "Public per-second pricing ($0.0083 a second) with $10 of monthly usage on the Free plan and no charge for failed calls",
          "SOC 2 Type II, a disclosure policy with a 72-hour response commitment, and two published Trail of Bits reviews",
          "Status page with component history and no incidents reported for September to November 2026"
        ],
        "weaknesses": [
          "No rate limits, 429 handling or idempotency keys documented for the REST API or the websocket",
          "API tokens carry no scopes and the MCP server has no read-only subset or tool annotations",
          "Free plan data is always used for training; Plus and Pro opt out manually, by the terms of 15 April 2026",
          "The 42 MCP tools and 30,000 characters of docstrings load into every session; the registry entry is at 0.10.0 while PyPI is at 0.33.0",
          "No llms.txt or Markdown docs, no API changelog, and no SLA on any plan"
        ],
        "agentNotes": [
          "Send `{\"type\":\"ping\"}` every 5 seconds on the Zookeeper websocket and expect only KCL back; run the KCL through evaluate_kcl, the CLI or zoo-kcl to get STEP or STL",
          "Budget usage in seconds, since every billable call rounds up to the next second at $0.0083, and the monthly allowance resets at the account anniversary without rollover",
          "Use one modeling session per zoo-mcp process, start it with start_modeling_session and stop it when done; get_modeling_sessions recovers the id after a reconnect",
          "Put the token in ZOO_API_TOKEN, never in a URL; there are no read-only tokens, so use a service account on a Team plan when the owner wants separate credentials",
          "Paginate list endpoints with `limit`, `page_token` and `sort_by`; nothing documents a rate limit, so back off on any 429 or 5xx yourself"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.7
          }
        ],
        "editorialScores": {
          "ergonomics": 44,
          "maintenance": 90,
          "payments": 35,
          "reliability": 55,
          "schema": 65,
          "security": 67,
          "transparency": 57
        },
        "provenanceScore": 80,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "uvx zoo-mcp",
        "http": "curl -H \"Authorization: Bearer $ZOO_API_TOKEN\" https://api.zoo.dev/user",
        "claudeCode": "claude mcp add zoo -e ZOO_API_TOKEN=$ZOO_API_TOKEN -- uvx zoo-mcp",
        "config": {
          "mcpServers": {
            "zoo": {
              "args": [
                "zoo-mcp"
              ],
              "command": "uvx",
              "env": {
                "ZOO_API_TOKEN": "YOUR_ZOO_API_TOKEN"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/cad.generate",
        "tool": "https://letme.dev/zoo"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Billable API second (Zookeeper, modeling, ML, file)",
          "unit": "credit",
          "usd": 0.0083,
          "note": "one credit is one second of a billable call, about $0.50 a minute, rounded up to the next second; GET, /user, /org and /oauth2 calls are free"
        },
        {
          "item": "Plus plan",
          "unit": "month",
          "usd": 20,
          "note": "includes $200 of usage (24,096 seconds); the Free plan includes $10"
        },
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 99,
          "note": "includes $1,245 of usage (150,000 seconds)"
        },
        {
          "item": "Team plan",
          "unit": "seat-month",
          "usd": 399,
          "note": "includes $4,980 of usage per month, service accounts, admin console and auditing"
        }
      ],
      "provenance": {
        "legalEntity": "Zoo Corporation",
        "domain": "zoo.dev",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://zoo.dev/terms-and-conditions",
        "privacy": "https://zoo.dev/privacy-policy",
        "statusPage": "https://status.zoo.dev/",
        "changelog": "https://github.com/KittyCAD/mcp/releases",
        "securityTxt": "valid",
        "checked": "2026-11-03",
        "notes": [
          "Zoo Corporation is named in the terms (last updated 15 April 2026) and the privacy policy (9 September 2026), with an Inglewood, California address. California law.",
          "Section 3(a)(vii) of the terms forbids accessing the Services with spiders, robots, crawlers or similar data mining tools unless Zoo supplies the tool. Recorded as a fact; zoo.dev/robots.txt allows all crawlers and api.zoo.dev has no robots.txt.",
          "security.txt at zoo.dev/.well-known/security.txt names the GitHub advisory form, security@zoo.dev and a policy, with no Expires line.",
          "No llms.txt (404) and no API changelog page (docs/changelog 404). Releases are tracked per repository on GitHub.",
          "The domain registration date was not checked (no RDAP lookup made)."
        ],
        "score": 80
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/zoo.json",
      "live": {
        "slug": "zoo",
        "vendorStatus": {
          "page": "https://status.zoo.dev",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-04T15:32:45.470053997Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.github.KittyCAD/zoo-mcp",
            "version": "0.33.0",
            "seenAt": "2026-11-04T17:11:44.552009456Z"
          }
        ],
        "securityTxt": {
          "url": "https://zoo.dev/.well-known/security.txt",
          "state": "valid",
          "checkedAt": "2026-11-04T15:53:22.312502342Z"
        },
        "updatedAt": "2026-11-04T17:11:44.552009456Z"
      }
    },
    "edges": [
      {
        "by": 38,
        "category": "ergonomics",
        "leads": "adam-cad",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "The docs name 15 adam_ tools plus displayFile and loadSkill, so 11 to 30 (15), and task tools are discovered per task with adam_list_task_tools rather than listed up front, which earns 8 back (23 of 25). Cursor pagination with limit 1 to 50, status and project filters on tasks, and message parts that admins can trim, though results of tool calls may be truncated without a size control (18 of 20). One error envelope with type, message and requestId, 402 and 403 that name the plan or scope at fault, and a recovery table for each direct-tool failure (18 of 20). Idempotency-Key required on every write that starts work, a 24-hour replay, cancel documented as safe to repeat, and an unknown status that tells the agent to inspect before retrying; deletes need confirmation, but readOnlyHint and destructiveHint annotations were not confirmed since tools/list was not read (16 of 20). Few required parameters, but no official SDK in any language (7 of 15). 23 + 18 + 18 + 16 + 7 = 82.",
          "b": "zoo-mcp lists 42 tools in one process with no toolset switch, read-only subset or dynamic loading, and their docstrings total about 30,000 characters (5 of 25). List endpoints take `limit`, `page_token` and `sort_by` (31 paginated operations), with no field selection or filtering (15 of 20). Errors are a generic object with a message and request_id, no error codes, and MCP tools return a string on failure (8 of 20). No idempotency keys, no readOnlyHint or destructiveHint in the tool source, and the websocket needs a ping every 5 seconds to stay open (4 of 20). Few required parameters, official SDKs in Python, TypeScript, Rust and Go, but one modeling session per MCP process and a websocket protocol an agent has to drive by hand (12 of 15). 5 + 15 + 8 + 4 + 12 = 44."
        },
        "scores": {
          "a": 82,
          "b": 44
        }
      },
      {
        "by": 35,
        "category": "maintenance",
        "leads": "zoo",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Read for a closed service. The changelog's newest entry is 10 September 2026, 54 days before this check (20). Entries dated 7, 10, 11 and 25 August and 4 to 10 September 2026, more than three in 90 days (20). A public changelog, hello@adam.new, a Discord and the CADAM repository with 26 open issues, which were not read for replies (10 of 15). The manifest follows the registry schema but new.adam/adam is not in the official MCP registry, and there is no official SDK (0 of 15). CADAM was pushed on 15 October 2026 and the service itself has no package to judge (5 of 10). 20 + 20 + 10 + 0 + 5 = 55.",
          "b": "Read for a hosted service with open-source clients. zoo-mcp v0.33.0 on 30 October 2026, the CLI v0.2.209 on 28 October and kittycad 1.8.0 on 15 October (30). Nine zoo-mcp tags from 24 to 30 October alone, with CLI and SDK releases through October (20). Commits land daily across the KittyCAD organisation, with a Discord and a community forum; issue response times were not read because GitHub's issue pages refused us (15 of 25). io.github.KittyCAD/zoo-mcp is in the official MCP registry under a GitHub-verified namespace, though at version 0.10.0 of 27 January 2026 (15). pytest across Python 3.11 to 3.14, ruff, ty, a security workflow and Dependabot, with the scheduled run on main passing on 3 November (10). 30 + 20 + 15 + 15 + 10 = 90."
        },
        "scores": {
          "a": 55,
          "b": 90
        }
      },
      {
        "by": 20,
        "category": "reliability",
        "leads": "zoo",
        "name": "Reliability",
        "reasons": {
          "a": "Read with the hosted lines. status.adam.new exists and is linked from the docs, but it loads its components and history by script and nothing readable was served, so the page counts for half (10 of 20) and the incident record is unread (5). Rate limits are documented as two refilling buckets reported in RateLimit, RateLimit-Policy and X-RateLimit headers, with no numeric quota published (5 of 15). 429 carries Retry-After, and Idempotency-Key is required on task creation, messages and tool calls and replayed for 24 hours (15). No SLA found (0). The MCP server and the REST API are labelled beta, with breaking changes allowed (0 of 10). 10 + 5 + 5 + 15 + 0 + 0 = 35.",
          "b": "Read with the hosted lines on api.zoo.dev. A Better Stack status page at status.zoo.dev lists public and internal components with uptime figures (20). Its incident pages show no incidents for September, October and November 2026; the June to August archive didn't render for our reader, so about three weeks of the 90-day window are unread (25 of 30). No rate limit with a number was found in the OpenAPI document, the API docs, the FAQ or the MCP source (0). No Retry-After or backoff guidance and no idempotency keys; the document says only that cancellation is idempotent (3 of 15). No SLA on any plan, and the terms disclaim uninterrupted service (0). The REST API and Zookeeper are not labelled beta, while POST /ml/kcl/completions carries the `beta` tag and zoo-mcp declares the Beta classifier (7 of 10). 20 + 25 + 0 + 3 + 0 + 7 = 55."
        },
        "scores": {
          "a": 35,
          "b": 55
        }
      },
      {
        "by": 20,
        "category": "payments",
        "leads": "zoo",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "Read with the hosted rule. No x402, MPP or L402 (0). The pricing page's prices are drawn by script and were not readable; the Markdown version and the billing docs name Free, Pro, Max, Team and Enterprise with no figure, so pricing is scored as unread (0 of 20, named in openQuestions). A Free plan with a daily usage pool and Lite models exists, and trials charge a saved card only when confirmed; whether Free needs a card is not stated (15 of 20). A person signs in with OAuth in a browser and picks a workspace (0). 0 + 0 + 15 + 0 = 15.",
          "b": "No x402, MPP or L402 (0). The per-second rate ($0.0083) and plan allowances are public in the pricing JSON the site loads and on the blog, with the FAQ stating rounding and free GETs (20). The Free plan carries $10 of usage a month with no plan fee; whether sign-up asks for a card was not established, and pay-as-you-go needs a payment method (15 of 20). A person signs in with SSO in a browser and mints the token; service accounts come only after an organisation exists (0). 0 + 20 + 15 + 0 = 35."
        },
        "scores": {
          "a": 15,
          "b": 35
        }
      },
      {
        "by": 16,
        "category": "schema",
        "leads": "adam-cad",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Public OpenAPI 3.1 for the REST API (adam.new/openapi.json and api.adam.new/openapi.json), a site spec for OAuth and MCP endpoints, and an MCP manifest. MCP tool schemas were not read, since tools/list needs a sign-in, though adam_list_task_tools is documented to return input schemas (20 of 25). llms.txt, a docs index at docs.adam.new/llms.txt, Markdown for every page on request through the Accept header, and a starter SKILL.md (10). The direct-tools page gives each MCP tool a purpose and its scopes, and OpenAPI descriptions state conditional requirements such as cron or runAt, but no tool definition says when not to use it (12 of 20). Enums for task status, limit 1 to 50, required fields and multipart file fields are typed; the component schemas past the first 100,000 characters were not read (11 of 15). Every operation documents 400 to 500 responses with one error envelope, and the API introduction carries curl and JSON examples (13 of 15). Versioned /v1 paths, Deprecation and Sunset headers with 90 days' notice, and a dated changelog, though its newest entry is 10 September 2026 (15). 20 + 10 + 12 + 11 + 13 + 15 = 81.",
          "b": "OpenAPI 3.0.3 served at the root of api.zoo.dev, 174 paths and 226 operations each with a summary, and MCP tools whose inputs are typed Python signatures that the SDK turns into JSON Schema (25). No llms.txt (404) and no Markdown twin of the docs (0). The MCP docstrings average about 725 characters and say what each tool is for and when to use another, with snapshot at 3,500 characters; the OpenAPI summaries are one line and the websocket page lists one client message type (14 of 20). 583 schemas with 976 enum lists and required fields, and the file conversion path takes typed format parameters (12 of 15). Each docs endpoint page carries a request example, but errors are one generic object with request_id and message, and the websocket's server messages are not enumerated in the docs (9 of 15). The document reports version 0.1.0, there is no API changelog page, and changes are announced per repository release or on the blog, as the per-second billing change of 30 September 2025 was (5 of 15). 25 + 0 + 14 + 12 + 9 + 5 = 65."
        },
        "scores": {
          "a": 81,
          "b": 65
        }
      },
      {
        "by": 7,
        "category": "security",
        "leads": "adam-cad",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "OAuth 2.1 authorisation code with PKCE S256, automatic client registration, RFC 8707 resource indicators, refresh tokens, a revocation endpoint and 11 scopes, or a personal key minted for one workspace with chosen scopes and shown once; bearer header only, no query-string option (30). Read and change approved separately per area, `tools:execute` kept apart and blockable by an admin under Allow full harness execution, deletes behind confirmation, and access revoked at once from Connected apps. `tools:execute` is broad, covering commands, connected accounts, paired devices, stored credentials and billable tools (18 of 20). Task messages return the agent's output and tool results, which can include web search and connected-account content, and no prompt-injection guidance was found; per-user sandboxes isolate execution but do not address it (4 of 15). Connected apps are listed with revocation, every error carries a requestId and the billing summary reports usage, but no audit log for the operator was found (6 of 15). SOC 2 Type I approved with Type II in progress, a bug bounty of $10 to $100 per finding with a 90-day window and safe harbour, patch SLAs by CVSS severity, 72-hour incident notification, and no security.txt (16 of 20). 30 + 18 + 4 + 6 + 16 = 74.",
          "b": "Bearer API tokens minted in the account, several per user, listed and deleted at /user/api-tokens, organisation service accounts on Team and Enterprise, and OAuth 2.0 apps with PKCE and a device grant; no scopes were found on tokens and no rotation guidance (22 of 30). No read-only token or MCP subset; the Team plan's admin console and auditing give oversight after the fact, and the MCP client's own file permissions govern writes to main.kcl (8 of 20). Zookeeper carries a web_search tool and the MCP server returns KCL samples and docs, with no prompt-injection guidance found (5 of 15). Organisation admins get an API activity log and /user/api-calls lists each call with its cost (12 of 15). security.txt with a GitHub advisory contact and a policy committing to a 72-hour reply and severity-based rewards, SOC 2 Type II on the trust centre, and two Trail of Bits reviews published in 2024 and 2026 (20 of 20). 22 + 8 + 5 + 12 + 20 = 67."
        },
        "scores": {
          "a": 74,
          "b": 67
        }
      }
    ],
    "facts": [
      {
        "a": "MCP server",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Adam AI Labs, Inc.",
        "b": "Zoo Corporation",
        "name": "Vendor"
      },
      {
        "a": "https://adam.new/mcp",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP",
        "b": "stdio, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Closed service under Adam's Terms of Service (Adam AI Labs, Inc., last updated 5 June 2026). The CADAM text-to-CAD web application is open source under GPL-3.0.",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "42",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "io.github.KittyCAD/zoo-mcp",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-10",
        "b": "2026-10-30",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "2026-04-15",
        "name": "Terms last updated"
      },
      {
        "a": "couldn't be read",
        "b": "2026-09-09",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "yes, with an opt-out",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "5.4k stars",
        "b": "11 stars",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Adam and Zoo score within a point of each other on agent readiness, 59.4 (C) and 58.7 (C). Zoo leads on reliability, payments \u0026 pricing and maintenance \u0026 community.",
        "question": "Which is better for AI agents, Adam or Zoo?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Adam and Zoo need an API key?"
      },
      {
        "answer": "Adam has a hosted endpoint at https://adam.new/mcp. Zoo runs on your own machine, with no hosted endpoint listed.",
        "question": "Can an agent call Adam and Zoo without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 81 against 65",
          "Agent ergonomics, 82 against 44",
          "Security \u0026 auth, 74 against 67"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "An agent that drives mechanical CAD work in Onshape, Fusion or SOLIDWORKS through a hosted engineering agent, or needs STEP and 3MF exports of Adam-stored models.",
        "slug": "adam-cad",
        "watchFor": "The MCP server and REST API are labelled beta, with breaking changes allowed"
      },
      {
        "aheadOn": [
          "Reliability, 55 against 35",
          "Payments \u0026 pricing, 35 against 15",
          "Maintenance \u0026 community, 90 against 55"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "Agents that need to produce or iterate editable mechanical geometry as code and export STEP, with a hosted engine and no desktop.",
        "slug": "zoo",
        "watchFor": "No rate limits, 429 handling or idempotency keys documented for the REST API or the websocket"
      }
    ],
    "history": null,
    "job": {
      "capability": "cad.generate",
      "name": "Cad generate"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/adam-cad-vs-autodesk-platform-services.json",
        "title": "Adam vs Autodesk Platform Services",
        "url": "https://www.anchorterminal.com/compare/adam-cad-vs-autodesk-platform-services"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adam-cad-vs-ntop.json",
        "title": "Adam vs nTop",
        "url": "https://www.anchorterminal.com/compare/adam-cad-vs-ntop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adam-cad-vs-onshape.json",
        "title": "Adam vs Onshape",
        "url": "https://www.anchorterminal.com/compare/adam-cad-vs-onshape"
      },
      {
        "json": "https://www.anchorterminal.com/compare/autodesk-platform-services-vs-zoo.json",
        "title": "Autodesk Platform Services vs Zoo",
        "url": "https://www.anchorterminal.com/compare/autodesk-platform-services-vs-zoo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ntop-vs-zoo.json",
        "title": "nTop vs Zoo",
        "url": "https://www.anchorterminal.com/compare/ntop-vs-zoo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/simscale-vs-zoo.json",
        "title": "SimScale vs Zoo",
        "url": "https://www.anchorterminal.com/compare/simscale-vs-zoo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adam-cad-vs-simscale.json",
        "title": "Adam vs SimScale",
        "url": "https://www.anchorterminal.com/compare/adam-cad-vs-simscale"
      },
      {
        "json": "https://www.anchorterminal.com/compare/onshape-vs-zoo.json",
        "title": "Onshape vs Zoo",
        "url": "https://www.anchorterminal.com/compare/onshape-vs-zoo"
      }
    ],
    "panel": null,
    "scores": [
      {
        "adam-cad": 35,
        "by": 20,
        "edge": "zoo",
        "key": "reliability",
        "name": "Reliability",
        "weight": 16,
        "zoo": 55
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "adam-cad": 81,
        "by": 16,
        "edge": "adam-cad",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13,
        "zoo": 65
      },
      {
        "adam-cad": 82,
        "by": 38,
        "edge": "adam-cad",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13,
        "zoo": 44
      },
      {
        "adam-cad": 74,
        "by": 7,
        "edge": "adam-cad",
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14,
        "zoo": 67
      },
      {
        "adam-cad": 15,
        "by": 20,
        "edge": "zoo",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10,
        "zoo": 35
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "adam-cad": 55,
        "by": 35,
        "edge": "zoo",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7,
        "zoo": 90
      },
      {
        "adam-cad": 72,
        "by": 3,
        "edge": "adam-cad",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7,
        "zoo": 69
      }
    ],
    "summary": "Adam and Zoo score within a point of each other on agent readiness, 59.4 (C) and 58.7 (C). Zoo leads on reliability, payments \u0026 pricing and maintenance \u0026 community. Both do cad generate.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "adam-cad": "An agent reaches Adam's CAD tasks over OAuth 2.1 with per-area scopes, idempotency keys and a public OpenAPI spec, and can export STEP, STL, IGES and 3MF from Adam-stored models. The MCP server and API are beta, numeric rate limits and plan prices are not published, and native CAD edits need a connected desktop application.",
      "zoo": "A public OpenAPI document, SDKs in four languages, a 42-tool MCP server and a $10 monthly allowance let an agent generate KCL geometry and export STEP without a contract. No rate limits, retry guidance or scoped tokens are documented, the MCP server has no read-only subset, and the Free plan's data trains Zoo's models with no opt-out."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/adam-cad-vs-zoo",
    "json": "https://www.anchorterminal.com/compare/adam-cad-vs-zoo.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/adam-cad-vs-zoo.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/adam-cad-vs-zoo.min.md"
  },
  "markdown": "Adam and Zoo score within a point of each other on agent readiness, 59.4 (C) and 58.7 (C). Zoo leads on reliability, payments \u0026 pricing and maintenance \u0026 community. Both do cad generate.\n\n- Adam: grade C, 59.4/100, rank #630 of 1349. Markdown https://www.anchorterminal.com/tools/adam-cad.md · JSON https://www.anchorterminal.com/api/v1/tools/adam-cad.json\n- Zoo: grade C, 58.7/100, rank #669 of 1349. Markdown https://www.anchorterminal.com/tools/zoo.md · JSON https://www.anchorterminal.com/api/v1/tools/zoo.json\n- Best CAD, simulation and fabrication APIs for AI agents: https://www.anchorterminal.com/best/cad/index.md\n- All 15 cad comparisons: https://www.anchorterminal.com/compare/cad/index.md\n\n## Which one, for what\n\n### Adam (C)\n\nGood for: An agent that drives mechanical CAD work in Onshape, Fusion or SOLIDWORKS through a hosted engineering agent, or needs STEP and 3MF exports of Adam-stored models.\n\nAhead on:\n- Schema \u0026 documentation, 81 against 65\n- Agent ergonomics, 82 against 44\n- Security \u0026 auth, 74 against 67\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: The MCP server and REST API are labelled beta, with breaking changes allowed\n\n### Zoo (C)\n\nGood for: Agents that need to produce or iterate editable mechanical geometry as code and export STEP, with a hosted engine and no desktop.\n\nAhead on:\n- Reliability, 55 against 35\n- Payments \u0026 pricing, 35 against 15\n- Maintenance \u0026 community, 90 against 55\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: No rate limits, 429 handling or idempotency keys documented for the REST API or the websocket\n\n\n## Why the edge\n\n### Agent ergonomics: Adam +38\n\n- Adam (82): The docs name 15 adam_ tools plus displayFile and loadSkill, so 11 to 30 (15), and task tools are discovered per task with adam_list_task_tools rather than listed up front, which earns 8 back (23 of 25). Cursor pagination with limit 1 to 50, status and project filters on tasks, and message parts that admins can trim, though results of tool calls may be truncated without a size control (18 of 20). One error envelope with type, message and requestId, 402 and 403 that name the plan or scope at fault, and a recovery table for each direct-tool failure (18 of 20). Idempotency-Key required on every write that starts work, a 24-hour replay, cancel documented as safe to repeat, and an unknown status that tells the agent to inspect before retrying; deletes need confirmation, but readOnlyHint and destructiveHint annotations were not confirmed since tools/list was not read (16 of 20). Few required parameters, but no official SDK in any language (7 of 15). 23 + 18 + 18 + 16 + 7 = 82.\n- Zoo (44): zoo-mcp lists 42 tools in one process with no toolset switch, read-only subset or dynamic loading, and their docstrings total about 30,000 characters (5 of 25). List endpoints take `limit`, `page_token` and `sort_by` (31 paginated operations), with no field selection or filtering (15 of 20). Errors are a generic object with a message and request_id, no error codes, and MCP tools return a string on failure (8 of 20). No idempotency keys, no readOnlyHint or destructiveHint in the tool source, and the websocket needs a ping every 5 seconds to stay open (4 of 20). Few required parameters, official SDKs in Python, TypeScript, Rust and Go, but one modeling session per MCP process and a websocket protocol an agent has to drive by hand (12 of 15). 5 + 15 + 8 + 4 + 12 = 44.\n\n### Maintenance \u0026 community: Zoo +35\n\n- Adam (55): Read for a closed service. The changelog's newest entry is 10 September 2026, 54 days before this check (20). Entries dated 7, 10, 11 and 25 August and 4 to 10 September 2026, more than three in 90 days (20). A public changelog, hello@adam.new, a Discord and the CADAM repository with 26 open issues, which were not read for replies (10 of 15). The manifest follows the registry schema but new.adam/adam is not in the official MCP registry, and there is no official SDK (0 of 15). CADAM was pushed on 15 October 2026 and the service itself has no package to judge (5 of 10). 20 + 20 + 10 + 0 + 5 = 55.\n- Zoo (90): Read for a hosted service with open-source clients. zoo-mcp v0.33.0 on 30 October 2026, the CLI v0.2.209 on 28 October and kittycad 1.8.0 on 15 October (30). Nine zoo-mcp tags from 24 to 30 October alone, with CLI and SDK releases through October (20). Commits land daily across the KittyCAD organisation, with a Discord and a community forum; issue response times were not read because GitHub's issue pages refused us (15 of 25). io.github.KittyCAD/zoo-mcp is in the official MCP registry under a GitHub-verified namespace, though at version 0.10.0 of 27 January 2026 (15). pytest across Python 3.11 to 3.14, ruff, ty, a security workflow and Dependabot, with the scheduled run on main passing on 3 November (10). 30 + 20 + 15 + 15 + 10 = 90.\n\n### Reliability: Zoo +20\n\n- Adam (35): Read with the hosted lines. status.adam.new exists and is linked from the docs, but it loads its components and history by script and nothing readable was served, so the page counts for half (10 of 20) and the incident record is unread (5). Rate limits are documented as two refilling buckets reported in RateLimit, RateLimit-Policy and X-RateLimit headers, with no numeric quota published (5 of 15). 429 carries Retry-After, and Idempotency-Key is required on task creation, messages and tool calls and replayed for 24 hours (15). No SLA found (0). The MCP server and the REST API are labelled beta, with breaking changes allowed (0 of 10). 10 + 5 + 5 + 15 + 0 + 0 = 35.\n- Zoo (55): Read with the hosted lines on api.zoo.dev. A Better Stack status page at status.zoo.dev lists public and internal components with uptime figures (20). Its incident pages show no incidents for September, October and November 2026; the June to August archive didn't render for our reader, so about three weeks of the 90-day window are unread (25 of 30). No rate limit with a number was found in the OpenAPI document, the API docs, the FAQ or the MCP source (0). No Retry-After or backoff guidance and no idempotency keys; the document says only that cancellation is idempotent (3 of 15). No SLA on any plan, and the terms disclaim uninterrupted service (0). The REST API and Zookeeper are not labelled beta, while POST /ml/kcl/completions carries the `beta` tag and zoo-mcp declares the Beta classifier (7 of 10). 20 + 25 + 0 + 3 + 0 + 7 = 55.\n\n### Payments \u0026 pricing: Zoo +20\n\n- Adam (15): Read with the hosted rule. No x402, MPP or L402 (0). The pricing page's prices are drawn by script and were not readable; the Markdown version and the billing docs name Free, Pro, Max, Team and Enterprise with no figure, so pricing is scored as unread (0 of 20, named in openQuestions). A Free plan with a daily usage pool and Lite models exists, and trials charge a saved card only when confirmed; whether Free needs a card is not stated (15 of 20). A person signs in with OAuth in a browser and picks a workspace (0). 0 + 0 + 15 + 0 = 15.\n- Zoo (35): No x402, MPP or L402 (0). The per-second rate ($0.0083) and plan allowances are public in the pricing JSON the site loads and on the blog, with the FAQ stating rounding and free GETs (20). The Free plan carries $10 of usage a month with no plan fee; whether sign-up asks for a card was not established, and pay-as-you-go needs a payment method (15 of 20). A person signs in with SSO in a browser and mints the token; service accounts come only after an organisation exists (0). 0 + 20 + 15 + 0 = 35.\n\n### Schema \u0026 documentation: Adam +16\n\n- Adam (81): Public OpenAPI 3.1 for the REST API (adam.new/openapi.json and api.adam.new/openapi.json), a site spec for OAuth and MCP endpoints, and an MCP manifest. MCP tool schemas were not read, since tools/list needs a sign-in, though adam_list_task_tools is documented to return input schemas (20 of 25). llms.txt, a docs index at docs.adam.new/llms.txt, Markdown for every page on request through the Accept header, and a starter SKILL.md (10). The direct-tools page gives each MCP tool a purpose and its scopes, and OpenAPI descriptions state conditional requirements such as cron or runAt, but no tool definition says when not to use it (12 of 20). Enums for task status, limit 1 to 50, required fields and multipart file fields are typed; the component schemas past the first 100,000 characters were not read (11 of 15). Every operation documents 400 to 500 responses with one error envelope, and the API introduction carries curl and JSON examples (13 of 15). Versioned /v1 paths, Deprecation and Sunset headers with 90 days' notice, and a dated changelog, though its newest entry is 10 September 2026 (15). 20 + 10 + 12 + 11 + 13 + 15 = 81.\n- Zoo (65): OpenAPI 3.0.3 served at the root of api.zoo.dev, 174 paths and 226 operations each with a summary, and MCP tools whose inputs are typed Python signatures that the SDK turns into JSON Schema (25). No llms.txt (404) and no Markdown twin of the docs (0). The MCP docstrings average about 725 characters and say what each tool is for and when to use another, with snapshot at 3,500 characters; the OpenAPI summaries are one line and the websocket page lists one client message type (14 of 20). 583 schemas with 976 enum lists and required fields, and the file conversion path takes typed format parameters (12 of 15). Each docs endpoint page carries a request example, but errors are one generic object with request_id and message, and the websocket's server messages are not enumerated in the docs (9 of 15). The document reports version 0.1.0, there is no API changelog page, and changes are announced per repository release or on the blog, as the per-second billing change of 30 September 2025 was (5 of 15). 25 + 0 + 14 + 12 + 9 + 5 = 65.\n\n### Security \u0026 auth: Adam +7\n\n- Adam (74): OAuth 2.1 authorisation code with PKCE S256, automatic client registration, RFC 8707 resource indicators, refresh tokens, a revocation endpoint and 11 scopes, or a personal key minted for one workspace with chosen scopes and shown once; bearer header only, no query-string option (30). Read and change approved separately per area, `tools:execute` kept apart and blockable by an admin under Allow full harness execution, deletes behind confirmation, and access revoked at once from Connected apps. `tools:execute` is broad, covering commands, connected accounts, paired devices, stored credentials and billable tools (18 of 20). Task messages return the agent's output and tool results, which can include web search and connected-account content, and no prompt-injection guidance was found; per-user sandboxes isolate execution but do not address it (4 of 15). Connected apps are listed with revocation, every error carries a requestId and the billing summary reports usage, but no audit log for the operator was found (6 of 15). SOC 2 Type I approved with Type II in progress, a bug bounty of $10 to $100 per finding with a 90-day window and safe harbour, patch SLAs by CVSS severity, 72-hour incident notification, and no security.txt (16 of 20). 30 + 18 + 4 + 6 + 16 = 74.\n- Zoo (67): Bearer API tokens minted in the account, several per user, listed and deleted at /user/api-tokens, organisation service accounts on Team and Enterprise, and OAuth 2.0 apps with PKCE and a device grant; no scopes were found on tokens and no rotation guidance (22 of 30). No read-only token or MCP subset; the Team plan's admin console and auditing give oversight after the fact, and the MCP client's own file permissions govern writes to main.kcl (8 of 20). Zookeeper carries a web_search tool and the MCP server returns KCL samples and docs, with no prompt-injection guidance found (5 of 15). Organisation admins get an API activity log and /user/api-calls lists each call with its cost (12 of 15). security.txt with a GitHub advisory contact and a policy committing to a 72-hour reply and severity-based rewards, SOC 2 Type II on the trust centre, and two Trail of Bits reviews published in 2024 and 2026 (20 of 20). 22 + 8 + 5 + 12 + 20 = 67.\n\n## Score by category\n\n| Category | Weight | Adam | Zoo | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 35 | 55 | Zoo +20 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 81 | 65 | Adam +16 |\n| Agent ergonomics | 13% (16.2 this run) | 82 | 44 | Adam +38 |\n| Security \u0026 auth | 14% (17.5 this run) | 74 | 67 | Adam +7 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 15 | 35 | Zoo +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 55 | 90 | Zoo +35 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 72 | 69 | Adam +3 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **59.4 · C** | **58.7 · C** | |\n\n## Facts side by side\n\n| Fact | Adam | Zoo |\n| --- | --- | --- |\n| Kind | MCP server | HTTP API |\n| Vendor | Adam AI Labs, Inc. | Zoo Corporation |\n| Hosted endpoint | `https://adam.new/mcp` | no (local only) |\n| Transports | Streamable HTTP | stdio, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | Closed service under Adam's Terms of Service (Adam AI Labs, Inc., last updated 5 June 2026). The CADAM text-to-CAD web application is open source under GPL-3.0. | none |\n| Tools exposed | none | 42 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | no |\n| MCP registry | not listed | `io.github.KittyCAD/zoo-mcp` |\n| Last release | 2026-09-10 | 2026-10-30 |\n| Terms last updated | couldn't be read | 2026-04-15 |\n| Privacy policy last updated | couldn't be read | 2026-09-09 |\n| Customer content may train models | couldn't be read | yes, with an opt-out |\n| Terms restrict automated access | couldn't be read | yes |\n| Terms restrict benchmarking | couldn't be read | yes |\n| Terms or service can change without notice | couldn't be read | not found in the text |\n| Arbitration or class-action waiver | couldn't be read | not found in the text |\n| Popularity | 5.4k stars | 11 stars |\n\n## Verdicts\n\n**Adam.** An agent reaches Adam's CAD tasks over OAuth 2.1 with per-area scopes, idempotency keys and a public OpenAPI spec, and can export STEP, STL, IGES and 3MF from Adam-stored models. The MCP server and API are beta, numeric rate limits and plan prices are not published, and native CAD edits need a connected desktop application.\n\n**Zoo.** A public OpenAPI document, SDKs in four languages, a 42-tool MCP server and a $10 monthly allowance let an agent generate KCL geometry and export STEP without a contract. No rate limits, retry guidance or scoped tokens are documented, the MCP server has no read-only subset, and the Free plan's data trains Zoo's models with no opt-out.\n\n## Before you call either\n\n### Adam\n\n1. Call adam_get_context first and check the scopes; client-driven tool calls need `tasks:read`, `tasks:write` and `tools:execute`, which an admin may have blocked\n2. Send a fresh UUID as Idempotency-Key on every task, message and tool call, reuse it on a retry, and on status unknown inspect the task before retrying with a new key\n3. Poll adam_get_tool_call for queued or running calls; creating an external task starts no inference, but executing tools spends the workspace's usage\n4. Treat 402 as a plan or usage limit for the person to resolve, and on 429 wait for Retry-After\n5. Expect only Adam-stored models to export without a desktop; ask the person to connect Onshape, Fusion or SOLIDWORKS before native edits\n\n### Zoo\n\n1. Send `{\"type\":\"ping\"}` every 5 seconds on the Zookeeper websocket and expect only KCL back; run the KCL through evaluate_kcl, the CLI or zoo-kcl to get STEP or STL\n2. Budget usage in seconds, since every billable call rounds up to the next second at $0.0083, and the monthly allowance resets at the account anniversary without rollover\n3. Use one modeling session per zoo-mcp process, start it with start_modeling_session and stop it when done; get_modeling_sessions recovers the id after a reconnect\n4. Put the token in ZOO_API_TOKEN, never in a URL; there are no read-only tokens, so use a service account on a Team plan when the owner wants separate credentials\n5. Paginate list endpoints with `limit`, `page_token` and `sort_by`; nothing documents a rate limit, so back off on any 429 or 5xx yourself\n\n## Questions\n\n### Which is better for AI agents, Adam or Zoo?\n\nAdam and Zoo score within a point of each other on agent readiness, 59.4 (C) and 58.7 (C). Zoo leads on reliability, payments \u0026 pricing and maintenance \u0026 community.\n\n### Do Adam and Zoo need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Adam and Zoo without installing anything?\n\nAdam has a hosted endpoint at https://adam.new/mcp. Zoo runs on your own machine, with no hosted endpoint listed.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/adam-cad-vs-zoo.json, and with the fewest tokens: https://www.anchorterminal.com/compare/adam-cad-vs-zoo.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"adam-cad\", \"b\": \"zoo\"}`. From a terminal: `anchor compare adam-cad zoo`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/adam-cad.json and https://www.anchorterminal.com/api/v1/tools/zoo.json\n\n## Other comparisons with Adam or Zoo\n\n- [Adam vs Autodesk Platform Services](https://www.anchorterminal.com/compare/adam-cad-vs-autodesk-platform-services.md)\n- [Adam vs nTop](https://www.anchorterminal.com/compare/adam-cad-vs-ntop.md)\n- [Adam vs Onshape](https://www.anchorterminal.com/compare/adam-cad-vs-onshape.md)\n- [Autodesk Platform Services vs Zoo](https://www.anchorterminal.com/compare/autodesk-platform-services-vs-zoo.md)\n- [nTop vs Zoo](https://www.anchorterminal.com/compare/ntop-vs-zoo.md)\n- [SimScale vs Zoo](https://www.anchorterminal.com/compare/simscale-vs-zoo.md)\n- [Adam vs SimScale](https://www.anchorterminal.com/compare/adam-cad-vs-simscale.md)\n- [Onshape vs Zoo](https://www.anchorterminal.com/compare/onshape-vs-zoo.md)\n",
  "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-11-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "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"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Adam vs Zoo",
        "url": ""
      }
    ],
    "description": "Adam and Zoo score within a point of each other for cad generate, 59.4 and 58.7 out of 100. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Adam C 59.4",
      "Zoo C 58.7",
      "scores"
    ],
    "h1": "Adam vs Zoo",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/adam-cad-vs-zoo",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Adam vs Zoo for AI agents in 2026: scores and prices | Anchor Terminal",
    "toc": null,
    "updated": "2026-11-03",
    "url": "https://www.anchorterminal.com/compare/adam-cad-vs-zoo"
  },
  "tokens": {
    "markdown": 4700,
    "slim": 3330
  },
  "version": 1
}
