Skip to content

How Claude Agent SDK’s scores are calculated

The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.

verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10

PA Score38/100

Agent-ready 66.6 × 0.30 = 19.98

API quality 2.6 × 0.20 = 0.52

Openness 17.4 × 0.20 = 3.48

Built-in AI 60.4 × 0.15 = 9.06

Automation 33.8 × 0.15 = 5.07

(19.98 + 0.52 + 3.48 + 9.06 + 5.07) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 38.11 ÷ 1.00 = 38.1

Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.

Agent-ready66.6/100×0.30 of the PA blend

Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.

Point an agent at llms.txt or agent-oriented docsweight 2

2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max

  • [probe] https://code.claude.com/llms.txtPROBE llms.txt: HTTP 200 at https://code.claude.com/llms.txt # Claude Code Docs > Official documentation for Claude Code, Anthropic's agentic coding tool available in the terminal,
  • [probe] https://code.claude.com/docs/en/agent-sdk/overview.mdPROBE docs-md: HTTP 200 at https://code.claude.com/docs/en/agent-sdk/overview.md > ## Documentation Index > Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt > Use this f
  • [probe] https://code.claude.com/docs/en/cli-referenceofficial CLI documented at https://code.claude.com/docs/en/cli-reference

Run the product headlessly / in CI for automationweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdDeploy the Agent SDK in production: subprocess architecture, session persistence, scaling, observability, and multi-tenant isolation for Docker, Kubernetes, and sandbox providers.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdThe Agent SDK spawns and supervises a claude CLI subprocess that owns a shell, a working directory, and session files on disk.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/quickstart.mdUse the Agent SDK to build an AI agent that reads your code, finds bugs, and fixes them, all without manual intervention.
  • [github] https://github.com/anthropics/claude-agent-sdk-pythonThe Claude Code CLI is automatically bundled with the package - no separate installation required! The SDK will use the bundled CLI by default.
  • [community] https://news.ycombinator.com/item?id=48125552Damn. I just built an entire headless automated workflow around `claude -p`

Plug MCP servers into this product so it can use their toolsweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/mcp.mdWith MCP, your agent can query databases, integrate with APIs like Slack and GitHub, and connect to other services without writing custom tool implementations.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/permissions.mdThe Claude Agent SDK provides permission controls to manage how Claude uses tools. Use permission modes and rules to define what's allowed automatically, and the canUseTool callback to handle everything else at runtime.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/custom-tools.mdCustom tools extend the Agent SDK by letting you define your own functions that Claude can call during a conversation.

Connect an agent via an official MCP serverweight 3

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Use an official CLIweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [github] https://github.com/anthropics/claude-agent-sdk-pythonThe Claude Code CLI is automatically bundled with the package - no separate installation required! The SDK will use the bundled CLI by default.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdThe Agent SDK spawns and supervises a claude CLI subprocess that owns a shell, a working directory, and session files on disk.
  • [probe] https://code.claude.com/docs/en/cli-referenceofficial CLI documented at https://code.claude.com/docs/en/cli-reference
  • [community] https://news.ycombinator.com/item?id=48125552Damn. I just built an entire headless automated workflow around `claude -p`
  • [community] https://news.ycombinator.com/item?id=48125552There is no difference between claude -p and typing into their 'harness' in tmux. They want to make you pay for API which is subsidizing these plans... Forcing people to use their garbage harness — 0 observability, no extensibility and poor DX.
  • [community] https://news.ycombinator.com/item?id=48125552I've been using claude -p with a harness called codelayer. Their [default] harness is completely garbage when it comes at displaying full details of tool calls and session management... pressing ctrl-o does not display any detail of messages above the scroll buffer. It also flashes and rescrolls like bonkers.

Drive the product through a documented public APIweight 3

