How Smithery’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 Score32/100
Agent-ready 66.0 × 0.30 = 19.80
API quality 31.4 × 0.20 = 6.28
Openness 8.4 × 0.20 = 1.68
Built-in AI 24.0 × 0.15 = 3.60
Automation 6.7 × 0.15 = 1.00
(19.80 + 6.28 + 1.68 + 3.60 + 1.00) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 32.37 ÷ 1.00 = 32.4
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.0/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) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [probe] https://smithery.ai/llms.txt“PROBE llms.txt: HTTP 404 at https://smithery.ai/llms.txt”
- [probe] https://smithery.ai/docs.md“PROBE docs-md: HTTP 404 at https://smithery.ai/docs.md”
- [probe] https://smithery.ai/docs/openapi.json“PROBE openapi (2026-09-05): GET https://smithery.ai/docs/openapi.json returned HTTP 200 with an OpenAPI 3.1.0 description (35 documented paths) — an agent can generate a client for the platform API from this spec.”
- [probe] https://smithery.ai/docs/mcp“PROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/smithery/): a JSON-RPC initialize POST to https://smithery.ai/docs/mcp answered with serverInfo "Smithery Documentation" — the docs themselves are served over MCP; `npm install @smithery/cli` completed in a throwaway fixture and `smithery --version` printed 4.11.1.”
Run the product headlessly / in CI for automationweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery mcp search [term] # Search the Smithery registry smithery mcp add <url> # Add an MCP server connection”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery tool find [query] # Search tools by name or intent smithery tool call <connection> <tool> [args] # Call a tool”
- [claimed-docs] https://smithery.ai/docs/use/connect“Smithery gives you a simple REST interface for connecting to MCP servers. Instead of implementing the MCP protocol directly, handling OAuth flows, and managing credentials yourself, Smithery handles all of it for you.”
- [claimed-docs] https://smithery.ai/docs/use/token-scoping“Service tokens let you safely expose Smithery to browsers, mobile apps, and AI agents without leaking your API key.”
- [probe] https://registry.smithery.ai/servers?pageSize=3“PROBE registry-api (2026-09-05): GET https://registry.smithery.ai/servers?pageSize=3 with NO API key returned HTTP 200 with a machine-readable server catalog (JSON entries carry displayName, isDeployed, qualifiedName, remote, useCount, verified) — an agent can search the registry keylessly.”
- [probe] https://smithery.ai/docs/openapi.json“PROBE openapi (2026-09-05): GET https://smithery.ai/docs/openapi.json returned HTTP 200 with an OpenAPI 3.1.0 description (35 documented paths) — an agent can generate a client for the platform API from this spec.”
- [probe] https://smithery.ai/docs/mcp“PROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/smithery/): a JSON-RPC initialize POST to https://smithery.ai/docs/mcp answered with serverInfo "Smithery Documentation" — the docs themselves are served over MCP; `npm install @smithery/cli` completed in a throwaway fixture and `smithery --version` printed 4.11.1.”
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://smithery.ai/docs/use/connect“Smithery gives you a simple REST interface for connecting to MCP servers. Instead of implementing the MCP protocol directly, handling OAuth flows, and managing credentials yourself, Smithery handles all of it for you.”
- [claimed-docs] https://smithery.ai/docs/use/uplink“Uplink exposes an MCP server running on any machine as a regular Smithery connection.”
- [claimed-docs] https://smithery.ai/docs/use/deep-linking“Deep links provide a seamless way to integrate Smithery MCPs into supported clients. When a user clicks a deep link from our server page, the client automatically configures the MCP with the correct settings.”
- [claimed-docs] https://smithery.ai/docs/integrations/vercel_ai_sdk“Smithery handles OAuth, token refresh, and connection management automatically.”
- [claimed-docs] https://smithery.ai/docs/integrations/vercel_ai_sdk“Connect to multiple servers and aggregate their tools”
- [probe] https://registry.smithery.ai/servers?pageSize=3“PROBE registry-api (2026-09-05): GET https://registry.smithery.ai/servers?pageSize=3 with NO API key returned HTTP 200 with a machine-readable server catalog (JSON entries carry displayName, isDeployed, qualifiedName, remote, useCount, verified) — an agent can search the registry keylessly.”
- [probe] https://server.smithery.ai/exa/mcp“PROBE mcp-endpoint (2026-09-05): POST initialize to https://server.smithery.ai/exa/mcp returned HTTP 401 with an OAuth challenge — the hosted MCP endpoint is live and vaults access behind managed auth ({"error":"invalid_token","error_description":"Missing Authorization header"}). server.smithery.ai hosts per-server MCP endpoints with OAuth 2.1 protected-resource metadata.”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery mcp search [term] # Search the Smithery registry smithery mcp add <url> # Add an MCP server connection”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery tool find [query] # Search tools by name or intent smithery tool call <connection> <tool> [args] # Call a tool”
- [community] https://hn.algolia.com/api/v1/items/47969781“Scanned the top 100 servers on Smithery's registry; 22 of 100 flagged at least one security finding (28 total, 4 critical, 24 high), most commonly tool description injection where a tool's description field contains behavioral instructions an agent will follow automatically.”
Connect an agent via an official MCP serverweight 3
3 (weight) × 9 (quality) × 1.0 (full) = 27.0 of 30 max
- [claimed-docs] https://smithery.ai/docs/use/connect“Smithery gives you a simple REST interface for connecting to MCP servers. Instead of implementing the MCP protocol directly, handling OAuth flows, and managing credentials yourself, Smithery handles all of it for you.”
- [claimed-docs] https://smithery.ai/docs/use/uplink“Uplink exposes an MCP server running on any machine as a regular Smithery connection.”
- [claimed-docs] https://smithery.ai/docs/use/deep-linking“Deep links provide a seamless way to integrate Smithery MCPs into supported clients. When a user clicks a deep link from our server page, the client automatically configures the MCP with the correct settings.”
- [claimed-docs] https://smithery.ai/docs/integrations/vercel_ai_sdk“Smithery handles OAuth, token refresh, and connection management automatically.”
- [probe] https://server.smithery.ai/exa/mcp“PROBE mcp-endpoint (2026-09-05): POST initialize to https://server.smithery.ai/exa/mcp returned HTTP 401 with an OAuth challenge — the hosted MCP endpoint is live and vaults access behind managed auth ({"error":"invalid_token","error_description":"Missing Authorization header"}). server.smithery.ai hosts per-server MCP endpoints with OAuth 2.1 protected-resource metadata.”
- [probe] https://smithery.ai/docs/mcp“PROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/smithery/): a JSON-RPC initialize POST to https://smithery.ai/docs/mcp answered with serverInfo "Smithery Documentation" — the docs themselves are served over MCP; `npm install @smithery/cli` completed in a throwaway fixture and `smithery --version` printed 4.11.1.”
Use an official CLIweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery mcp search [term] # Search the Smithery registry smithery mcp add <url> # Add an MCP server connection”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery tool find [query] # Search tools by name or intent smithery tool call <connection> <tool> [args] # Call a tool”
- [github] https://github.com/arcadeai-labs/smithery-cli“Browse skills on the [Smithery Skills Registry](https://smithery.ai/skills) and install them with the upstream installer”
- [probe] https://smithery.ai/docs/mcp“PROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/smithery/): a JSON-RPC initialize POST to https://smithery.ai/docs/mcp answered with serverInfo "Smithery Documentation" — the docs themselves are served over MCP; `npm install @smithery/cli` completed in a throwaway fixture and `smithery --version` printed 4.11.1.”
Drive the product through a documented public APIweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [probe] https://registry.smithery.ai/servers?pageSize=3“PROBE registry-api (2026-09-05): GET https://registry.smithery.ai/servers?pageSize=3 with NO API key returned HTTP 200 with a machine-readable server catalog (JSON entries carry displayName, isDeployed, qualifiedName, remote, useCount, verified) — an agent can search the registry keylessly.”
- [probe] https://server.smithery.ai/exa/mcp“PROBE mcp-endpoint (2026-09-05): POST initialize to https://server.smithery.ai/exa/mcp returned HTTP 401 with an OAuth challenge — the hosted MCP endpoint is live and vaults access behind managed auth ({"error":"invalid_token","error_description":"Missing Authorization header"}). server.smithery.ai hosts per-server MCP endpoints with OAuth 2.1 protected-resource metadata.”
- [probe] https://smithery.ai/docs/openapi.json“PROBE openapi (2026-09-05): GET https://smithery.ai/docs/openapi.json returned HTTP 200 with an OpenAPI 3.1.0 description (35 documented paths) — an agent can generate a client for the platform API from this spec.”
- [claimed-docs] https://smithery.ai/docs/use/connect“Smithery gives you a simple REST interface for connecting to MCP servers. Instead of implementing the MCP protocol directly, handling OAuth flows, and managing credentials yourself, Smithery handles all of it for you.”
- [claimed-docs] https://smithery.ai/docs/use/token-scoping“Service tokens let you safely expose Smithery to browsers, mobile apps, and AI agents without leaking your API key.”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery mcp search [term] # Search the Smithery registry smithery mcp add <url> # Add an MCP server connection”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery tool find [query] # Search tools by name or intent smithery tool call <connection> <tool> [args] # Call a tool”
Issue scoped/least-privilege API credentials for an agentweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://smithery.ai/docs/use/token-scoping“Service tokens let you safely expose Smithery to browsers, mobile apps, and AI agents without leaking your API key.”
- [claimed-docs] https://smithery.ai/docs/use/token-scoping“This token can list and call tools on connections in `my-app` where `metadata.userId` is `user-123` — nothing else.”
- [claimed-docs] https://smithery.ai/docs“Secure credential storage — Encrypted, write-only storage for API keys and tokens”
- [claimed-docs] https://smithery.ai/docs/concepts/namespaces“Namespaces act as a shared workspace. Resources within a namespace can be managed by anyone with the appropriate API key scoped to that namespace, making them suitable for team collaboration similar to project IDs.”
Build against official SDKsweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://smithery.ai/docs/use/connect“Every MCP server published on Smithery gets a typed TypeScript SDK generated from its tool and trigger schemas.”
- [probe] https://smithery.ai/docs/openapi.json“PROBE openapi (2026-09-05): GET https://smithery.ai/docs/openapi.json returned HTTP 200 with an OpenAPI 3.1.0 description (35 documented paths) — an agent can generate a client for the platform API from this spec.”
- [probe] https://smithery.ai/docs/mcp“PROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/smithery/): a JSON-RPC initialize POST to https://smithery.ai/docs/mcp answered with serverInfo "Smithery Documentation" — the docs themselves are served over MCP; `npm install @smithery/cli` completed in a throwaway fixture and `smithery --version` printed 4.11.1.”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery mcp search [term] # Search the Smithery registry smithery mcp add <url> # Add an MCP server connection”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery tool find [query] # Search tools by name or intent smithery tool call <connection> <tool> [args] # Call a tool”
Subscribe to events via webhooksweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://smithery.ai/docs/build/triggers“Triggers let an MCP server surface events from its upstream service. When a consumer activates a trigger via Smithery, Smithery proxies the subscribe call straight through to your server”
Agent-ready = 138.6 ÷ 210 × 100 = 66.0
API quality31.4/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) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [probe] https://smithery.ai/docs/openapi.json“PROBE openapi (2026-09-05): GET https://smithery.ai/docs/openapi.json returned HTTP 200 with an OpenAPI 3.1.0 description (35 documented paths) — an agent can generate a client for the platform API from this spec.”
- [probe] https://smithery.ai/docs/mcp“PROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/smithery/): a JSON-RPC initialize POST to https://smithery.ai/docs/mcp answered with serverInfo "Smithery Documentation" — the docs themselves are served over MCP; `npm install @smithery/cli` completed in a throwaway fixture and `smithery --version` printed 4.11.1.”
- [probe] https://smithery.ai/llms.txt“PROBE llms.txt: HTTP 404 at https://smithery.ai/llms.txt”
- [probe] https://smithery.ai/docs.md“PROBE docs-md: HTTP 404 at https://smithery.ai/docs.md”
Download a machine-readable API spec (OpenAPI or equivalent)weight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [probe] https://smithery.ai/docs/openapi.json“PROBE openapi (2026-09-05): GET https://smithery.ai/docs/openapi.json returned HTTP 200 with an OpenAPI 3.1.0 description (35 documented paths) — an agent can generate a client for the platform API from this spec.”
- [probe] https://smithery.ai/openapi.json“PROBE openapi: all candidate paths 404 (https://smithery.ai/openapi.json, https://smithery.ai/swagger.json, https://smithery.ai/api/openapi.json, https://smithery.ai/.well-known/openapi.json)”
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max
- [claimed-docs] https://smithery.ai/docs/use/uplink“Uplink exposes an MCP server running on any machine as a regular Smithery connection.”
- [claimed-docs] https://smithery.ai/docs/use/uplink“You’re developing an MCP server and want to test it against a real agent before publishing.”
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 = 22.0 ÷ 70 × 100 = 31.4
Openness8.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
- [probe] https://registry.smithery.ai/servers?pageSize=3“PROBE registry-api (2026-09-05): GET https://registry.smithery.ai/servers?pageSize=3 with NO API key returned HTTP 200 with a machine-readable server catalog (JSON entries carry displayName, isDeployed, qualifiedName, remote, useCount, verified) — an agent can search the registry keylessly.”
- [probe] https://server.smithery.ai/exa/mcp“PROBE mcp-endpoint (2026-09-05): POST initialize to https://server.smithery.ai/exa/mcp returned HTTP 401 with an OAuth challenge — the hosted MCP endpoint is live and vaults access behind managed auth ({"error":"invalid_token","error_description":"Missing Authorization header"}). server.smithery.ai hosts per-server MCP endpoints with OAuth 2.1 protected-resource metadata.”
- [probe] https://smithery.ai/docs/openapi.json“PROBE openapi (2026-09-05): GET https://smithery.ai/docs/openapi.json returned HTTP 200 with an OpenAPI 3.1.0 description (35 documented paths) — an agent can generate a client for the platform API from this spec.”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery mcp search [term] # Search the Smithery registry smithery mcp add <url> # Add an MCP server connection”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery tool find [query] # Search tools by name or intent smithery tool call <connection> <tool> [args] # Call a tool”
- [claimed-docs] https://smithery.ai/docs/build/index“If you’ve already deployed an MCP server elsewhere, you can publish it directly on Smithery via the URL method.”
- [claimed-docs] https://smithery.ai/docs/concepts/namespaces“Namespaces act as a shared workspace. Resources within a namespace can be managed by anyone with the appropriate API key scoped to that namespace, making them suitable for team collaboration similar to project IDs.”
- [claimed-docs] https://smithery.ai/docs/build/triggers“Triggers let an MCP server surface events from its upstream service. When a consumer activates a trigger via Smithery, Smithery proxies the subscribe call straight through to your server”
Export all of my data in open formats and leaveweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
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/arcadeai-labs/smithery-cli“smithery mcp search [term] # Search the Smithery registry smithery mcp add <url> # Add an MCP server connection”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery tool find [query] # Search tools by name or intent smithery tool call <connection> <tool> [args] # Call a tool”
- [github] https://github.com/arcadeai-labs/smithery-cli“Browse skills on the [Smithery Skills Registry](https://smithery.ai/skills) and install them with the upstream installer”
Self-host the core productweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://smithery.ai/docs/use/uplink“Uplink exposes an MCP server running on any machine as a regular Smithery connection.”
- [probe] https://registry.smithery.ai/servers?pageSize=3“PROBE registry-api (2026-09-05): GET https://registry.smithery.ai/servers?pageSize=3 with NO API key returned HTTP 200 with a machine-readable server catalog (JSON entries carry displayName, isDeployed, qualifiedName, remote, useCount, verified) — an agent can search the registry keylessly.”
- [probe] https://server.smithery.ai/exa/mcp“PROBE mcp-endpoint (2026-09-05): POST initialize to https://server.smithery.ai/exa/mcp returned HTTP 401 with an OAuth challenge — the hosted MCP endpoint is live and vaults access behind managed auth ({"error":"invalid_token","error_description":"Missing Authorization header"}). server.smithery.ai hosts per-server MCP endpoints with OAuth 2.1 protected-resource metadata.”
Openness = 8.4 ÷ 100 × 100 = 8.4
Built-in AI24.0/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
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
Set up automations that run autonomously in the backgroundweight 2
2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max
- [claimed-docs] https://smithery.ai/docs/build/triggers“Triggers let an MCP server surface events from its upstream service. When a consumer activates a trigger via Smithery, Smithery proxies the subscribe call straight through to your server”
Delegate tasks to a built-in AI assistant inside the productweight 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
Operate the product with natural-language commandsweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery tool find [query] # Search tools by name or intent smithery tool call <connection> <tool> [args] # Call a tool”
- [claimed-docs] https://smithery.ai/docs/use/connect“Every MCP server published on Smithery gets a typed TypeScript SDK generated from its tool and trigger schemas.”
- [probe] https://smithery.ai/docs/mcp“PROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/smithery/): a JSON-RPC initialize POST to https://smithery.ai/docs/mcp answered with serverInfo "Smithery Documentation" — the docs themselves are served over MCP; `npm install @smithery/cli` completed in a throwaway fixture and `smithery --version` printed 4.11.1.”
- [github] https://github.com/arcadeai-labs/smithery-cli“smithery mcp search [term] # Search the Smithery registry smithery mcp add <url> # Add an MCP server connection”
Built-in AI = 9.6 ÷ 40 × 100 = 24.0
Automation6.7/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) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 3 (quality) × 0.6 (partial) = 5.4 of 30 max
- [claimed-docs] https://smithery.ai/docs/build/triggers“Triggers let an MCP server surface events from its upstream service. When a consumer activates a trigger via Smithery, Smithery proxies the subscribe call straight through to your server”
Schedule recurring jobs or workflowsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://smithery.ai/docs/build/triggers“Triggers let an MCP server surface events from its upstream service. When a consumer activates a trigger via Smithery, Smithery proxies the subscribe call straight through to your server”
- [claimed-docs] https://smithery.ai/docs/use/uplink“Uplink exposes an MCP server running on any machine as a regular Smithery connection.”
- [claimed-docs] https://smithery.ai/docs/build/index“If you’ve already deployed an MCP server elsewhere, you can publish it directly on Smithery via the URL method.”
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 = 5.4 ÷ 80 × 100 = 6.7