3 (weight) × 9 (quality) × 1.0 (full) = 27.0 of 30 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/overviewThe Agent SDK gives you the same tools, agent loop, and context management that power Claude Code, programmable in Python and TypeScript.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hooks.mdHooks are callback functions that run your code in response to agent events, like a tool being called, a session starting, or execution stopping.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/subagents.mdSubagents are separate agent instances that your main agent can spawn to handle focused subtasks. Use them to isolate context, run multiple analyses in parallel, and apply specialized instructions
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/mcp.mdWith MCP, your agent can query databases, integrate with APIs like Slack and GitHub, and connect to other services without writing custom tool implementations.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/custom-tools.mdCustom tools extend the Agent SDK by letting you define your own functions that Claude can call during a conversation.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdDeploy the Agent SDK in production: subprocess architecture, session persistence, scaling, observability, and multi-tenant isolation for Docker, Kubernetes, and sandbox providers.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/python.mdUse ClaudeSDKClient for interactive applications such as chat interfaces, or when the next action depends on Claude's response.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/migration-guide.mdMigrating from the OpenAI Agents SDK instead? The OpenAI Agents SDK migration recipe maps each primitive onto the Claude Agent SDK through a single worked example.
  • [github] https://github.com/anthropics/claude-agent-sdk-pythonThe Claude Code CLI is automatically bundled with the package - no separate installation required! The SDK will use the bundled CLI by default.
  • [community] https://news.ycombinator.com/item?id=48125552Damn. I just built an entire headless automated workflow around `claude -p`

Issue scoped/least-privilege API credentials for an agentweight 2

2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/permissions.mdThe Claude Agent SDK provides permission controls to manage how Claude uses tools. Use permission modes and rules to define what's allowed automatically, and the canUseTool callback to handle everything else at runtime.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/user-input.mdPass a canUseTool callback in your query options. The callback fires whenever Claude needs user input, receiving the tool name and input as arguments
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/permissions.mdThe Claude Agent SDK provides permission controls to manage how Claude uses tools.

Build against official SDKsweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/overviewThe Agent SDK gives you the same tools, agent loop, and context management that power Claude Code, programmable in Python and TypeScript.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/overviewBuilt-in tools | Read, write, edit files, run commands, and search the web
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/custom-tools.mdCustom tools extend the Agent SDK by letting you define your own functions that Claude can call during a conversation.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/python.mdUse ClaudeSDKClient for interactive applications such as chat interfaces, or when the next action depends on Claude's response.
  • [github] https://github.com/anthropics/claude-agent-sdk-pythonThe Claude Code CLI is automatically bundled with the package - no separate installation required! The SDK will use the bundled CLI by default.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/migration-guide.mdMigrating from the OpenAI Agents SDK instead? The OpenAI Agents SDK migration recipe maps each primitive onto the Claude Agent SDK through a single worked example.
  • [community] https://news.ycombinator.com/item?id=48125552I've been using claude -p with a harness called codelayer. Their [default] harness is completely garbage when it comes at displaying full details of tool calls and session management... pressing ctrl-o does not display any detail of messages above the scroll buffer. It also flashes and rescrolls like bonkers.

Subscribe to events via webhooksweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Agent-ready = 119.8 ÷ 180 × 100 = 66.6

API quality2.6/100×0.20 of the PA blend

The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.

Explore an interactive API reference with runnable examplesweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Download a machine-readable API spec (OpenAPI or equivalent)weight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Test against a sandbox environment without touching production dataweight 1

1 (weight) × 3 (quality) × 0.6 (partial) = 1.8 of 10 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdDeploy the Agent SDK in production: subprocess architecture, session persistence, scaling, observability, and multi-tenant isolation for Docker, Kubernetes, and sandbox providers.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hooks.mdWith hooks, you can: Block dangerous operations before they execute, like destructive shell commands or unauthorized file access
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/permissions.mdThe Claude Agent SDK provides permission controls to manage how Claude uses tools. Use permission modes and rules to define what's allowed automatically, and the canUseTool callback to handle everything else at runtime.

Rely on versioned APIs with a documented deprecation policyweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

API quality = 1.8 ÷ 70 × 100 = 2.6

Openness17.4/100×0.20 of the PA blend

Can you leave, inspect, or self-host — data export, open source, portability.

Do everything through the API that I can do in the UIweight 2

2 (weight) × 7 (quality) × 0.6 (partial) = 8.4 of 20 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/overviewThe Agent SDK gives you the same tools, agent loop, and context management that power Claude Code, programmable in Python and TypeScript.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/claude-code-features.mdThe Agent SDK is built on the same foundation as Claude Code, which means your SDK agents have access to the same filesystem-based features: project instructions (`CLAUDE.md` and rules), skills, hooks, and more.
  • [community] https://news.ycombinator.com/item?id=48125552There is no difference between claude -p and typing into their 'harness' in tmux. They want to make you pay for API which is subsidizing these plans... Forcing people to use their garbage harness — 0 observability, no extensibility and poor DX.
  • [community] https://news.ycombinator.com/item?id=48125552I've been using claude -p with a harness called codelayer. Their [default] harness is completely garbage when it comes at displaying full details of tool calls and session management... pressing ctrl-o does not display any detail of messages above the scroll buffer. It also flashes and rescrolls like bonkers.

Export all of my data in open formats and leaveweight 3

3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/sessions.mdA session is the conversation history the SDK accumulates while your agent works. ... The SDK writes it to disk automatically so you can return to it later.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/session-storage.mdA `SessionStore` adapter lets you mirror those transcripts to your own backend, such as an object store, a key-value store, or a database, so a session created on one host can be resumed on another host running from a matching working directory.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdThe Agent SDK spawns and supervises a claude CLI subprocess that owns a shell, a working directory, and session files on disk.

Read the product's source under an open licenseweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [github] https://github.com/anthropics/claude-agent-sdk-pythonThe Claude Code CLI is automatically bundled with the package - no separate installation required! The SDK will use the bundled CLI by default.
  • [community] https://news.ycombinator.com/item?id=48125552You can no longer use your Claude subscription with apps that use the Claude Agent SDK, e.g. claude -p, Conductor, T3code, etc.
  • [community] https://news.ycombinator.com/item?id=48125552There is no difference between claude -p and typing into their 'harness' in tmux. They want to make you pay for API which is subsidizing these plans... Forcing people to use their garbage harness — 0 observability, no extensibility and poor DX.

Self-host the core productweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdDeploy the Agent SDK in production: subprocess architecture, session persistence, scaling, observability, and multi-tenant isolation for Docker, Kubernetes, and sandbox providers.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdThe Agent SDK spawns and supervises a claude CLI subprocess that owns a shell, a working directory, and session files on disk.
  • [community] https://news.ycombinator.com/item?id=48125552You can no longer use your Claude subscription with apps that use the Claude Agent SDK, e.g. claude -p, Conductor, T3code, etc.
  • [community] https://news.ycombinator.com/item?id=48125552Currently the credit doesn't apply to interactive Claude Code, web/desktop/mobile apps, Claude Cowork, etc. Next month, interactive claude code will no longer be allowed [under the SDK plan].
  • [community] https://hn.algolia.com/api/v1/items/48600598My frustration with Anthropic has been around the uncertainty of all of this. What constitutes fair usage, what can I play with and not risk being banned... now that's all been paused.

Openness = 17.4 ÷ 100 × 100 = 17.4

Built-in AI60.4/100×0.15 of the PA blend

Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.

Get AI-generated insights and suggestions from my data inside the productweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://claude.com/blog/building-agents-with-the-claude-agent-sdkFinance agents: Build agents that can understand your portfolio and goals, as well as help you evaluate investments by accessing external APIs, storing data and running code to make calculations.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/quickstart.mdUse the Agent SDK to build an AI agent that reads your code, finds bugs, and fixes them, all without manual intervention.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/subagents.mdSubagents are separate agent instances that your main agent can spawn to handle focused subtasks. Use them to isolate context, run multiple analyses in parallel, and apply specialized instructions
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/subagents.mdSubagents are separate agent instances that your main agent can spawn to handle focused subtasks.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/structured-outputs.mdStructured outputs let you define the exact shape of data you want back from an agent. ... you still get validated JSON matching your schema at the end.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/structured-outputs.mdStructured outputs let you define the exact shape of data you want back from an agent.

Set up automations that run autonomously in the backgroundweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdDeploy the Agent SDK in production: subprocess architecture, session persistence, scaling, observability, and multi-tenant isolation for Docker, Kubernetes, and sandbox providers.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdThe Agent SDK spawns and supervises a claude CLI subprocess that owns a shell, a working directory, and session files on disk.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/streaming-vs-single-mode.mdStreaming input mode is the preferred way to use the Claude Agent SDK. It provides full access to the agent's capabilities and enables rich, interactive experiences.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/sessions.mdA session is the conversation history the SDK accumulates while your agent works. ... The SDK writes it to disk automatically so you can return to it later.
  • [community] https://news.ycombinator.com/item?id=48125552Damn. I just built an entire headless automated workflow around `claude -p`
  • [community] https://news.ycombinator.com/item?id=48125552There is no difference between claude -p and typing into their 'harness' in tmux. They want to make you pay for API which is subsidizing these plans... Forcing people to use their garbage harness — 0 observability, no extensibility and poor DX.
  • [community] https://hn.algolia.com/api/v1/items/48600598My frustration with Anthropic has been around the uncertainty of all of this. What constitutes fair usage, what can I play with and not risk being banned... now that's all been paused.

Delegate tasks to a built-in AI assistant inside the productweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/overviewThe Agent SDK gives you the same tools, agent loop, and context management that power Claude Code, programmable in Python and TypeScript.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/overviewBuilt-in tools | Read, write, edit files, run commands, and search the web
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/subagents.mdSubagents are separate agent instances that your main agent can spawn to handle focused subtasks. Use them to isolate context, run multiple analyses in parallel, and apply specialized instructions
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/quickstart.mdUse the Agent SDK to build an AI agent that reads your code, finds bugs, and fixes them, all without manual intervention.
  • [claimed-docs] https://claude.com/blog/building-agents-with-the-claude-agent-sdkFinance agents: Build agents that can understand your portfolio and goals, as well as help you evaluate investments by accessing external APIs, storing data and running code to make calculations.

Operate the product with natural-language commandsweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/overviewThe Agent SDK gives you the same tools, agent loop, and context management that power Claude Code, programmable in Python and TypeScript.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/custom-tools.mdCustom tools extend the Agent SDK by letting you define your own functions that Claude can call during a conversation.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/user-input.mdPass a canUseTool callback in your query options. The callback fires whenever Claude needs user input, receiving the tool name and input as arguments
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/python.mdUse ClaudeSDKClient for interactive applications such as chat interfaces, or when the next action depends on Claude's response.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/streaming-vs-single-mode.mdIt allows the agent to operate as a long lived process that takes in user input, handles interruptions, surfaces permission requests, and handles session management.
  • [github] https://github.com/anthropics/claude-agent-sdk-pythonThe Claude Code CLI is automatically bundled with the package - no separate installation required! The SDK will use the bundled CLI by default.

Built-in AI = 54.4 ÷ 90 × 100 = 60.4

Automation33.8/100×0.15 of the PA blend

Depth of automation primitives — rules, scheduling, bulk operations, webhooks.

Perform bulk operations across many items at onceweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/subagents.mdSubagents are separate agent instances that your main agent can spawn to handle focused subtasks. Use them to isolate context, run multiple analyses in parallel, and apply specialized instructions
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/custom-tools.mdCustom tools extend the Agent SDK by letting you define your own functions that Claude can call during a conversation.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/subagents.mdSubagents are separate agent instances that your main agent can spawn to handle focused subtasks.
  • [community] https://news.ycombinator.com/item?id=48125552Damn. I just built an entire headless automated workflow around `claude -p`

Define rules that trigger actions automatically on eventsweight 3

3 (weight) × 7 (quality) × 1.0 (full) = 21.0 of 30 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hooks.mdHooks are callback functions that run your code in response to agent events, like a tool being called, a session starting, or execution stopping.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hooks.mdWith hooks, you can: Block dangerous operations before they execute, like destructive shell commands or unauthorized file access
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/permissions.mdThe Claude Agent SDK provides permission controls to manage how Claude uses tools. Use permission modes and rules to define what's allowed automatically, and the canUseTool callback to handle everything else at runtime.

Schedule recurring jobs or workflowsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/sessions.mdA session is the conversation history the SDK accumulates while your agent works. ... The SDK writes it to disk automatically so you can return to it later.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/hosting.mdDeploy the Agent SDK in production: subprocess architecture, session persistence, scaling, observability, and multi-tenant isolation for Docker, Kubernetes, and sandbox providers.
  • [claimed-docs] https://code.claude.com/docs/en/agent-sdk/streaming-vs-single-mode.mdIt allows the agent to operate as a long lived process that takes in user input, handles interruptions, surfaces permission requests, and handles session management.

Version, review, and roll back my automationsweight 1

1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Automation = 27.0 ÷ 80 × 100 = 33.8