ax-check.com
by Gauge
S
Smithery
smithery.ai
ax-check.com
Checked 29 October 2026
B
68/100
Agents haven’t verified setup
Docs and CLI install are clear, but the pricing page shows no prices
16 of 23 checks passed, including quickstart, CLI, and SDK install steps. The pricing page itself has no plan prices, units, or limits listed.
5 fixes to start with
Concrete changes, backed by what we found.
Publish prices alongside the sales contact.
No Smithery plan prices are stated on the fetched pricing page.
State what each price includes and how overages are billed.
Pricing page shows no units, quotas or usage limits for Smithery plans.
Recorded coding sessions
Same task, 3 models, no smithery.ai account. Recorded 29 October 2026 on Pi.
3 recorded · 1m 20s
1m 20s · recorded
Session findings
Select a finding to see it in context.
›Thinking…
Let me think about Smithery. Smithery is a registry for MCP servers. The user wants to create a simple example using Smithery, wants to know how the pricing mechanism works, and wants me to tell them whether it's easy to manage.
First let me check the environment — there might be network access. Let me look at the repo and check whether there's internet access.
Key consideration: Smithery requires an API key (registration, account). No credentials. Pricing: Smithery is free for MCP server hosting/usage with limits — need to be careful not to fabricate. Let me actually check the documentation online.
First let me explore the sandbox.
pwd; ls -la; echo "---"; env | grep -i -E "smith|api_key|token" | sed 's/=.*/=<redacted>/'; echo "---"; cat README* 2>/dev/null | head -50
/sandbox/repo
/sandbox/repo total 16 drwxr-xr-x 3 root root 4096 Sep 18 08:00 . drwxr-xr-x 7 root root 4096 Oct 29 21:29 .. drwxr-xr-x 8 root root 4096 Sep 24 20:05 .git -rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore --- PI_GATEWAY_API_KEY=<redacted> ---
Recorded tool call
{
"type": "tool_call",
"seq": 3,
"ts": "2026-10-29T21:29:37.698Z",
"name": "bash",
"turn": 1,
"input": {
"command": "pwd; ls -la; echo \"---\"; env | grep -i -E \"smith|api_key|token\" | sed 's/=.*/=<redacted>/'; echo \"---\"; cat README* 2>/dev/null | head -50"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b585a75bbb53c356",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 5,
"ts": "2026-10-29T21:29:37.698Z",
"turn": 1,
"output": {
"content": [
{
"text": "/sandbox/repo\ntotal 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Oct 29 21:29 ..\ndrwxr-xr-x 8 root root 4096 Sep 24 20:05 .git\n-rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore\n---\nPI_GATEWAY_API_KEY=<redacted>\n---\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b585a75bbb53c356",
"is_error": false,
"tool_kind": "shell"
}timeout 15 curl -sS -o /dev/null -w "%{http_code}\n" https://smithery.ai/ ; echo "exit=$?"200
200 exit=0
Recorded tool call
{
"type": "tool_call",
"seq": 4,
"ts": "2026-10-29T21:29:37.698Z",
"name": "bash",
"turn": 1,
"input": {
"command": "timeout 15 curl -sS -o /dev/null -w \"%{http_code}\\n\" https://smithery.ai/ ; echo \"exit=$?\""
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-a8914222ce2bc1be",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 6,
"ts": "2026-10-29T21:29:38.043Z",
"turn": 1,
"output": {
"content": [
{
"text": "200\nexit=0\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-a8914222ce2bc1be",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
I have network access. Let me check Smithery's documentation and pricing information. Also, I'll verify whether Smithery requires an API key for use — yes, smithery.ai requires an API key for connecting to hosted MCP servers (server.smithery.ai/<server>/mcp with Authorization: Bearer <key>).
Let me fetch the documentation and pricing page.
timeout 20 curl -sS https://smithery.ai/pricing | python3 -c " import sys,re,html t=sys.stdin.read() t=re.sub(r'<script.*?</script>','',t,flags=re.S) t=re.sub(r'<style.*?</style>','',t,flags=re.S) t=re.sub(r'<[^>]+>',' ',t) t=html.unescape(t) t=re.sub(r'\s+',' ',t) print(t[:6000]) "
Pricing | Smithery MCPs Skills Docs Pricing Publish Login 📣 Smithery's MCP Proxy and managed identity shut down on October 31. See what's changing Give agents
Pricing | Smithery MCPs Skills Docs Pricing Publish Login 📣 Smithery's MCP Proxy and managed identity shut down on October 31. See what's changing Give agents more agency Resources Documentation Privacy Policy System Status Company Pricing About Connect © 2026 Smithery. All rights reserved.
Recorded tool call
{
"type": "tool_call",
"seq": 9,
"ts": "2026-10-29T21:29:40.479Z",
"name": "bash",
"turn": 1,
"input": {
"command": "timeout 20 curl -sS https://smithery.ai/pricing | python3 -c \"\nimport sys,re,html\nt=sys.stdin.read()\nt=re.sub(r'<script.*?</script>','',t,flags=re.S)\nt=re.sub(r'<style.*?</style>','',t,flags=re.S)\nt=re.sub(r'<[^>]+>',' ',t)\nt=html.unescape(t)\nt=re.sub(r'\\s+',' ',t)\nprint(t[:6000])\n\""
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-8fb048a3b2923294",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 11,
"ts": "2026-10-29T21:29:41.780Z",
"turn": 1,
"output": {
"content": [
{
"text": " Pricing | Smithery MCPs Skills Docs Pricing Publish Login 📣 Smithery's MCP Proxy and managed identity shut down on October 31. See what's changing Give agents more agency Resources Documentation Privacy Policy System Status Company Pricing About Connect © 2026 Smithery. All rights reserved. \n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-8fb048a3b2923294",
"is_error": false,
"tool_kind": "shell"
}timeout 20 curl -sS https://smithery.ai/docs -L | python3 -c " import sys,re,html t=sys.stdin.read() t=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S) t=re.sub(r'<[^>]+>',' ',t); t=html.unescape(t); t=re.sub(r'\s+',' ',t) print(t[:4000]) "
Introduction - Smithery Documentation Documentation Index Fetch the complete documentation index at: /docs/llms.txt Use this file to discover all available pag
Introduction - Smithery Documentation Documentation Index Fetch the complete documentation index at: /docs/llms.txt Use this file to discover all available pages before exploring further. Skip to main content 🎉 Smithery is now a part of Arcade.dev! Read more in our announcement here Smithery Documentation home page Search... ⌘ K Welcome Introduction Connect Connect to MCPs Uplink Token Scoping Deep Linking Listing Your Client Publish Overview Publish Triggers Integrations Vercel AI SDK Integration Concepts What is MCP? Namespaces Smithery CLI Cookbooks Build an OAuth-compatible client API Reference API Reference servers skills tokens namespaces organizations connect Support Discord 🎉 Smithery is now a part of Arcade.dev! Read more in our announcement here Smithery Documentation home page Search... ⌘ K Support Discord Discord Search... Navigation Welcome Introduction Welcome Introduction Copy page Copy page Smithery gives agents more agency by connecting them to the outside world — search the web, query databases, control browsers, reach into business tools, and much more. Copy page Copy page What can I do with Smithery? Smithery connects your AI agent to a growing catalog of tools and integrations — and lets you publish your own for others to use. A few popular ones: Exa - Search the live web, access LinkedIn profiles, do deep research, and more Context7 - Reference the latest docs for most major SDKs and frameworks directly in Cursor or Claude Code Browserbase - Control a remote web browser using Stagehand How does Smithery work? Under the hood, Smithery speaks the Model Context Protocol (MCP). Learn more in our concepts section. Why Smithery? Whether you’re building chatbots, background agents, or AI copilots, Smithery handles the messy parts of plugging agents into external services: Zero OAuth configuration — No redirect URIs, client IDs, or secrets to manage Automatic token refresh — Credentials stay valid without manual intervention Secure credential storage — Encrypted, write-only storage for API keys and tokens Stateless for you — Connection lifecycle managed automatically Quickstarts Connect tools to your agent Add integrations to your app with managed OAuth and credentials Publish an integration Publish your MCP server to Smithery for distribution and observability LLM-Friendly Docs The Smithery documentation is available in multiple LLM-friendly formats: MCP Server The Smithery docs are accessible via MCP at https://smithery.ai/docs/mcp . You can also use the Context7 MCP server to search the Smithery documentation. Agent Scaffolds Reference implementations for building agents with Smithery: Basic Scaffold - Build basic MCP servers ChatGPT App - Build ChatGPT apps Markdown Format Any page can be accessed as markdown by appending .md to the URL. For example, this page becomes https://smithery.ai/docs/index.md . You can also copy any page as markdown directly from the documentation. Was this page helpful? Yes No Connect to MCPs Manage MCP connections with a simple REST API - OAuth, tokens, and sessions handled for you. Next ⌘ I github twitter discord Powered by This documentation is built and hosted on Mintlify, a developer documentation platform On this page Back to top What can I do with Smithery? Why Smithery? Quickstarts LLM-Friendly Docs MCP Server Agent Scaffolds Markdown Format {"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Smithery Documentation","colors":{"primary":"#FF5601","light":"#FFDC4A","dark":"#7B1707"},"logo":{"light":"https://mintcdn.com/smithery/qpxDbsoRMODKTkrQ/logo/logo.svg?fit=max\u0026auto=format\u0026n=qpxDbsoRMODKTkrQ\u0026q=85\u0026s=e8c976cbfecac3c8ad51112af8b9f38d","dark":"https://mintcdn.com/smithery/qpxDbsoRMODKTkrQ/logo/logo.svg?fit=max\u0026auto=format\u0026n=qpxDbsoRMODKTkrQ\u0026q=85\u0026s=e8c976cbfecac3c8ad51112af8b9f38d","href":"https://smithery.ai"},"favicon":"https://mintcdn.com/smithery/qpxDbsoRMODKTkrQ/logo/icon.svg?fit=max\u002
Recorded tool call
{
"type": "tool_call",
"seq": 10,
"ts": "2026-10-29T21:29:40.479Z",
"name": "bash",
"turn": 1,
"input": {
"command": "timeout 20 curl -sS https://smithery.ai/docs -L | python3 -c \"\nimport sys,re,html\nt=sys.stdin.read()\nt=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S)\nt=re.sub(r'<[^>]+>',' ',t); t=html.unescape(t); t=re.sub(r'\\s+',' ',t)\nprint(t[:4000])\n\""
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-97e91c7a2239a450",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 12,
"ts": "2026-10-29T21:29:41.780Z",
"turn": 1,
"output": {
"content": [
{
"text": " Introduction - Smithery Documentation Documentation Index Fetch the complete documentation index at: /docs/llms.txt Use this file to discover all available pages before exploring further. Skip to main content 🎉 Smithery is now a part of Arcade.dev! Read more in our announcement here Smithery Documentation home page Search... ⌘ K Welcome Introduction Connect Connect to MCPs Uplink Token Scoping Deep Linking Listing Your Client Publish Overview Publish Triggers Integrations Vercel AI SDK Integration Concepts What is MCP? Namespaces Smithery CLI Cookbooks Build an OAuth-compatible client API Reference API Reference servers skills tokens namespaces organizations connect Support Discord 🎉 Smithery is now a part of Arcade.dev! Read more in our announcement here Smithery Documentation home page Search... ⌘ K Support Discord Discord Search... Navigation Welcome Introduction Welcome Introduction Copy page Copy page Smithery gives agents more agency by connecting them to the outside world — search the web, query databases, control browsers, reach into business tools, and much more. Copy page Copy page What can I do with Smithery? Smithery connects your AI agent to a growing catalog of tools and integrations — and lets you publish your own for others to use. A few popular ones: Exa - Search the live web, access LinkedIn profiles, do deep research, and more Context7 - Reference the latest docs for most major SDKs and frameworks directly in Cursor or Claude Code Browserbase - Control a remote web browser using Stagehand How does Smithery work? Under the hood, Smithery speaks the Model Context Protocol (MCP). Learn more in our concepts section. Why Smithery? Whether you’re building chatbots, background agents, or AI copilots, Smithery handles the messy parts of plugging agents into external services: Zero OAuth configuration — No redirect URIs, client IDs, or secrets to manage Automatic token refresh — Credentials stay valid without manual intervention Secure credential storage — Encrypted, write-only storage for API keys and tokens Stateless for you — Connection lifecycle managed automatically Quickstarts Connect tools to your agent Add integrations to your app with managed OAuth and credentials Publish an integration Publish your MCP server to Smithery for distribution and observability LLM-Friendly Docs The Smithery documentation is available in multiple LLM-friendly formats: MCP Server The Smithery docs are accessible via MCP at https://smithery.ai/docs/mcp . You can also use the Context7 MCP server to search the Smithery documentation. Agent Scaffolds Reference implementations for building agents with Smithery: Basic Scaffold - Build basic MCP servers ChatGPT App - Build ChatGPT apps Markdown Format Any page can be accessed as markdown by appending .md to the URL. For example, this page becomes https://smithery.ai/docs/index.md . You can also copy any page as markdown directly from the documentation. Was this page helpful? Yes No Connect to MCPs Manage MCP connections with a simple REST API - OAuth, tokens, and sessions handled for you. Next ⌘ I github twitter discord Powered by This documentation is built and hosted on Mintlify, a developer documentation platform On this page Back to top What can I do with Smithery? Why Smithery? Quickstarts LLM-Friendly Docs MCP Server Agent Scaffolds Markdown Format {\"docsConfig\":{\"theme\":\"maple\",\"$schema\":\"https://mintlify.com/docs.json\",\"name\":\"Smithery Documentation\",\"colors\":{\"primary\":\"#FF5601\",\"light\":\"#FFDC4A\",\"dark\":\"#7B1707\"},\"logo\":{\"light\":\"https://mintcdn.com/smithery/qpxDbsoRMODKTkrQ/logo/logo.svg?fit=max\\u0026auto=format\\u0026n=qpxDbsoRMODKTkrQ\\u0026q=85\\u0026s=e8c976cbfecac3c8ad51112af8b9f38d\",\"dark\":\"https://mintcdn.com/smithery/qpxDbsoRMODKTkrQ/logo/logo.svg?fit=max\\u0026auto=format\\u0026n=qpxDbsoRMODKTkrQ\\u0026q=85\\u0026s=e8c976cbfecac3c8ad51112af8b9f38d\",\"href\":\"https://smithery.ai\"},\"favicon\":\"https://mintcdn.com/smithery/qpxDbsoRMODKTkrQ/logo/icon.svg?fit=max\\u002\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-97e91c7a2239a450",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Major discovery: "Smithery's MCP Proxy and managed identity will be shut down on October 31. See what's changing" — and "Smithery has become part of Arcade.dev!"
The current date seems to be around October 29 (the sandbox timestamp shows October 29). In other words, Smithery's MCP proxy was shut down on October 31 (or is scheduled to be shut down). Let's check the changelog / announcements. This is really important: the hosted product the user wants to use may have been deprecated.
Let's fetch llms.txt and the announcement / changelog pages.
date -u; timeout 20 curl -sS https://smithery.ai/docs/llms.txt | head -80
Thu Oct 29 21:29:44 UTC 2026
Thu Oct 29 21:29:44 UTC 2026
# Smithery Documentation
## Docs
- [Introduction](https://smithery.ai/docs/index.md): Smithery gives agents more agency by connecting them to the outside world — search the web, query databases, control browsers, reach into business tools, and much more.
- [Connect to MCPs](https://smithery.ai/docs/use/connect.md): Manage MCP connections with a simple REST API - OAuth, tokens, and sessions handled for you.
- [Uplink](https://smithery.ai/docs/use/uplink.md): Expose a local MCP server as a Smithery connection without deploying it.
- [Token Scoping](https://smithery.ai/docs/use/token-scoping.md): Control which connections and operations a token can access — by user, workspace, or any custom dimension.
- [Deep Linking](https://smithery.ai/docs/use/deep-linking.md): Deep links provide a seamless way to integrate Smithery MCPs into supported clients.
- [Listing Your Client](https://smithery.ai/docs/use/listing_your_client.md): Get your MCP client listed on Smithery for easy discovery and installation by end users
- [Overview](https://smithery.ai/docs/build/index.md): Publish your MCP servers on Smithery for distribution and analytics.
- [Publish](https://smithery.ai/docs/build/publish.md): Publish your MCP server on Smithery for distribution and analytics.
- [Triggers](https://smithery.ai/docs/build/triggers.md): Expose events from your MCP server so consumers can receive them as webhooks.
- [Vercel AI SDK Integration](https://smithery.ai/docs/integrations/vercel_ai_sdk.md): Integrate MCP servers with Vercel AI SDK using Smithery
- [What is MCP?](https://smithery.ai/docs/concepts/what_is_mcp.md): What is MCP? How does it work? What does Smithery do with MCP?
- [Namespaces](https://smithery.ai/docs/concepts/namespaces.md): Namespaces group your servers, connections, and skills under a shared identifier.
- [Smithery CLI](https://smithery.ai/docs/concepts/cli.md): Use the Smithery CLI to search, connect, and manage MCP servers and skills from the command line.
- [Build an OAuth-compatible client](https://smithery.ai/docs/cookbooks/typescript_oauth_client.md): How to build an OAuth client in Typescript using Next.js
- [Health check](https://smithery.ai/docs/api-reference/health-check.md): Check if the service is running
- [Get a server](https://smithery.ai/docs/api-reference/servers/get-a-server.md): Retrieve server details including connections, tools, and security status.
- [Create a server](https://smithery.ai/docs/api-reference/servers/create-a-server.md): Create a new server. Idempotent — returns success if the server already exists and is owned by the caller.
- [Delete a server](https://smithery.ai/docs/api-reference/servers/delete-a-server.md): Permanently delete a server, its releases, and associated resources.
- [Update a server](https://smithery.ai/docs/api-reference/servers/update-a-server.md): Update server metadata such as display name, description, repository, icon, or visibility.
- [Transfer a server](https://smithery.ai/docs/api-reference/servers/transfer-a-server.md): Move a server to another namespace. The caller must have server write access to both the source namespace and the destination namespace.
- [Download server bundle](https://smithery.ai/docs/api-reference/servers/download-server-bundle.md): Download the MCPB bundle for the latest successful stdio release.
- [List releases](https://smithery.ai/docs/api-reference/servers/list-releases.md): List releases ordered by most recent first. Logs are omitted — fetch a specific release to see logs.
- [Publish a server](https://smithery.ai/docs/api-reference/servers/publish-a-server.md): Submit a release via multipart form. Supports hosted (JS module upload), external (URL), and stdio (MCPB bundle) release types.
- [Get a release](https://smithery.ai/docs/api-reference/servers/get-a-release.md): Retrieve release details including status, git metadata, pipeline logs, and MCP endpoint URL.
- [Stream release logs](https://smithery.ai/docs/api-reference/servers/stream-release-logs.md): Real-time SSE stream of release logs and status updates.
- [Resume a release](https://smithery.ai/docs/api-reference/servers/resume-a-release.md): Resume a paused release (e.g. after OAuth authorization). Use id='latest' to resume the most recent one.
- [List runtime logs](https://smithery.ai/docs/api-reference/servers/list-runtime-logs.md): Fetch recent runtime logs grouped by invocation.
- [Get server icon](https://smithery.ai/docs/api-reference/servers/get-server-icon.md): Retrieve the server's icon image. Returns the image directly with appropriate content type.
- [Upload server icon](https://smithery.ai/docs/api-reference/servers/upload-server-icon.md): Upload or replace the server icon. Accepts a single image file via multipart/form-data. Max 1MB. Supported formats: PNG, JPEG, GIF, SVG, WebP.
- [Delete server icon](https://smithery.ai/docs/api-reference/servers/delete-server-icon.md): Remove the server's icon.
- [Infer a tool output schema](https://smithery.ai/docs/api-reference/servers/infer-a-tool-output-schema.md): Infer a best-effort Zod schema from recent successful Tinybird tool outputs. All discovered object fields are marked optional.
- [List all servers](https://smithery.ai/docs/api-reference/servers/list-all-servers.md): Search and browse public MCP servers in the Smithery registry. Supports full-text and semantic search via the `q` parameter, and filtering by deployment status, verification, ownership, and more.
- [List or search skills](https://smithery.ai/docs/api-reference/skills/list-or-search-skills.md): Search and browse reusable prompt-based skills. Supports full-text and semantic search via the `q` parameter, and filtering by category, namespace, or slug.
- [Create a new skill (deprecated)](https://smithery.ai/docs/api-reference/skills/create-a-new-skill-deprecated.md): **Deprecated:** Use PUT /skills/{namespace}/{slug} instead. Create a new skill by linking a GitHub repository containing a SKILL.md file.
- [Get a skill](https://smithery.ai/docs/api-reference/skills/get-a-skill.md): Get a single skill by its namespace and slug.
- [Create or update a skill](https://smithery.ai/docs/api-reference/skills/create-or-update-a-skill.md): Idempotent endpoint to create or update a GitHub-backed skill. Send application/json with `gitUrl`.
- [Delete a skill](https://smithery.ai/docs/api-reference/skills/delete-a-skill.md): Delete a skill by namespace and slug. Requires ownership of the namespace.
- [Create a service token](https://smithery.ai/docs/api-reference/tokens/create-a-service-token.md): Create a service token for machine-to-machine authentication. Accepts API key or bearer token. Optionally apply restrictions.
- [Get user's namespaces or search namespaces](https://smithery.ai/docs/api-reference/namespaces/get-users-namespaces-or-search-namespaces.md): When called without query params, returns the authenticated user's namespaces (backwards compatible). When query params are provided, searches public namespaces with pagination. Use ownerId to filter by owner, hasServers/hasSkills to filter by content, q for text search.
- [Create a new namespace with generated name](https://smithery.ai/docs/api-reference/namespaces/create-a-new-namespace-with-generated-name.md): Create a new namespace with a server-generated human-readable name, owned by the authenticated user
- [Create a new namespace](https://smithery.ai/docs/api-reference/namespaces/create-a-new-namespace.md): Create a new namespace owned by the authenticated user or an organization. This endpoint is idempotent - if the namespace already exists and is owned by the user/org, returns success. Pass organizationId in the request body to create an org-owned namespace.
- [Delete a namespace](https://smithery.ai/docs/api-reference/namespaces/delete-a-namespace.md): Delete a namespace owned by the authenticated user. The namespace must not contain any servers. Skills and connections in the namespace will be deleted automatically.
- [Create a server under a namespace (deprecated)](https://smithery.ai/docs/api-reference/namespaces/create-a-server-under-a-namespace-deprecated.md): **Deprecated:** Use PUT /servers/{namespace}/{server} instead. Create a new server under the specified namespace. This endpoint is idempotent.
- [List team API keys](https://smithery.ai/docs/api-reference/organizations/list-team-api-keys.md): Returns all API keys belonging to the organization. Requires admin role. Key values are not included in the response.
- [Create a team API key](https://smithery.ai/docs/api-reference/organizations/create-a-team-api-key.md): Creates an API key owned by the organization. Requires admin role.
- [Revoke a team API key](https://smithery.ai/docs/api-reference/organizations/revoke-a-team-api-key.md): Deletes an API key belonging to the organization. Requires admin role.
- [List connections](https://smithery.ai/docs/api-reference/connect/list-connections.md): List all connections in a namespace. Supports filtering by metadata using `metadata.{key}={value}` query params.
- [Create connection](https://smithery.ai/docs/api-reference/connect/create-connection.md): Create a new MCP connection with an auto-generated ID. Requires API key and namespace ownership.
- [List triggers](https://smithery.ai/docs/api-reference/connect/list-triggers.md): List trigger types exposed by a connection.
- [Get trigger](https://smithery.ai/docs/api-reference/connect/get-trigger.md): Get the schema for a single trigger type.
- [Subscribe to trigger](https://smithery.ai/docs/api-reference/connect/subscribe-to-trigger.md): Subscribe to (or refresh) a trigger. Supplying the same (params, delivery.url) refreshes the TTL and may rotate the secret.
- [Unsubscribe from trigger](https://smithery.ai/docs/api-reference/connect/unsubscribe-from-trigger.md): Unsubscribe by subscription key (params + delivery.url). Eager teardown — subscriptions also expire naturally on TTL.
- [Get connection](https://smithery.ai/docs/api-reference/connect/get-connection.md): Get details for a specific connection. Requires service token with connections:read scope.
- [Create or update connection](https://smithery.ai/docs/api-reference/connect/create-or-update-connection.md): Create or update an MCP connection with the given ID. `server` is the Smithery registry qualified name; `mcpUrl` is for custom MCP URLs. One of them is required when creating a new HTTP connection, but optional when updating. Returns 409 if a different target URL is provided, except while the connec…
- [Delete connection](https://smithery.ai/docs/api-reference/connect/delete-connection.md): Delete a connection and terminate its MCP session. Requires API key and namespace ownership.
- [List tools across a namespace](https://smithery.ai/docs/api-reference/connect/list-tools-across-a-namespace.md): List tools for every connection in a namespace in one response. Each connection is wrapped in an envelope so a failure on one upstream doesn't fail the request. Skips connections in `auth_required`/`input_required` states without calling the upstream.
- [List tools](https://smithery.ai/docs/api-reference/connect/list-tools.md): List tools exposed by a connection.
- [Get tool](https://smithery.ai/docs/api-reference/connect/get-tool.md): Get one tool or list tools under a slash-separated category.
- [Call tool](https://smithery.ai/docs/api-reference/connect/call-tool.md): Invoke a tool with JSON arguments.
## OpenAPI Specs
- [openapi.documented](https://app.stainless.com/api/spec/documented/smithery/openapi.documented.yml)
- [openapi](https://smithery.ai/docs/openapi.json)
This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.Recorded tool call
{
"type": "tool_call",
"seq": 15,
"ts": "2026-10-29T21:29:44.250Z",
"name": "bash",
"turn": 1,
"input": {
"command": "date -u; timeout 20 curl -sS https://smithery.ai/docs/llms.txt | head -80"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-aa3acc6c26573c7b",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 17,
"ts": "2026-10-29T21:29:45.628Z",
"turn": 1,
"output": {
"content": [
{
"text": "Thu Oct 29 21:29:44 UTC 2026\n# Smithery Documentation\n\n## Docs\n\n- [Introduction](https://smithery.ai/docs/index.md): Smithery gives agents more agency by connecting them to the outside world — search the web, query databases, control browsers, reach into business tools, and much more.\n- [Connect to MCPs](https://smithery.ai/docs/use/connect.md): Manage MCP connections with a simple REST API - OAuth, tokens, and sessions handled for you.\n- [Uplink](https://smithery.ai/docs/use/uplink.md): Expose a local MCP server as a Smithery connection without deploying it.\n- [Token Scoping](https://smithery.ai/docs/use/token-scoping.md): Control which connections and operations a token can access — by user, workspace, or any custom dimension.\n- [Deep Linking](https://smithery.ai/docs/use/deep-linking.md): Deep links provide a seamless way to integrate Smithery MCPs into supported clients.\n- [Listing Your Client](https://smithery.ai/docs/use/listing_your_client.md): Get your MCP client listed on Smithery for easy discovery and installation by end users\n- [Overview](https://smithery.ai/docs/build/index.md): Publish your MCP servers on Smithery for distribution and analytics.\n- [Publish](https://smithery.ai/docs/build/publish.md): Publish your MCP server on Smithery for distribution and analytics.\n- [Triggers](https://smithery.ai/docs/build/triggers.md): Expose events from your MCP server so consumers can receive them as webhooks.\n- [Vercel AI SDK Integration](https://smithery.ai/docs/integrations/vercel_ai_sdk.md): Integrate MCP servers with Vercel AI SDK using Smithery\n- [What is MCP?](https://smithery.ai/docs/concepts/what_is_mcp.md): What is MCP? How does it work? What does Smithery do with MCP?\n- [Namespaces](https://smithery.ai/docs/concepts/namespaces.md): Namespaces group your servers, connections, and skills under a shared identifier.\n- [Smithery CLI](https://smithery.ai/docs/concepts/cli.md): Use the Smithery CLI to search, connect, and manage MCP servers and skills from the command line.\n- [Build an OAuth-compatible client](https://smithery.ai/docs/cookbooks/typescript_oauth_client.md): How to build an OAuth client in Typescript using Next.js\n- [Health check](https://smithery.ai/docs/api-reference/health-check.md): Check if the service is running\n- [Get a server](https://smithery.ai/docs/api-reference/servers/get-a-server.md): Retrieve server details including connections, tools, and security status.\n- [Create a server](https://smithery.ai/docs/api-reference/servers/create-a-server.md): Create a new server. Idempotent — returns success if the server already exists and is owned by the caller.\n- [Delete a server](https://smithery.ai/docs/api-reference/servers/delete-a-server.md): Permanently delete a server, its releases, and associated resources.\n- [Update a server](https://smithery.ai/docs/api-reference/servers/update-a-server.md): Update server metadata such as display name, description, repository, icon, or visibility.\n- [Transfer a server](https://smithery.ai/docs/api-reference/servers/transfer-a-server.md): Move a server to another namespace. The caller must have server write access to both the source namespace and the destination namespace.\n- [Download server bundle](https://smithery.ai/docs/api-reference/servers/download-server-bundle.md): Download the MCPB bundle for the latest successful stdio release.\n- [List releases](https://smithery.ai/docs/api-reference/servers/list-releases.md): List releases ordered by most recent first. Logs are omitted — fetch a specific release to see logs.\n- [Publish a server](https://smithery.ai/docs/api-reference/servers/publish-a-server.md): Submit a release via multipart form. Supports hosted (JS module upload), external (URL), and stdio (MCPB bundle) release types.\n- [Get a release](https://smithery.ai/docs/api-reference/servers/get-a-release.md): Retrieve release details including status, git metadata, pipeline logs, and MCP endpoint URL.\n- [Stream release logs](https://smithery.ai/docs/api-reference/servers/stream-release-logs.md): Real-time SSE stream of release logs and status updates.\n- [Resume a release](https://smithery.ai/docs/api-reference/servers/resume-a-release.md): Resume a paused release (e.g. after OAuth authorization). Use id='latest' to resume the most recent one.\n- [List runtime logs](https://smithery.ai/docs/api-reference/servers/list-runtime-logs.md): Fetch recent runtime logs grouped by invocation.\n- [Get server icon](https://smithery.ai/docs/api-reference/servers/get-server-icon.md): Retrieve the server's icon image. Returns the image directly with appropriate content type.\n- [Upload server icon](https://smithery.ai/docs/api-reference/servers/upload-server-icon.md): Upload or replace the server icon. Accepts a single image file via multipart/form-data. Max 1MB. Supported formats: PNG, JPEG, GIF, SVG, WebP.\n- [Delete server icon](https://smithery.ai/docs/api-reference/servers/delete-server-icon.md): Remove the server's icon.\n- [Infer a tool output schema](https://smithery.ai/docs/api-reference/servers/infer-a-tool-output-schema.md): Infer a best-effort Zod schema from recent successful Tinybird tool outputs. All discovered object fields are marked optional.\n- [List all servers](https://smithery.ai/docs/api-reference/servers/list-all-servers.md): Search and browse public MCP servers in the Smithery registry. Supports full-text and semantic search via the `q` parameter, and filtering by deployment status, verification, ownership, and more.\n- [List or search skills](https://smithery.ai/docs/api-reference/skills/list-or-search-skills.md): Search and browse reusable prompt-based skills. Supports full-text and semantic search via the `q` parameter, and filtering by category, namespace, or slug.\n- [Create a new skill (deprecated)](https://smithery.ai/docs/api-reference/skills/create-a-new-skill-deprecated.md): **Deprecated:** Use PUT /skills/{namespace}/{slug} instead. Create a new skill by linking a GitHub repository containing a SKILL.md file.\n- [Get a skill](https://smithery.ai/docs/api-reference/skills/get-a-skill.md): Get a single skill by its namespace and slug.\n- [Create or update a skill](https://smithery.ai/docs/api-reference/skills/create-or-update-a-skill.md): Idempotent endpoint to create or update a GitHub-backed skill. Send application/json with `gitUrl`.\n- [Delete a skill](https://smithery.ai/docs/api-reference/skills/delete-a-skill.md): Delete a skill by namespace and slug. Requires ownership of the namespace.\n- [Create a service token](https://smithery.ai/docs/api-reference/tokens/create-a-service-token.md): Create a service token for machine-to-machine authentication. Accepts API key or bearer token. Optionally apply restrictions.\n- [Get user's namespaces or search namespaces](https://smithery.ai/docs/api-reference/namespaces/get-users-namespaces-or-search-namespaces.md): When called without query params, returns the authenticated user's namespaces (backwards compatible). When query params are provided, searches public namespaces with pagination. Use ownerId to filter by owner, hasServers/hasSkills to filter by content, q for text search.\n- [Create a new namespace with generated name](https://smithery.ai/docs/api-reference/namespaces/create-a-new-namespace-with-generated-name.md): Create a new namespace with a server-generated human-readable name, owned by the authenticated user\n- [Create a new namespace](https://smithery.ai/docs/api-reference/namespaces/create-a-new-namespace.md): Create a new namespace owned by the authenticated user or an organization. This endpoint is idempotent - if the namespace already exists and is owned by the user/org, returns success. Pass organizationId in the request body to create an org-owned namespace.\n- [Delete a namespace](https://smithery.ai/docs/api-reference/namespaces/delete-a-namespace.md): Delete a namespace owned by the authenticated user. The namespace must not contain any servers. Skills and connections in the namespace will be deleted automatically.\n- [Create a server under a namespace (deprecated)](https://smithery.ai/docs/api-reference/namespaces/create-a-server-under-a-namespace-deprecated.md): **Deprecated:** Use PUT /servers/{namespace}/{server} instead. Create a new server under the specified namespace. This endpoint is idempotent.\n- [List team API keys](https://smithery.ai/docs/api-reference/organizations/list-team-api-keys.md): Returns all API keys belonging to the organization. Requires admin role. Key values are not included in the response.\n- [Create a team API key](https://smithery.ai/docs/api-reference/organizations/create-a-team-api-key.md): Creates an API key owned by the organization. Requires admin role.\n- [Revoke a team API key](https://smithery.ai/docs/api-reference/organizations/revoke-a-team-api-key.md): Deletes an API key belonging to the organization. Requires admin role.\n- [List connections](https://smithery.ai/docs/api-reference/connect/list-connections.md): List all connections in a namespace. Supports filtering by metadata using `metadata.{key}={value}` query params.\n- [Create connection](https://smithery.ai/docs/api-reference/connect/create-connection.md): Create a new MCP connection with an auto-generated ID. Requires API key and namespace ownership.\n- [List triggers](https://smithery.ai/docs/api-reference/connect/list-triggers.md): List trigger types exposed by a connection.\n- [Get trigger](https://smithery.ai/docs/api-reference/connect/get-trigger.md): Get the schema for a single trigger type.\n- [Subscribe to trigger](https://smithery.ai/docs/api-reference/connect/subscribe-to-trigger.md): Subscribe to (or refresh) a trigger. Supplying the same (params, delivery.url) refreshes the TTL and may rotate the secret.\n- [Unsubscribe from trigger](https://smithery.ai/docs/api-reference/connect/unsubscribe-from-trigger.md): Unsubscribe by subscription key (params + delivery.url). Eager teardown — subscriptions also expire naturally on TTL.\n- [Get connection](https://smithery.ai/docs/api-reference/connect/get-connection.md): Get details for a specific connection. Requires service token with connections:read scope.\n- [Create or update connection](https://smithery.ai/docs/api-reference/connect/create-or-update-connection.md): Create or update an MCP connection with the given ID. `server` is the Smithery registry qualified name; `mcpUrl` is for custom MCP URLs. One of them is required when creating a new HTTP connection, but optional when updating. Returns 409 if a different target URL is provided, except while the connec…\n- [Delete connection](https://smithery.ai/docs/api-reference/connect/delete-connection.md): Delete a connection and terminate its MCP session. Requires API key and namespace ownership.\n- [List tools across a namespace](https://smithery.ai/docs/api-reference/connect/list-tools-across-a-namespace.md): List tools for every connection in a namespace in one response. Each connection is wrapped in an envelope so a failure on one upstream doesn't fail the request. Skips connections in `auth_required`/`input_required` states without calling the upstream.\n- [List tools](https://smithery.ai/docs/api-reference/connect/list-tools.md): List tools exposed by a connection.\n- [Get tool](https://smithery.ai/docs/api-reference/connect/get-tool.md): Get one tool or list tools under a slash-separated category.\n- [Call tool](https://smithery.ai/docs/api-reference/connect/call-tool.md): Invoke a tool with JSON arguments.\n\n## OpenAPI Specs\n\n- [openapi.documented](https://app.stainless.com/api/spec/documented/smithery/openapi.documented.yml)\n- [openapi](https://smithery.ai/docs/openapi.json)\n\n\nThis documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-aa3acc6c26573c7b",
"is_error": false,
"tool_kind": "shell"
}timeout 20 curl -sS -L https://smithery.ai/changelog 2>/dev/null | python3 -c " import sys,re,html t=sys.stdin.read() t=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S) t=re.sub(r'<[^>]+>',' ',t); t=html.unescape(t); t=re.sub(r'\s+',' ',t); print(t[:4000]) "; echo "=== announcements ==="; timeout 20 curl -sS -L https://smithery.ai/blog 2>/dev/null | python3 -c " import sys,re,html t=sys.stdin.read() t=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S) t=re.sub(r'<[^>]+>',' ',t); t=html.unescape(t); t=re.sub(r'\s+',' ',t); print(t[:3000]) "
Smithery - Connect agents to services in minutes 715 MCPs Skills Docs Pricing Publish Login 404: Page Not Found Feel that something is off? Contact us Give age
Smithery - Connect agents to services in minutes 715 MCPs Skills Docs Pricing Publish Login 404: Page Not Found Feel that something is off? Contact us Give agents more agency Resources Documentation Privacy Policy System Status Company Pricing About Connect © 2026 Smithery. All rights reserved. These ones actually exist Brave Search brave · 87.57k uses Search the web with Brave's independent index — web, news, images, and videos. Bring your own subscription token from the Brave Search API dashboard. Add to toolbox Gmail gmail · 57.73k uses Read, search, and send Gmail messages. Manage drafts, threads, and labels; reply, forward, archive, trash, report spam, and triage your inbox. Add to toolbox OneSignal onesignal/onesignal · 22.49k uses OneSignal is a customer engagement platform that lets you send targeted push notifications, emails, SMS, and in-app messages, manage audiences, and track campaign performance. With the OneSignal MCP, manage your messaging directly from your AI assistant. Send push notifications, emails, and SMS by simply describing your audience and message. Check campaign delivery stats, build audience segments, manage templates, and handle user subscriptions all through conversation. Add to toolbox === announcements === The deployment could not be found on Vercel. DEPLOYMENT_NOT_FOUND iad1:iad1::jfghk-1793309384986-847252145ea6
Recorded tool call
{
"type": "tool_call",
"seq": 16,
"ts": "2026-10-29T21:29:44.250Z",
"name": "bash",
"turn": 1,
"input": {
"command": "timeout 20 curl -sS -L https://smithery.ai/changelog 2>/dev/null | python3 -c \"\nimport sys,re,html\nt=sys.stdin.read()\nt=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S)\nt=re.sub(r'<[^>]+>',' ',t); t=html.unescape(t); t=re.sub(r'\\s+',' ',t); print(t[:4000])\n\"; echo \"=== announcements ===\"; timeout 20 curl -sS -L https://smithery.ai/blog 2>/dev/null | python3 -c \"\nimport sys,re,html\nt=sys.stdin.read()\nt=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S)\nt=re.sub(r'<[^>]+>',' ',t); t=html.unescape(t); t=re.sub(r'\\s+',' ',t); print(t[:3000])\n\""
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b7e9d528f4affecd",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 18,
"ts": "2026-10-29T21:29:45.628Z",
"turn": 1,
"output": {
"content": [
{
"text": " Smithery - Connect agents to services in minutes 715 MCPs Skills Docs Pricing Publish Login 404: Page Not Found Feel that something is off? Contact us Give agents more agency Resources Documentation Privacy Policy System Status Company Pricing About Connect © 2026 Smithery. All rights reserved. These ones actually exist Brave Search brave · 87.57k uses Search the web with Brave's independent index — web, news, images, and videos. Bring your own subscription token from the Brave Search API dashboard. Add to toolbox Gmail gmail · 57.73k uses Read, search, and send Gmail messages. Manage drafts, threads, and labels; reply, forward, archive, trash, report spam, and triage your inbox. Add to toolbox OneSignal onesignal/onesignal · 22.49k uses OneSignal is a customer engagement platform that lets you send targeted push notifications, emails, SMS, and in-app messages, manage audiences, and track campaign performance. With the OneSignal MCP, manage your messaging directly from your AI assistant. Send push notifications, emails, and SMS by simply describing your audience and message. Check campaign delivery stats, build audience segments, manage templates, and handle user subscriptions all through conversation. Add to toolbox \n=== announcements ===\nThe deployment could not be found on Vercel. DEPLOYMENT_NOT_FOUND iad1:iad1::jfghk-1793309384986-847252145ea6 \n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b7e9d528f4affecd",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Current date: October 29, 2026. The banner says "Smithery's MCP Proxy and Managed Identity will be shut down on October 31," which is 2 days from now. Also, "Smithery is now part of Arcade.dev."
So, the hosted proxy is being shut down within 2 days. However, the documentation still lists the Connect API. Let me check what specifically is being shut down and what remains. Let me look for the announcement about the changes. There should probably be a page like smithery.ai/docs/... or a blog post. The banner says "See what's changing" — let me grab that link from the pricing page HTML.
Also, pricing is needed too: the contents of the pricing page were mostly navigation only — probably rendered client-side. Let me try fetching the raw HTML and looking for JSON content.
Let me also check the Connect documentation.
timeout 20 curl -sS https://smithery.ai/pricing -o /tmp/pricing.html; wc -c /tmp/pricing.html; grep -o 'href="[^"]*"' /tmp/pricing.html | sort -u | head -40; echo "=== whats changing link ==="; grep -o -E 'https?://[^"]*(shut|change|arcade|blog|announce)[^"]*' /tmp/pricing.html | sort -u | head -20
122023 /tmp/pricing.html
122023 /tmp/pricing.html href="/" href="/_next/static/chunks/1cc1a528181e539e.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" href="/_next/static/chunks/8491e5725b03c0ce.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" href="/_next/static/chunks/c3d5a6be71213922.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" href="/_next/static/media/gt_pantheon_micro_medium-s.p.f530ffb4.woff2" href="/_next/static/media/gt_pantheon_micro_regular-s.p.65457f4e.woff2" href="/about" href="/apple-touch-icon.png" href="/docs" href="/favicon.ico" href="/future" href="/login?redirect=%2Fpricing" href="/logos/logo.svg" href="/logos/symbol.svg" href="/manifest.webmanifest" href="/pricing" href="/privacy" href="/servers" href="/skills" href="https://discord.gg/sKd9uycgH9" href="https://github.com/smithery-ai" href="https://status.smithery.ai" href="https://x.com/SmitheryDotAi" === whats changing link ===
Recorded tool call
{
"type": "tool_call",
"seq": 21,
"ts": "2026-10-29T21:29:48.520Z",
"name": "bash",
"turn": 1,
"input": {
"command": "timeout 20 curl -sS https://smithery.ai/pricing -o /tmp/pricing.html; wc -c /tmp/pricing.html; grep -o 'href=\"[^\"]*\"' /tmp/pricing.html | sort -u | head -40; echo \"=== whats changing link ===\"; grep -o -E 'https?://[^\"]*(shut|change|arcade|blog|announce)[^\"]*' /tmp/pricing.html | sort -u | head -20"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-92e997ad6391a49d",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 24,
"ts": "2026-10-29T21:29:49.392Z",
"turn": 1,
"output": {
"content": [
{
"text": "122023 /tmp/pricing.html\nhref=\"/\"\nhref=\"/_next/static/chunks/1cc1a528181e539e.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"\nhref=\"/_next/static/chunks/8491e5725b03c0ce.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"\nhref=\"/_next/static/chunks/c3d5a6be71213922.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"\nhref=\"/_next/static/media/gt_pantheon_micro_medium-s.p.f530ffb4.woff2\"\nhref=\"/_next/static/media/gt_pantheon_micro_regular-s.p.65457f4e.woff2\"\nhref=\"/about\"\nhref=\"/apple-touch-icon.png\"\nhref=\"/docs\"\nhref=\"/favicon.ico\"\nhref=\"/future\"\nhref=\"/login?redirect=%2Fpricing\"\nhref=\"/logos/logo.svg\"\nhref=\"/logos/symbol.svg\"\nhref=\"/manifest.webmanifest\"\nhref=\"/pricing\"\nhref=\"/privacy\"\nhref=\"/servers\"\nhref=\"/skills\"\nhref=\"https://discord.gg/sKd9uycgH9\"\nhref=\"https://github.com/smithery-ai\"\nhref=\"https://status.smithery.ai\"\nhref=\"https://x.com/SmitheryDotAi\"\n=== whats changing link ===\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-92e997ad6391a49d",
"is_error": false,
"tool_kind": "shell"
}timeout 20 curl -sS https://smithery.ai/docs/use/connect.md | head -200
> ## Documentation Index
> ## Documentation Index
> Fetch the complete documentation index at: https://smithery.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Connect to MCPs
> Manage MCP connections with a simple REST API - OAuth, tokens, and sessions handled for you.
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.
The auth and credential layer is powered by the open-source [agent.pw](https://agent.pw).
## Why Smithery?
Smithery lets you add MCP server integrations to your app without managing the complexity yourself:
* **Zero OAuth configuration** — No redirect URIs, client IDs, or secrets to configure. Smithery maintains OAuth apps for popular integrations.
* **Automatic token refresh** — Tokens refresh automatically before expiry. If a refresh fails, the connection status changes to `auth_required`.
* **Secure credential storage** — Credentials are encrypted and write-only. They can be used to make requests but never read back.
* **Stateless for you** — Smithery manages connection lifecycle. Make requests without worrying about reconnects, keepalives, or session state.
* **Scoped service tokens** — Mint short-lived tokens for browser or mobile clients to call tools directly, scoped to specific users and namespaces.
## Quick Start
**CLI**
```bash theme={null}
# 1. Log in to Smithery
smithery auth login
# 2. Connect to the Exa search server
smithery mcp add exa --id exa
# 3. List available tools
smithery tool list exa
# 4. Call a tool
smithery tool call exa search '{"query": "latest news about MCP"}'
```
**AI SDK**
```bash theme={null}
npm install @smithery/api @ai-sdk/mcp ai @ai-sdk/anthropic
```
```typescript theme={null}
import { createMCPClient } from '@ai-sdk/mcp';
import { generateText } from 'ai';
import { anthropic } from '@ai-sdk/anthropic';
import { createConnection } from '@smithery/api/mcp';
const { transport } = await createConnection({
mcpUrl: 'https://mcp.exa.ai',
});
const mcpClient = await createMCPClient({ transport });
const tools = await mcpClient.tools();
const { text } = await generateText({
model: anthropic('claude-sonnet-4-20250514'),
tools,
prompt: 'Search for the latest news about MCP.',
});
await mcpClient.close();
```
**MCP TypeScript SDK**
```bash theme={null}
npm install @smithery/api @modelcontextprotocol/sdk
```
```typescript theme={null}
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { createConnection } from '@smithery/api/mcp';
const { transport } = await createConnection({
mcpUrl: 'https://mcp.exa.ai',
});
// Connect using the MCP SDK Client
const mcpClient = new Client({ name: 'my-app', version: '1.0.0' });
await mcpClient.connect(transport);
// Use the MCP SDK's ergonomic API
const { tools } = await mcpClient.listTools();
const result = await mcpClient.callTool({
name: 'search',
arguments: { query: 'latest news about MCP' }
});
```
**Typed SDK**
> [!WARNING]
>
> Typed SDKs are in preview. Breaking changes may happen without notice.
Every MCP server published on Smithery gets a typed TypeScript SDK generated from its tool and trigger schemas. Use it when you already have a live Smithery connection and want typed tool calls instead of string-based `callTool` calls. Create or reuse a connection first, then pass its `namespace` and `connectionId`.
```bash theme={null}
npm install https://pkg.smithery.ai/exa
```
```typescript theme={null}
import { Exa } from '@smithery/exa';
const exa = new Exa({
namespace: 'my-app',
connectionId: 'exa',
});
const result = await exa.tools.search({
query: 'latest news about MCP',
});
```
For tools with output schemas, the typed SDK returns `structuredContent` typed from that schema. If a server returns structured data as a JSON or XML string, the SDK parses it first, converts XML into JSON-shaped data, and validates the parsed value before returning the result.
SDKs are served from `pkg.smithery.ai` paths shaped like `namespace/slug`. The class name is the PascalCase form of the slug, so `smithery-ai/github` exports `Github`; if there is no slug, the namespace becomes the class name, like `exa` exporting `Exa`.
```typescript theme={null}
// Use callTool when a tool was added after your SDK was generated.
const result = await exa.callTool('search', { query: 'latest news about MCP' });
```
## Servers with Configuration
Some MCP servers require configuration like API keys or project IDs. How you pass each config value depends on the server's schema — some values go as **headers** (typically API keys), while others go as **query parameters** in the MCP URL.
Check the server's page on [smithery.ai](https://smithery.ai) to see what configuration it requires and where each value should go.
**CLI**
```bash theme={null}
# Add a server with config (API key as header, project ID as query param)
smithery mcp add \
'@browserbasehq/mcp-browserbase?browserbaseProjectId=your-project-id' \
--id my-browserbase \
--headers '{"browserbaseApiKey": "your-browserbase-api-key"}'
```
**TypeScript**
```typescript theme={null}
import Smithery from '@smithery/api';
import { createConnection } from '@smithery/api/mcp';
const smithery = new Smithery();
// 1. Create a connection with the server's config
// - API keys go in `headers`
// - Other config goes as query params in `mcpUrl`
const conn = await smithery.connections.set('my-browserbase', {
namespace: 'my-app',
mcpUrl: 'https://mcp.browserbase.com/mcp?browserbaseProjectId=your-project-id',
headers: {
'browserbaseApiKey': 'your-browserbase-api-key',
},
});
// conn.status.state === "connected" — ready to use immediately
// 2. Get a transport for the connection
const { transport } = await createConnection({
client: smithery,
namespace: 'my-app',
connectionId: conn.connectionId,
});
```
**cURL**
```bash theme={null}
curl -X POST "https://smithery.run/my-app" \
-H "Authorization: Bearer $SMITHERY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mcpUrl": "https://mcp.browserbase.com/mcp?browserbaseProjectId=your-project-id",
"headers": {
"browserbaseApiKey": "your-browserbase-api-key"
}
}'
```
Unlike OAuth-based servers that return `auth_required`, servers configured with API keys return `connected` immediately when all required fields are provided upfront. If any required fields are missing, the connection returns `input_required` with the config schema and missing fields — see [Handling Configuration](#handling-configuration-input_required) below.
> [!NOTE]
>
> Each server's config schema specifies whether a field is passed as a **header** or **query parameter** via the `x-from` metadata. See [Session Configuration](https://smithery.ai/docs/build/session-config) for details on how servers declare their config transport.
## Multi-User Setup
When your agent serves multiple users, you'll need to track which connections belong to which user. Use the `metadata` field to associate connections with your users, then filter by metadata to retrieve a specific user's connections.
### 1. Create a Connection for a User
When a user wants to connect an integration (e.g., GitHub), create a connection with their `userId` in metadata:
curl: (23) Failure writing output to destination
Recorded tool call
{
"type": "tool_call",
"seq": 22,
"ts": "2026-10-29T21:29:48.520Z",
"name": "bash",
"turn": 1,
"input": {
"command": "timeout 20 curl -sS https://smithery.ai/docs/use/connect.md | head -200"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-bfbc0e00fc1ca154",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 23,
"ts": "2026-10-29T21:29:49.392Z",
"turn": 1,
"output": {
"content": [
{
"text": "> ## Documentation Index\n> Fetch the complete documentation index at: https://smithery.ai/docs/llms.txt\n> Use this file to discover all available pages before exploring further.\n\n# Connect to MCPs\n\n> Manage MCP connections with a simple REST API - OAuth, tokens, and sessions handled for you.\n\nSmithery 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.\n\nThe auth and credential layer is powered by the open-source [agent.pw](https://agent.pw).\n\n## Why Smithery?\n\nSmithery lets you add MCP server integrations to your app without managing the complexity yourself:\n\n* **Zero OAuth configuration** — No redirect URIs, client IDs, or secrets to configure. Smithery maintains OAuth apps for popular integrations.\n* **Automatic token refresh** — Tokens refresh automatically before expiry. If a refresh fails, the connection status changes to `auth_required`.\n* **Secure credential storage** — Credentials are encrypted and write-only. They can be used to make requests but never read back.\n* **Stateless for you** — Smithery manages connection lifecycle. Make requests without worrying about reconnects, keepalives, or session state.\n* **Scoped service tokens** — Mint short-lived tokens for browser or mobile clients to call tools directly, scoped to specific users and namespaces.\n\n## Quick Start\n\n**CLI**\n\n```bash theme={null}\n# 1. Log in to Smithery\nsmithery auth login\n\n# 2. Connect to the Exa search server\nsmithery mcp add exa --id exa\n\n# 3. List available tools\nsmithery tool list exa\n\n# 4. Call a tool\nsmithery tool call exa search '{\"query\": \"latest news about MCP\"}'\n```\n\n**AI SDK**\n\n```bash theme={null}\nnpm install @smithery/api @ai-sdk/mcp ai @ai-sdk/anthropic\n```\n\n```typescript theme={null}\nimport { createMCPClient } from '@ai-sdk/mcp';\nimport { generateText } from 'ai';\nimport { anthropic } from '@ai-sdk/anthropic';\nimport { createConnection } from '@smithery/api/mcp';\n\nconst { transport } = await createConnection({\n mcpUrl: 'https://mcp.exa.ai',\n});\n\nconst mcpClient = await createMCPClient({ transport });\nconst tools = await mcpClient.tools();\n\nconst { text } = await generateText({\n model: anthropic('claude-sonnet-4-20250514'),\n tools,\n prompt: 'Search for the latest news about MCP.',\n});\n\nawait mcpClient.close();\n```\n\n**MCP TypeScript SDK**\n\n```bash theme={null}\nnpm install @smithery/api @modelcontextprotocol/sdk\n```\n\n```typescript theme={null}\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { createConnection } from '@smithery/api/mcp';\n\nconst { transport } = await createConnection({\n mcpUrl: 'https://mcp.exa.ai',\n});\n\n// Connect using the MCP SDK Client\nconst mcpClient = new Client({ name: 'my-app', version: '1.0.0' });\nawait mcpClient.connect(transport);\n\n// Use the MCP SDK's ergonomic API\nconst { tools } = await mcpClient.listTools();\nconst result = await mcpClient.callTool({\n name: 'search',\n arguments: { query: 'latest news about MCP' }\n});\n```\n\n**Typed SDK**\n\n> [!WARNING]\n>\n> Typed SDKs are in preview. Breaking changes may happen without notice.\n\nEvery MCP server published on Smithery gets a typed TypeScript SDK generated from its tool and trigger schemas. Use it when you already have a live Smithery connection and want typed tool calls instead of string-based `callTool` calls. Create or reuse a connection first, then pass its `namespace` and `connectionId`.\n\n```bash theme={null}\nnpm install https://pkg.smithery.ai/exa\n```\n\n```typescript theme={null}\nimport { Exa } from '@smithery/exa';\n\nconst exa = new Exa({\n namespace: 'my-app',\n connectionId: 'exa',\n});\n\nconst result = await exa.tools.search({\n query: 'latest news about MCP',\n});\n```\n\nFor tools with output schemas, the typed SDK returns `structuredContent` typed from that schema. If a server returns structured data as a JSON or XML string, the SDK parses it first, converts XML into JSON-shaped data, and validates the parsed value before returning the result.\n\nSDKs are served from `pkg.smithery.ai` paths shaped like `namespace/slug`. The class name is the PascalCase form of the slug, so `smithery-ai/github` exports `Github`; if there is no slug, the namespace becomes the class name, like `exa` exporting `Exa`.\n\n```typescript theme={null}\n// Use callTool when a tool was added after your SDK was generated.\nconst result = await exa.callTool('search', { query: 'latest news about MCP' });\n```\n\n## Servers with Configuration\n\nSome MCP servers require configuration like API keys or project IDs. How you pass each config value depends on the server's schema — some values go as **headers** (typically API keys), while others go as **query parameters** in the MCP URL.\n\nCheck the server's page on [smithery.ai](https://smithery.ai) to see what configuration it requires and where each value should go.\n\n**CLI**\n\n```bash theme={null}\n# Add a server with config (API key as header, project ID as query param)\nsmithery mcp add \\\n '@browserbasehq/mcp-browserbase?browserbaseProjectId=your-project-id' \\\n --id my-browserbase \\\n --headers '{\"browserbaseApiKey\": \"your-browserbase-api-key\"}'\n```\n\n**TypeScript**\n\n```typescript theme={null}\nimport Smithery from '@smithery/api';\nimport { createConnection } from '@smithery/api/mcp';\n\nconst smithery = new Smithery();\n\n// 1. Create a connection with the server's config\n// - API keys go in `headers`\n// - Other config goes as query params in `mcpUrl`\nconst conn = await smithery.connections.set('my-browserbase', {\n namespace: 'my-app',\n mcpUrl: 'https://mcp.browserbase.com/mcp?browserbaseProjectId=your-project-id',\n headers: {\n 'browserbaseApiKey': 'your-browserbase-api-key',\n },\n});\n// conn.status.state === \"connected\" — ready to use immediately\n\n// 2. Get a transport for the connection\nconst { transport } = await createConnection({\n client: smithery,\n namespace: 'my-app',\n connectionId: conn.connectionId,\n});\n```\n\n**cURL**\n\n```bash theme={null}\ncurl -X POST \"https://smithery.run/my-app\" \\\n -H \"Authorization: Bearer $SMITHERY_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"mcpUrl\": \"https://mcp.browserbase.com/mcp?browserbaseProjectId=your-project-id\",\n \"headers\": {\n \"browserbaseApiKey\": \"your-browserbase-api-key\"\n }\n }'\n```\n\nUnlike OAuth-based servers that return `auth_required`, servers configured with API keys return `connected` immediately when all required fields are provided upfront. If any required fields are missing, the connection returns `input_required` with the config schema and missing fields — see [Handling Configuration](#handling-configuration-input_required) below.\n\n> [!NOTE]\n>\n> Each server's config schema specifies whether a field is passed as a **header** or **query parameter** via the `x-from` metadata. See [Session Configuration](https://smithery.ai/docs/build/session-config) for details on how servers declare their config transport.\n\n## Multi-User Setup\n\nWhen your agent serves multiple users, you'll need to track which connections belong to which user. Use the `metadata` field to associate connections with your users, then filter by metadata to retrieve a specific user's connections.\n\n### 1. Create a Connection for a User\n\nWhen a user wants to connect an integration (e.g., GitHub), create a connection with their `userId` in metadata:\n\ncurl: (23) Failure writing output to destination\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-bfbc0e00fc1ca154",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Good. Now, I need pricing information. The pricing page is a Next.js app, and the content is probably inside the JS or the NEXT_DATA payload. Let me grep for pricing-related keywords within the HTML.
Also, the banner says that the MCP Proxy and managed identity will be shut down on October 31 (2 days from now). That's a big deal — the Connect product might be affected. Let me check the /future page. It might explain the changes.
Furthermore: can I actually run a simple example? I need a SMITHERY_API_KEY. Without an account, no. Should I check whether there's a key in the environment variables... nope (only PI_GATEWAY_API_KEY). Which means, unless there's anonymous access, I'm going to get blocked on credentials.
Let me check whether the registry API (fetching the server list) works without authentication — that might give me at least a runnable read-only example. Also, check the health check endpoint.
Let me do a few things:
- Grep the pricing page HTML to look for the pricing content.
- Fetch /future.
- Test the API without authentication.
cd /tmp; python3 - <<'EOF'
import re,html,json
t=open('pricing.html',encoding='utf-8',errors='ignore').read()
# find self.__next_f push payloads
chunks=re.findall(r'self\.__next_f\.push\(\[1,"(.*?)"\]\)',t,flags=re.S)
s=''.join(chunks)
s=s.encode().decode('unicode_escape',errors='ignore')
s=re.sub(r'<script.*?</script>','',s,flags=re.S)
# strip html tags
txt=re.sub(r'<[^>]+>',' ',s)
txt=html.unescape(txt)
txt=re.sub(r'\s+',' ',txt)
print(len(txt))
print(txt[:8000])
EOF96480
96480 1:"$Sreact.fragment" 2:I[816022,["/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"],"ThemeProvider"] 3:I[434959,["/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"],"ObservabilityBootstrap"] 4:I[119993,["/_next/static/chunks/0126844542e55c75.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/09f903c85530aa4d.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"],"default"] 5:I[836,["/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/ed802e90eb6a8072.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"],"default"] 6:I[659974,["/_next/static/chunks/0126844542e55c75.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/09f903c85530aa4d.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"],"default"] 7:I[750186,["/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/4bb85d42dcbc2768.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/35b539d1b537d9d0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/de11bd742b4eb93c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/fb2a7dc4131bfd79.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/6f31d26eb992f28e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/a420422f010becd6.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/42baa513e5ca2eee.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/b02347997e79c120.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/06b2c3e1584ca9e5.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/1f9576d38ccef3f4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/3a9080226bbef234.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/0c5c306b0edef96e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/840f8391716fb7c1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/47a06864e66de318.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/0ff11e99d4c3e30e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/6b737c371b9b6ee4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/dcc4cd4ce7ee65a3.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/956698a5e67702d7.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/dcb9c441e56713e1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/5bcdd80e290d5b61.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"],"AuthProvider"] 8:I[781604,["/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/4bb85d42dcbc2768.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/35b539d1b537d9d0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/de11bd742b4eb93c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/fb2a7dc4131bfd79.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/6f31d26eb992f28e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/a420422f010becd6.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/42baa513e5ca2eee.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/b02347997e79c120.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/06b2c3e1584ca9e5.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/1f9576d38ccef3f4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/3a9080226bbef234.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/0c5c306b0edef96e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/840f8391716fb7c1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/47a06864e66de318.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/0ff11e99d4c3e30e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/6b737c371b9b6ee4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/dcc4cd4ce7ee65a3.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/956698a5e67702d7.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/dcb9c441e56713e1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/5bcdd80e290d5b61.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"],"ReactQueryProvider"] 9:I[981853,["/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/4bb85d42dcbc2768.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/35b539d1b537d9d0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/de11bd742b4eb93c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/fb2a7dc4131bfd79.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/6f31d26eb992f28e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/a420422f010becd6.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/42baa513e5ca2eee.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/b02347997e79c120.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/06b2c3e1584ca9e5.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/1f9576d38ccef3f4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/3a9080226bbef234.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/0c5c306b0edef96e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/840f8391716fb7c1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/47a06864e66de318.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/0ff11e99d4c3e30e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/6b737c371b9b6ee4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/dcc4cd4ce7ee65a3.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/956698a5e67702d7.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/dcb9c441e56713e1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/5bcdd80e290d5b61.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"],"SmitheryProvider"] a:I[844657,["/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/4bb85d42dcbc2768.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/35b539d1b537d9d0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/de11bd742b4eb93c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/fb2a7dc4131bfd79.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/6f31d26eb992f28e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/a420422f010becd6.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/42baa513e5ca2eee.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/b02347997e79c120.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/06b2c3e1584ca9e5.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/1f9576d38ccef3f4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/3a9080226bbef234.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/0c5c306b0edef96e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/840f8391716fb7c1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/47a06864e66de318.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/0ff11e99d4c3e30e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/6b737c371b9b6ee4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/dcc4cd4ce7ee65a3.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/956698a5e67702d7.js?dpl=dpl_AT
Recorded tool call
{
"type": "tool_call",
"seq": 27,
"ts": "2026-10-29T21:29:53.122Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /tmp; python3 - <<'EOF'\nimport re,html,json\nt=open('pricing.html',encoding='utf-8',errors='ignore').read()\n# find self.__next_f push payloads\nchunks=re.findall(r'self\\.__next_f\\.push\\(\\[1,\"(.*?)\"\\]\\)',t,flags=re.S)\ns=''.join(chunks)\ns=s.encode().decode('unicode_escape',errors='ignore')\ns=re.sub(r'<script.*?</script>','',s,flags=re.S)\n# strip html tags\ntxt=re.sub(r'<[^>]+>',' ',s)\ntxt=html.unescape(txt)\ntxt=re.sub(r'\\s+',' ',txt)\nprint(len(txt))\nprint(txt[:8000])\nEOF"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-89239258508044d7",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 29,
"ts": "2026-10-29T21:29:53.122Z",
"turn": 1,
"output": {
"content": [
{
"text": "96480\n1:\"$Sreact.fragment\" 2:I[816022,[\"/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"],\"ThemeProvider\"] 3:I[434959,[\"/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"],\"ObservabilityBootstrap\"] 4:I[119993,[\"/_next/static/chunks/0126844542e55c75.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/09f903c85530aa4d.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"],\"default\"] 5:I[836,[\"/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/ed802e90eb6a8072.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"],\"default\"] 6:I[659974,[\"/_next/static/chunks/0126844542e55c75.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/09f903c85530aa4d.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"],\"default\"] 7:I[750186,[\"/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/4bb85d42dcbc2768.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/35b539d1b537d9d0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/de11bd742b4eb93c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/fb2a7dc4131bfd79.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/6f31d26eb992f28e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/a420422f010becd6.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/42baa513e5ca2eee.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/b02347997e79c120.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/06b2c3e1584ca9e5.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/1f9576d38ccef3f4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/3a9080226bbef234.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/0c5c306b0edef96e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/840f8391716fb7c1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/47a06864e66de318.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/0ff11e99d4c3e30e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/6b737c371b9b6ee4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/dcc4cd4ce7ee65a3.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/956698a5e67702d7.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/dcb9c441e56713e1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/5bcdd80e290d5b61.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"],\"AuthProvider\"] 8:I[781604,[\"/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/4bb85d42dcbc2768.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/35b539d1b537d9d0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/de11bd742b4eb93c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/fb2a7dc4131bfd79.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/6f31d26eb992f28e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/a420422f010becd6.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/42baa513e5ca2eee.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/b02347997e79c120.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/06b2c3e1584ca9e5.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/1f9576d38ccef3f4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/3a9080226bbef234.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/0c5c306b0edef96e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/840f8391716fb7c1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/47a06864e66de318.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/0ff11e99d4c3e30e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/6b737c371b9b6ee4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/dcc4cd4ce7ee65a3.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/956698a5e67702d7.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/dcb9c441e56713e1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/5bcdd80e290d5b61.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"],\"ReactQueryProvider\"] 9:I[981853,[\"/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/4bb85d42dcbc2768.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/35b539d1b537d9d0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/de11bd742b4eb93c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/fb2a7dc4131bfd79.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/6f31d26eb992f28e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/a420422f010becd6.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/42baa513e5ca2eee.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/b02347997e79c120.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/06b2c3e1584ca9e5.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/1f9576d38ccef3f4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/3a9080226bbef234.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/0c5c306b0edef96e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/840f8391716fb7c1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/47a06864e66de318.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/0ff11e99d4c3e30e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/6b737c371b9b6ee4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/dcc4cd4ce7ee65a3.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/956698a5e67702d7.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/dcb9c441e56713e1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/5bcdd80e290d5b61.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"],\"SmitheryProvider\"] a:I[844657,[\"/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/4bb85d42dcbc2768.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/35b539d1b537d9d0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/de11bd742b4eb93c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/fb2a7dc4131bfd79.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/6f31d26eb992f28e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/a420422f010becd6.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/42baa513e5ca2eee.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/b02347997e79c120.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/06b2c3e1584ca9e5.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/1f9576d38ccef3f4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/3a9080226bbef234.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/0c5c306b0edef96e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/840f8391716fb7c1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/47a06864e66de318.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/0ff11e99d4c3e30e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/6b737c371b9b6ee4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/dcc4cd4ce7ee65a3.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/956698a5e67702d7.js?dpl=dpl_AT\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-89239258508044d7",
"is_error": false,
"tool_kind": "shell"
}timeout 20 curl -sS -L https://smithery.ai/future | python3 -c " import sys,re,html t=sys.stdin.read() t=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S) t=re.sub(r'<[^>]+>',' ',t); t=html.unescape(t); t=re.sub(r'\s+',' ',t); print(t[:5000]) "
The future of Smithery | Smithery MCPs Skills Docs Pricing Publish Login 📣 Smithery's MCP Proxy and managed identity shut down on October 31. See what's chang
The future of Smithery | Smithery MCPs Skills Docs Pricing Publish Login 📣 Smithery's MCP Proxy and managed identity shut down on October 31. See what's changing Smithery's MCP Proxy and managed identity shut down on October 31 On October 31, 2026, we're shutting down Smithery's connection management services. Smithery will remain as a public (non-proxied) MCP registry. Here's what that means for you: What stays smithery.ai , as a public directory of MCP servers, now powered by Arcade.dev A curated set of verified servers, whose registry pages will show direct MCP URLs (e.g. mcp.linear.app/mcp instead of linear.run.tools or server.smithery.ai/linear). What stops working on October 31 Server URLs on run.tools and server.smithery.ai Smithery API, Connect, and Toolbox Smithery accounts and API keys The Smithery CLI and SDKs. We'll mark the current versions as deprecated. What to do before then Using a server yourself? Switch to the vendor's official MCP URL. Smithery URLs stop working on October 31, and connecting through Smithery won't be possible after that. You can find the official URL on the server's page on smithery.ai . Want out-of-the-box MCPs like Gmail or Slack? That's what we build at Arcade . Managing MCP connections for your own users? You'll need a replacement before October 31. I'm happy to help you figure out the right one, even if it isn't Arcade. If you're on a paid plan We're refunding every charge since August 5 and cancelling your subscription going forward. You won't be charged again. Refunds usually show up within 5–10 business days. If you want to talk through your setup or your migration, reach me at ani [at] smithery [dot] ai. Thank you for building with Smithery. It meant a lot to us. Anirudh Kamath Cofounder, Smithery (now part of Arcade) Give agents more agency Resources Documentation Privacy Policy System Status Company Pricing About Connect © 2026 Smithery. All rights reserved.
Recorded tool call
{
"type": "tool_call",
"seq": 28,
"ts": "2026-10-29T21:29:53.122Z",
"name": "bash",
"turn": 1,
"input": {
"command": "timeout 20 curl -sS -L https://smithery.ai/future | python3 -c \"\nimport sys,re,html\nt=sys.stdin.read()\nt=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S)\nt=re.sub(r'<[^>]+>',' ',t); t=html.unescape(t); t=re.sub(r'\\s+',' ',t); print(t[:5000])\n\""
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-bb1148782fb8b865",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 30,
"ts": "2026-10-29T21:29:53.916Z",
"turn": 1,
"output": {
"content": [
{
"text": " The future of Smithery | Smithery MCPs Skills Docs Pricing Publish Login 📣 Smithery's MCP Proxy and managed identity shut down on October 31. See what's changing Smithery's MCP Proxy and managed identity shut down on October 31 On October 31, 2026, we're shutting down Smithery's connection management services. Smithery will remain as a public (non-proxied) MCP registry. Here's what that means for you: What stays smithery.ai , as a public directory of MCP servers, now powered by Arcade.dev A curated set of verified servers, whose registry pages will show direct MCP URLs (e.g. mcp.linear.app/mcp instead of linear.run.tools or server.smithery.ai/linear). What stops working on October 31 Server URLs on run.tools and server.smithery.ai Smithery API, Connect, and Toolbox Smithery accounts and API keys The Smithery CLI and SDKs. We'll mark the current versions as deprecated. What to do before then Using a server yourself? Switch to the vendor's official MCP URL. Smithery URLs stop working on October 31, and connecting through Smithery won't be possible after that. You can find the official URL on the server's page on smithery.ai . Want out-of-the-box MCPs like Gmail or Slack? That's what we build at Arcade . Managing MCP connections for your own users? You'll need a replacement before October 31. I'm happy to help you figure out the right one, even if it isn't Arcade. If you're on a paid plan We're refunding every charge since August 5 and cancelling your subscription going forward. You won't be charged again. Refunds usually show up within 5–10 business days. If you want to talk through your setup or your migration, reach me at ani [at] smithery [dot] ai. Thank you for building with Smithery. It meant a lot to us. Anirudh Kamath Cofounder, Smithery (now part of Arcade) Give agents more agency Resources Documentation Privacy Policy System Status Company Pricing About Connect © 2026 Smithery. All rights reserved. \n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-bb1148782fb8b865",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Confirmed: Smithery's Connect/API/CLI/SDK, accounts, and API keys will be shut down on October 31, 2026 — that's 2 days from today (October 29, 2026). Smithery will remain only as a public, non-proxied MCP registry.
Therefore, the request to "build a simple example using Smithery's SDK/API" is effectively a dead end: the SDK/API is scheduled to be shut down in 2 days, and accounts/API keys will also stop working. Also, I don't have a Smithery API key.
Should I still verify? Let me test whether the API currently works without authentication (e.g., the health check, the server listing which is the public registry). The registry remains. That means I can build a lightweight example against the public registry API (the public server listing) — does this require authentication? Let me check the API reference for "List all servers" — whether auth is required.
According to the instructions: "If there's no executable developer workflow for this product, state that frankly and stop." There is something partially executable: the public registry (searching servers, fetching the official MCP URL). But the core value proposition (Connect, managed OAuth, proxy) dies on October 31.
The correct action: quickly test what still works unauthenticated, and then report frankly:
- Smithery's hosted connection product shuts down on October 31, 2026 (2 days from now). Building on top of that SDK/API now is wasted effort.
- What remains: the public registry (directory). Test whether the registry API works without a key.
- Pricing: needs to be accurate. Let me fetch the pricing data. The pricing page content — try extracting from the flight payload using a different method (searching for "$" or "month" keywords). Also, according to the "future" page, paid plans will be refunded — meaning pricing was subscription-based. Historically Smithery had free/pro tiers. Since subscriptions have been canceled and refunds issued, pricing is effectively meaningless. But the user is asking "how does pricing work," so I should answer honestly: the pricing page is now mostly a shell. Previously it was usage-based/subscription, but all paid plans are being refunded and canceled. Let me check the raw text of the pricing page more carefully.
Let me grep for pricing-related words inside the flight payload.
Also, test the registry endpoints:
- GET https://smithery.ai/api/servers (the old registry API)
- New: https://smithery.ai/api/... let me check the API reference docs for "List all servers" to find the base URL.
Let me run these in parallel.
cd /tmp; python3 - <<'EOF'
import re,html
t=open('pricing.html',encoding='utf-8',errors='ignore').read()
chunks=re.findall(r'self\.__next_f\.push\(\[1,"(.*?)"\]\)',t,flags=re.S)
s=''.join(chunks).encode().decode('unicode_escape',errors='ignore')
for kw in ['month','/mo','Free','Pro','Enterprise','price','per ','Usage','credit','$','refund','shut']:
for m in re.finditer(kw,s,flags=re.I):
seg=re.sub(r'\s+',' ',s[max(0,m.start()-160):m.start()+160])
print('>>',kw,'|',seg[:340])
break
EOF>> month | justify-between items-center","children":[["$","span",null,{"className":"text-muted-foreground","children":[["$","$L54",null,{"id":"rpc","children":
>> month | justify-between items-center","children":[["$","span",null,{"className":"text-muted-foreground","children":[["$","$L54",null,{"id":"rpc","children":"RPCs"}],"/month"]}],["$","span",null,{"className":"font-medium","children":"50K"}]]}],["$","li",null,{"className":"flex justify-between items-center","children":[["$","sp
>> /mo | x justify-between items-center","children":[["$","span",null,{"className":"text-muted-foreground","children":[["$","$L54",null,{"id":"rpc","children":"RPCs"}],"/month"]}],["$","span",null,{"className":"font-medium","children":"50K"}]]}],["$","li",null,{"className":"flex justify-between items-center","children":[["$","s
>> Free | text-muted-foreground uppercase tracking-wide","children":"Hobby"}],["$","div",null,{"children":["$","p",null,{"className":"text-4xl font-semibold","children":"Free"}]}],"$undefined"]}],["$","hr",null,{"className":"border-border/60 my-6"}],["$","ul",null,{"className":"text-sm space-y-3 flex-1","children":[["$","li",nul
>> Pro | /static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"],"ThemeProvider"] 3:I[434959,["/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1
>> credit | v",null,{"className":"mt-auto pt-6","children":[["$","p",null,{"className":"text-xs text-center text-muted-foreground mb-2","children":"* RPCs consume your $10 credits, then $0.10 / 1K"}],["$","$L5e",null,{}]]}] 5c:["$","div",null,{"ref":"$undefined","className":"text-card-foreground relative p-6 md:p-8 rounded-2xl h-f
>> $ | lse,"createdAt":"2026-03-10T05:39:45.197Z","homepage":"https://onesignal.com/","bySmithery":false,"owner":"org_01KPV6H8KK31A5ER2M8K9PY9HQ","score":null}}]]}]]}]
>> shut | _next/static/chunks/dcb9c441e56713e1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/5bcdd80e290d5b61.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"],"ShutdownDialog"] 36:I[122342,["/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z","/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_
Recorded tool call
{
"type": "tool_call",
"seq": 33,
"ts": "2026-10-29T21:30:00.821Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /tmp; python3 - <<'EOF'\nimport re,html\nt=open('pricing.html',encoding='utf-8',errors='ignore').read()\nchunks=re.findall(r'self\\.__next_f\\.push\\(\\[1,\"(.*?)\"\\]\\)',t,flags=re.S)\ns=''.join(chunks).encode().decode('unicode_escape',errors='ignore')\nfor kw in ['month','/mo','Free','Pro','Enterprise','price','per ','Usage','credit','$','refund','shut']:\n for m in re.finditer(kw,s,flags=re.I):\n seg=re.sub(r'\\s+',' ',s[max(0,m.start()-160):m.start()+160])\n print('>>',kw,'|',seg[:340])\n break\nEOF"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-92e8f7e8d9921b2c",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 35,
"ts": "2026-10-29T21:30:01.180Z",
"turn": 1,
"output": {
"content": [
{
"text": ">> month | justify-between items-center\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-muted-foreground\",\"children\":[[\"$\",\"$L54\",null,{\"id\":\"rpc\",\"children\":\"RPCs\"}],\"/month\"]}],[\"$\",\"span\",null,{\"className\":\"font-medium\",\"children\":\"50K\"}]]}],[\"$\",\"li\",null,{\"className\":\"flex justify-between items-center\",\"children\":[[\"$\",\"sp\n>> /mo | x justify-between items-center\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-muted-foreground\",\"children\":[[\"$\",\"$L54\",null,{\"id\":\"rpc\",\"children\":\"RPCs\"}],\"/month\"]}],[\"$\",\"span\",null,{\"className\":\"font-medium\",\"children\":\"50K\"}]]}],[\"$\",\"li\",null,{\"className\":\"flex justify-between items-center\",\"children\":[[\"$\",\"s\n>> Free | text-muted-foreground uppercase tracking-wide\",\"children\":\"Hobby\"}],[\"$\",\"div\",null,{\"children\":[\"$\",\"p\",null,{\"className\":\"text-4xl font-semibold\",\"children\":\"Free\"}]}],\"$undefined\"]}],[\"$\",\"hr\",null,{\"className\":\"border-border/60 my-6\"}],[\"$\",\"ul\",null,{\"className\":\"text-sm space-y-3 flex-1\",\"children\":[[\"$\",\"li\",nul\n>> Pro | /static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"],\"ThemeProvider\"] 3:I[434959,[\"/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1\n>> credit | v\",null,{\"className\":\"mt-auto pt-6\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-xs text-center text-muted-foreground mb-2\",\"children\":\"* RPCs consume your $10 credits, then $0.10 / 1K\"}],[\"$\",\"$L5e\",null,{}]]}] 5c:[\"$\",\"div\",null,{\"ref\":\"$undefined\",\"className\":\"text-card-foreground relative p-6 md:p-8 rounded-2xl h-f\n>> $ | lse,\"createdAt\":\"2026-03-10T05:39:45.197Z\",\"homepage\":\"https://onesignal.com/\",\"bySmithery\":false,\"owner\":\"org_01KPV6H8KK31A5ER2M8K9PY9HQ\",\"score\":null}}]]}]]}] \n>> shut | _next/static/chunks/dcb9c441e56713e1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/5bcdd80e290d5b61.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"],\"ShutdownDialog\"] 36:I[122342,[\"/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\",\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-92e8f7e8d9921b2c",
"is_error": false,
"tool_kind": "shell"
}echo "== health =="; timeout 15 curl -sS -w "\n[%{http_code}]\n" https://smithery.ai/api/health 2>&1 | head -5
echo "== registry list (no auth) =="; timeout 20 curl -sS -w "\n[%{http_code}]\n" "https://smithery.ai/api/servers?q=exa" 2>&1 | head -c 1200
echo; echo "== docs: list all servers =="; timeout 20 curl -sS https://smithery.ai/docs/api-reference/servers/list-all-servers.md 2>/dev/null | head -60== health ==
== health ==
<!DOCTYPE html><!--RjoAAOajxHkdg_Sd7L5rw--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/logos/symbol.svg"/><link rel="preload" as="image" href="/logos/logo.svg"/><link rel="preload" as="image" href="/logos/symbol-badge.svg"/><link rel="preload" as="image" href="/logos/verified-badge.svg"/><link rel="stylesheet" href="/_next/static/chunks/c3d5a6be71213922.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/1cc1a528181e539e.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/8491e5725b03c0ce.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"/><script src="/_next/static/chunks/dcef6bc1c64ee659.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/a0e05d253ce62d52.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/d53da97f89bdc4dc.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/8d70b723bc0b8159.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/00640037878b6398.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/5df3e1ca8071d633.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/turbopack-bbd482cda2335ef0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/0126844542e55c75.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/09f903c85530aa4d.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/ed802e90eb6a8072.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/4bb85d42dcbc2768.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/35b539d1b537d9d0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/de11bd742b4eb93c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/fb2a7dc4131bfd79.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/6f31d26eb992f28e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/a420422f010becd6.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/42baa513e5ca2eee.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/06b2c3e1584ca9e5.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/840f8391716fb7c1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/5bcdd80e290d5b61.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/3a9080226bbef234.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/47a06864e66de318.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/6b737c371b9b6ee4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/0c5c306b0edef96e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/0ff11e99d4c3e30e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/956698a5e67702d7.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/b02347997e79c120.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/ef6f0c94eb69e8f9.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/86bc6141bb7bd53c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/707647edab18cc3d.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#FF5601"/><title>Smithery - Connect agents to services in minutes</title><meta name="description" content="Connect agents to thousands of tools and services so they can act with more agency. Auth, credentials, and sessions handled for you."/><link rel="manifest" href="/manifest.webmanifest"/><meta property="og:title" content="Smithery - Connect agents to services in minutes"/><meta property="og:description" content="Connect agents to thousands of tools and services so they can act with more agency. Auth, credentials, and sessions handled for you."/><meta property="og:site_name" content="Smithery"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="Smithery - Connect agents to services in minutes"/><meta name="twitter:description" content="Connect agents to thousands of tools and services so they can act with more agency. Auth, credentials, and sessions handled for you."/><link rel="icon" href="/favicon.ico"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><script>
(function() {
const storageKey = 'smithery-theme';
const stored = localStorage.getItem(storageKey);
const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
== registry list (no auth) ==
<!DOCTYPE html><!--RjoAAOajxHkdg_Sd7L5rw--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/logos/symbol.svg"/><link rel="preload" as="image" href="/logos/logo.svg"/><link rel="preload" as="image" href="/logos/symbol-badge.svg"/><link rel="preload" as="image" href="/logos/verified-badge.svg"/><link rel="stylesheet" href="/_next/static/chunks/c3d5a6be71213922.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/1cc1a528181e539e.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/8491e5725b03c0ce.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z"/><script src="/_next/static/chunks/dcef6bc1c64ee659.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/a0e05d253ce62d52.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/d53da97f89bdc4dc.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z" async=""></script><script src="/_next/static/chunks/8d70b723bc0b8159.js?dpl=dpl_ATmrcG1
== docs: list all servers ==
> ## Documentation Index
> Fetch the complete documentation index at: https://smithery.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# List all servers
> Search and browse public MCP servers in the Smithery registry. Supports full-text and semantic search via the `q` parameter, and filtering by deployment status, verification, ownership, and more.
## OpenAPI
````yaml https://app.stainless.com/api/spec/documented/smithery/openapi.documented.yml get /servers
openapi: 3.1.0
info:
title: Smithery Platform API
description: >-
API for the Smithery platform — discover, deploy, and manage MCP (Model
Context Protocol) servers. Provides endpoints for browsing the server
registry, managing deployments, creating scoped access tokens, and
connecting to MCP servers.
version: 1.0.0
servers:
- url: https://api.smithery.ai
security:
- bearerAuth: []
tags:
- name: servers
description: >-
Browse the MCP server registry, manage server configuration, and handle
deployments
- name: skills
description: Discover and search reusable prompt-based skills for MCP servers
- name: tools
description: Search for MCP tools across all registered servers
paths:
/servers:
get:
tags:
- servers
summary: List all servers
description: >-
Search and browse public MCP servers in the Smithery registry. Supports
full-text and semantic search via the `q` parameter, and filtering by
deployment status, verification, ownership, and more.
operationId: getServers
parameters:
- in: query
name: q
schema:
type: string
description: >-
Search query for full-text and semantic search across server names
and descriptions.
- in: query
name: page
schema:
type: integer
minimum: 1
maximum: 9007199254740991
Recorded tool call
{
"type": "tool_call",
"seq": 34,
"ts": "2026-10-29T21:30:00.821Z",
"name": "bash",
"turn": 1,
"input": {
"command": "echo \"== health ==\"; timeout 15 curl -sS -w \"\\n[%{http_code}]\\n\" https://smithery.ai/api/health 2>&1 | head -5\necho \"== registry list (no auth) ==\"; timeout 20 curl -sS -w \"\\n[%{http_code}]\\n\" \"https://smithery.ai/api/servers?q=exa\" 2>&1 | head -c 1200\necho; echo \"== docs: list all servers ==\"; timeout 20 curl -sS https://smithery.ai/docs/api-reference/servers/list-all-servers.md 2>/dev/null | head -60"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-85c1098ea74064b9",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 36,
"ts": "2026-10-29T21:30:03.044Z",
"turn": 1,
"output": {
"content": [
{
"text": "== health ==\n<!DOCTYPE html><!--RjoAAOajxHkdg_Sd7L5rw--><html lang=\"en\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><link rel=\"preload\" as=\"image\" href=\"/logos/symbol.svg\"/><link rel=\"preload\" as=\"image\" href=\"/logos/logo.svg\"/><link rel=\"preload\" as=\"image\" href=\"/logos/symbol-badge.svg\"/><link rel=\"preload\" as=\"image\" href=\"/logos/verified-badge.svg\"/><link rel=\"stylesheet\" href=\"/_next/static/chunks/c3d5a6be71213922.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" data-precedence=\"next\"/><link rel=\"stylesheet\" href=\"/_next/static/chunks/1cc1a528181e539e.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" data-precedence=\"next\"/><link rel=\"preload\" as=\"script\" fetchPriority=\"low\" href=\"/_next/static/chunks/8491e5725b03c0ce.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"/><script src=\"/_next/static/chunks/dcef6bc1c64ee659.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/a0e05d253ce62d52.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/d53da97f89bdc4dc.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/8d70b723bc0b8159.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/00640037878b6398.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/5df3e1ca8071d633.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/turbopack-bbd482cda2335ef0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/925e8e5d460a6f0b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/71cc8cfbc32f762b.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/0126844542e55c75.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/09f903c85530aa4d.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/ed802e90eb6a8072.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/4bb85d42dcbc2768.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/35b539d1b537d9d0.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/de11bd742b4eb93c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/fb2a7dc4131bfd79.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/6f31d26eb992f28e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/a420422f010becd6.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/42baa513e5ca2eee.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/06b2c3e1584ca9e5.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/840f8391716fb7c1.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/5bcdd80e290d5b61.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/3a9080226bbef234.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/47a06864e66de318.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/6b737c371b9b6ee4.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/0c5c306b0edef96e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/0ff11e99d4c3e30e.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/956698a5e67702d7.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/b02347997e79c120.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/ef6f0c94eb69e8f9.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/86bc6141bb7bd53c.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/707647edab18cc3d.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><meta name=\"robots\" content=\"noindex\"/><meta name=\"next-size-adjust\" content=\"\"/><meta name=\"theme-color\" content=\"#FF5601\"/><title>Smithery - Connect agents to services in minutes</title><meta name=\"description\" content=\"Connect agents to thousands of tools and services so they can act with more agency. Auth, credentials, and sessions handled for you.\"/><link rel=\"manifest\" href=\"/manifest.webmanifest\"/><meta property=\"og:title\" content=\"Smithery - Connect agents to services in minutes\"/><meta property=\"og:description\" content=\"Connect agents to thousands of tools and services so they can act with more agency. Auth, credentials, and sessions handled for you.\"/><meta property=\"og:site_name\" content=\"Smithery\"/><meta name=\"twitter:card\" content=\"summary\"/><meta name=\"twitter:title\" content=\"Smithery - Connect agents to services in minutes\"/><meta name=\"twitter:description\" content=\"Connect agents to thousands of tools and services so they can act with more agency. Auth, credentials, and sessions handled for you.\"/><link rel=\"icon\" href=\"/favicon.ico\"/><link rel=\"apple-touch-icon\" href=\"/apple-touch-icon.png\"/><script>\n\t\t\t\t\t\t(function() {\n\t\t\t\t\t\t\tconst storageKey = 'smithery-theme';\n\t\t\t\t\t\t\tconst stored = localStorage.getItem(storageKey);\n\t\t\t\t\t\t\tconst systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n== registry list (no auth) ==\n<!DOCTYPE html><!--RjoAAOajxHkdg_Sd7L5rw--><html lang=\"en\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><link rel=\"preload\" as=\"image\" href=\"/logos/symbol.svg\"/><link rel=\"preload\" as=\"image\" href=\"/logos/logo.svg\"/><link rel=\"preload\" as=\"image\" href=\"/logos/symbol-badge.svg\"/><link rel=\"preload\" as=\"image\" href=\"/logos/verified-badge.svg\"/><link rel=\"stylesheet\" href=\"/_next/static/chunks/c3d5a6be71213922.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" data-precedence=\"next\"/><link rel=\"stylesheet\" href=\"/_next/static/chunks/1cc1a528181e539e.css?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" data-precedence=\"next\"/><link rel=\"preload\" as=\"script\" fetchPriority=\"low\" href=\"/_next/static/chunks/8491e5725b03c0ce.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\"/><script src=\"/_next/static/chunks/dcef6bc1c64ee659.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/a0e05d253ce62d52.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/d53da97f89bdc4dc.js?dpl=dpl_ATmrcG1kvdwiX7sP1N84RmZbD15z\" async=\"\"></script><script src=\"/_next/static/chunks/8d70b723bc0b8159.js?dpl=dpl_ATmrcG1\n== docs: list all servers ==\n> ## Documentation Index\n> Fetch the complete documentation index at: https://smithery.ai/docs/llms.txt\n> Use this file to discover all available pages before exploring further.\n\n# List all servers\n\n> Search and browse public MCP servers in the Smithery registry. Supports full-text and semantic search via the `q` parameter, and filtering by deployment status, verification, ownership, and more.\n\n\n\n## OpenAPI\n\n````yaml https://app.stainless.com/api/spec/documented/smithery/openapi.documented.yml get /servers\nopenapi: 3.1.0\ninfo:\n title: Smithery Platform API\n description: >-\n API for the Smithery platform — discover, deploy, and manage MCP (Model\n Context Protocol) servers. Provides endpoints for browsing the server\n registry, managing deployments, creating scoped access tokens, and\n connecting to MCP servers.\n version: 1.0.0\nservers:\n - url: https://api.smithery.ai\nsecurity:\n - bearerAuth: []\ntags:\n - name: servers\n description: >-\n Browse the MCP server registry, manage server configuration, and handle\n deployments\n - name: skills\n description: Discover and search reusable prompt-based skills for MCP servers\n - name: tools\n description: Search for MCP tools across all registered servers\npaths:\n /servers:\n get:\n tags:\n - servers\n summary: List all servers\n description: >-\n Search and browse public MCP servers in the Smithery registry. Supports\n full-text and semantic search via the `q` parameter, and filtering by\n deployment status, verification, ownership, and more.\n operationId: getServers\n parameters:\n - in: query\n name: q\n schema:\n type: string\n description: >-\n Search query for full-text and semantic search across server names\n and descriptions.\n - in: query\n name: page\n schema:\n type: integer\n minimum: 1\n maximum: 9007199254740991\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-85c1098ea74064b9",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
The API base is https://api.smithery.ai. Let's test it without authentication: GET https://api.smithery.ai/servers?q=exa and the health check. Also, test the connection endpoint (smithery.run) without authentication and confirm it returns 401 (an API key is required, but I don't have one).
Additionally, extract the pricing plans from the flight payload: Hobby Free, then the Pro plan including "$10 credit, then $0.10 / 1K" and "RPCs/month 50K". Let's properly extract the full text of the pricing section.
echo "== api health =="; timeout 15 curl -sS -w "\n[%{http_code}]\n" https://api.smithery.ai/health | head -c 400
echo; echo "== api servers no-auth =="; timeout 20 curl -sS -w "\n[%{http_code}]\n" "https://api.smithery.ai/servers?q=exa&pageSize=2" | head -c 900
echo; echo "== connect endpoint no-auth =="; timeout 15 curl -sS -w "\n[%{http_code}]\n" -X POST "https://smithery.run/demo" -H "Content-Type: application/json" -d '{"mcpUrl":"https://mcp.exa.ai"}' | head -c 400
echo; echo "== old proxy =="; timeout 15 curl -sS -o /dev/null -w "[%{http_code}]\n" "https://server.smithery.ai/exa/mcp"== api health ==
== api health ==
{"status":"ok","timestamp":"2026-10-29T21:30:06.545Z"}
[200]
== api servers no-auth ==
{"servers":[{"id":"b11dd2a9-0896-4133-a57f-2b654f9d80d4","qualifiedName":"exa","namespace":"exa","slug":"","displayName":"Exa Search","description":"Fast, intelligent web search and web crawling. Get fresh information about libraries, APIs, and SDKs.","iconUrl":"https://api.smithery.ai/servers/exa/icon","verified":true,"useCount":9181,"remote":true,"isDeployed":true,"unlisted":false,"inactive":false,"createdAt":"2024-12-13T15:46:50.750Z","homepage":"https://exa.ai","bySmithery":false,"owner":"org_01KNB3A514RX0G4KHMMZAXTRA2","score":0.02631578947368421},{"id":"2b224849-7e93-49f1-9f3b-f5178a383acf","qualifiedName":"groundroute-ai/web-search","namespace":"groundroute-ai","slug":"web-search","displayName":"GroundRoute: Web Search for AI Agents across 6 Engines ($10 free credit) ","description":"GroundRoute gives your AI agent web search across six engines (Serper, Brave, Exa, Tavily, Firecra
== connect endpoint no-auth ==
curl: (6) Could not resolve host: smithery.run
[000]
== old proxy ==
[401]
Recorded tool call
{
"type": "tool_call",
"seq": 39,
"ts": "2026-10-29T21:30:06.502Z",
"name": "bash",
"turn": 1,
"input": {
"command": "echo \"== api health ==\"; timeout 15 curl -sS -w \"\\n[%{http_code}]\\n\" https://api.smithery.ai/health | head -c 400\necho; echo \"== api servers no-auth ==\"; timeout 20 curl -sS -w \"\\n[%{http_code}]\\n\" \"https://api.smithery.ai/servers?q=exa&pageSize=2\" | head -c 900\necho; echo \"== connect endpoint no-auth ==\"; timeout 15 curl -sS -w \"\\n[%{http_code}]\\n\" -X POST \"https://smithery.run/demo\" -H \"Content-Type: application/json\" -d '{\"mcpUrl\":\"https://mcp.exa.ai\"}' | head -c 400\necho; echo \"== old proxy ==\"; timeout 15 curl -sS -o /dev/null -w \"[%{http_code}]\\n\" \"https://server.smithery.ai/exa/mcp\""
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-a482d4fdabf060ab",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 42,
"ts": "2026-10-29T21:30:08.083Z",
"turn": 1,
"output": {
"content": [
{
"text": "== api health ==\n{\"status\":\"ok\",\"timestamp\":\"2026-10-29T21:30:06.545Z\"}\n[200]\n\n== api servers no-auth ==\n{\"servers\":[{\"id\":\"b11dd2a9-0896-4133-a57f-2b654f9d80d4\",\"qualifiedName\":\"exa\",\"namespace\":\"exa\",\"slug\":\"\",\"displayName\":\"Exa Search\",\"description\":\"Fast, intelligent web search and web crawling. Get fresh information about libraries, APIs, and SDKs.\",\"iconUrl\":\"https://api.smithery.ai/servers/exa/icon\",\"verified\":true,\"useCount\":9181,\"remote\":true,\"isDeployed\":true,\"unlisted\":false,\"inactive\":false,\"createdAt\":\"2024-12-13T15:46:50.750Z\",\"homepage\":\"https://exa.ai\",\"bySmithery\":false,\"owner\":\"org_01KNB3A514RX0G4KHMMZAXTRA2\",\"score\":0.02631578947368421},{\"id\":\"2b224849-7e93-49f1-9f3b-f5178a383acf\",\"qualifiedName\":\"groundroute-ai/web-search\",\"namespace\":\"groundroute-ai\",\"slug\":\"web-search\",\"displayName\":\"GroundRoute: Web Search for AI Agents across 6 Engines ($10 free credit) \",\"description\":\"GroundRoute gives your AI agent web search across six engines (Serper, Brave, Exa, Tavily, Firecra\n== connect endpoint no-auth ==\ncurl: (6) Could not resolve host: smithery.run\n\n[000]\n\n== old proxy ==\n[401]\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-a482d4fdabf060ab",
"is_error": false,
"tool_kind": "shell"
}cd /tmp; python3 - <<'EOF'
import re,json
t=open('pricing.html',encoding='utf-8',errors='ignore').read()
chunks=re.findall(r'self\.__next_f\.push\(\[1,"(.*?)"\]\)',t,flags=re.S)
s=''.join(chunks).encode().decode('unicode_escape',errors='ignore')
i=s.find('Hobby')
seg=s[i-500:i+9000]
# extract only the readable "children" strings
vals=re.findall(r'"children":"((?:[^"\\]|\\.)*)"',seg)
print(' | '.join(v for v in vals))
EOFHobby | Free | RPCs | 50K | Namespaces | 3 | Managed OAuth | Persistent connections | Pay as you Go | $$10/mo | RPCs | 100K | Namespaces | 100 | Managed OAuth |
Hobby | Free | RPCs | 50K | Namespaces | 3 | Managed OAuth | Persistent connections | Pay as you Go | $$10/mo | RPCs | 100K | Namespaces | 100 | Managed OAuth | Persistent connections
Recorded tool call
{
"type": "tool_call",
"seq": 40,
"ts": "2026-10-29T21:30:06.502Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /tmp; python3 - <<'EOF'\nimport re,json\nt=open('pricing.html',encoding='utf-8',errors='ignore').read()\nchunks=re.findall(r'self\\.__next_f\\.push\\(\\[1,\"(.*?)\"\\]\\)',t,flags=re.S)\ns=''.join(chunks).encode().decode('unicode_escape',errors='ignore')\ni=s.find('Hobby')\nseg=s[i-500:i+9000]\n# extract only the readable \"children\" strings\nvals=re.findall(r'\"children\":\"((?:[^\"\\\\]|\\\\.)*)\"',seg)\nprint(' | '.join(v for v in vals))\nEOF"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b90776b097cda2b1",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 41,
"ts": "2026-10-29T21:30:06.502Z",
"turn": 1,
"output": {
"content": [
{
"text": "Hobby | Free | RPCs | 50K | Namespaces | 3 | Managed OAuth | Persistent connections | Pay as you Go | $$10/mo | RPCs | 100K | Namespaces | 100 | Managed OAuth | Persistent connections\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b90776b097cda2b1",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Interesting point: smithery.run no longer resolves via DNS — the Connect product is already effectively down (2 days before the announcement date). The old proxy server.smithery.ai returns 401 (still exists but requires a key). The public registry API api.smithery.ai works without authentication for browsing.
Pricing plans extracted: Hobby Free (50K RPC/month, 3 namespaces, managed OAuth, persistent connections), Pay as you Go $10/month (100K RPC, 100 namespaces), plus footnote "RPCs consume your $10 credit, then $0.10 / 1K". Let me try to grab the rest of the pricing section (there might be additional plans — the segment may have been cut off partway). To get all plan names and the footnotes, I'll try scanning the entire payload.
After that, build a small, runnable example against what still works: the public registry API (no auth required). This is a legitimate lightweight "Smithery example": search the registry and fetch the server's official direct MCP URL. But can I actually retrieve the direct MCP URL from the API without auth? Let me check GET /servers/{qualifiedName} — "Get a server" probably requires bearerAuth. I'll test it.
Also, I'll check whether the registry page displays the direct MCP URL. Let me test api.smithery.ai/servers/exa without auth.
Plan:
- Extract all pricing plans.
- Test GET /servers/exa without auth.
- If it works, write a small sample script (Node or Python) in the repo that queries the registry and displays the direct MCP URL; run it.
- Report: pricing details, shutdown status, blocks (no API key, smithery.run is dead), manageability assessment.
Note: The user said "keep it light: use the hosted product via SDK or API." The hosted Connect product is dead. I should state that frankly. However, there's a registry API that works without auth — I can demo that as the sole remaining viable workflow and stop there. I shouldn't build anything on top of the SDK (@smithery/api). It'll be deprecated and won't work without an account.
Let me check the availability of node/npm and test the server detail endpoint.
echo "== get server no-auth =="; timeout 20 curl -sS -w "\n[%{http_code}]\n" "https://api.smithery.ai/servers/exa" | head -c 1500
echo; echo "== create connection (needs key) =="; timeout 15 curl -sS -w "\n[%{http_code}]\n" -X PUT "https://api.smithery.ai/connect/demo/exa" -H "Content-Type: application/json" -d '{"server":"exa"}' | head -c 300
echo; echo "== node/npm =="; node -v 2>&1; npm -v 2>&1; python3 -V== get server no-auth ==
== get server no-auth ==
{"qualifiedName":"exa","displayName":"Exa Search","description":"Fast, intelligent web search and web crawling. Get fresh information about libraries, APIs, and SDKs.","iconUrl":"https://api.smithery.ai/servers/exa/icon","remote":true,"deploymentUrl":"https://exa.run.tools","connections":[{"type":"http","deploymentUrl":"https://exa.run.tools","configSchema":{}}],"security":null,"tools":[{"name":"web_search_exa","description":"Search the web for any topic and get clean, ready-to-use content.\n\n Best for: Finding current information, news, facts, people, companies, or answering questions about any topic.\n Returns: Clean text content from top search results.\n\n Query tips:\n describe the ideal page, not keywords. \"blog post comparing React and Vue performance\" not \"React vs Vue\".\n Use category:people / category:company to search through Linkedin profiles / companies respectively.\n If highlights are insufficient, follow up with web_fetch_exa on the best URLs.","inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"Natural language search query. Should be a semantically rich description of the ideal page, not just keywords. Optionally include category:<type> (company, people) to focus results — e.g. 'category:people John Doe software engineer'."},"numResults":{"type":"number","description":"Number of search results to return (default: 10)."}}}},{"name":"web_fetch_exa","description":"Read a webpage
== create connection (needs key) ==
{"error":"unauthorized","message":"Missing Authorization header"}
[401]
== node/npm ==
v22.23.4
10.9.8
Python 3.12.3
Recorded tool call
{
"type": "tool_call",
"seq": 45,
"ts": "2026-10-29T21:30:14.383Z",
"name": "bash",
"turn": 1,
"input": {
"command": "echo \"== get server no-auth ==\"; timeout 20 curl -sS -w \"\\n[%{http_code}]\\n\" \"https://api.smithery.ai/servers/exa\" | head -c 1500\necho; echo \"== create connection (needs key) ==\"; timeout 15 curl -sS -w \"\\n[%{http_code}]\\n\" -X PUT \"https://api.smithery.ai/connect/demo/exa\" -H \"Content-Type: application/json\" -d '{\"server\":\"exa\"}' | head -c 300\necho; echo \"== node/npm ==\"; node -v 2>&1; npm -v 2>&1; python3 -V"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b84dfb6ebf91e4c1",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 48,
"ts": "2026-10-29T21:30:15.608Z",
"turn": 1,
"output": {
"content": [
{
"text": "== get server no-auth ==\n{\"qualifiedName\":\"exa\",\"displayName\":\"Exa Search\",\"description\":\"Fast, intelligent web search and web crawling. Get fresh information about libraries, APIs, and SDKs.\",\"iconUrl\":\"https://api.smithery.ai/servers/exa/icon\",\"remote\":true,\"deploymentUrl\":\"https://exa.run.tools\",\"connections\":[{\"type\":\"http\",\"deploymentUrl\":\"https://exa.run.tools\",\"configSchema\":{}}],\"security\":null,\"tools\":[{\"name\":\"web_search_exa\",\"description\":\"Search the web for any topic and get clean, ready-to-use content.\\n\\n Best for: Finding current information, news, facts, people, companies, or answering questions about any topic.\\n Returns: Clean text content from top search results.\\n\\n Query tips:\\n describe the ideal page, not keywords. \\\"blog post comparing React and Vue performance\\\" not \\\"React vs Vue\\\".\\n Use category:people / category:company to search through Linkedin profiles / companies respectively.\\n If highlights are insufficient, follow up with web_fetch_exa on the best URLs.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"minLength\":1,\"description\":\"Natural language search query. Should be a semantically rich description of the ideal page, not just keywords. Optionally include category:<type> (company, people) to focus results — e.g. 'category:people John Doe software engineer'.\"},\"numResults\":{\"type\":\"number\",\"description\":\"Number of search results to return (default: 10).\"}}}},{\"name\":\"web_fetch_exa\",\"description\":\"Read a webpage\n== create connection (needs key) ==\n{\"error\":\"unauthorized\",\"message\":\"Missing Authorization header\"}\n[401]\n\n== node/npm ==\nv22.23.4\n10.9.8\nPython 3.12.3\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b84dfb6ebf91e4c1",
"is_error": false,
"tool_kind": "shell"
}cd /tmp; python3 - <<'EOF'
import re
t=open('pricing.html',encoding='utf-8',errors='ignore').read()
chunks=re.findall(r'self\.__next_f\.push\(\[1,"(.*?)"\]\)',t,flags=re.S)
s=''.join(chunks).encode().decode('unicode_escape',errors='ignore')
i=s.find('Hobby')
seg=s[i-200:i+30000]
vals=re.findall(r'"children":"((?:[^"\\]|\\.)*)"',seg)
out=[]
for v in vals:
if v not in out: out.append(v)
print(' | '.join(out[:120]))
EOFHobby | Free | RPCs | 50K | Namespaces | 3 | Managed OAuth | Persistent connections | Pay as you Go | $$10/mo | 100K | 100 | * RPCs consume your $10 credits, th
Hobby | Free | RPCs | 50K | Namespaces | 3 | Managed OAuth | Persistent connections | Pay as you Go | $$10/mo | 100K | 100 | * RPCs consume your $10 credits, then $0.10 / 1K | Custom | Contact us | Everything in Pay as you Go | Custom rate limits | Uptime SLA | Slack Support | Pricing | Smithery | These ones actually exist
Recorded tool call
{
"type": "tool_call",
"seq": 46,
"ts": "2026-10-29T21:30:14.383Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /tmp; python3 - <<'EOF'\nimport re\nt=open('pricing.html',encoding='utf-8',errors='ignore').read()\nchunks=re.findall(r'self\\.__next_f\\.push\\(\\[1,\"(.*?)\"\\]\\)',t,flags=re.S)\ns=''.join(chunks).encode().decode('unicode_escape',errors='ignore')\ni=s.find('Hobby')\nseg=s[i-200:i+30000]\nvals=re.findall(r'\"children\":\"((?:[^\"\\\\]|\\\\.)*)\"',seg)\nout=[]\nfor v in vals:\n if v not in out: out.append(v)\nprint(' | '.join(out[:120]))\nEOF"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-93d98ebfb38b92a4",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 47,
"ts": "2026-10-29T21:30:14.703Z",
"turn": 1,
"output": {
"content": [
{
"text": "Hobby | Free | RPCs | 50K | Namespaces | 3 | Managed OAuth | Persistent connections | Pay as you Go | $$10/mo | 100K | 100 | * RPCs consume your $10 credits, then $0.10 / 1K | Custom | Contact us | Everything in Pay as you Go | Custom rate limits | Uptime SLA | Slack Support | Pricing | Smithery | These ones actually exist\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-93d98ebfb38b92a4",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Now I've got the full picture:
Pricing structure (as it currently stands on the site):
- Hobby: Free — 50K RPCs/month, 3 namespaces, managed OAuth, persistent connections
- Pay as you Go: $10/month — 100K RPCs, 100 namespaces; footnote: "RPCs consume the $10 credit, then $0.10 per 1,000" (usage-based overage)
- Custom: Contact us — custom rate limits, uptime SLA, Slack support
- Additionally: shutdown notice — refund all charges after August 5, cancel subscriptions.
Current situation:
- smithery.run (Connect REST endpoint) — DNS no longer resolves. Already dead.
- The Connect endpoints on api.smithery.ai return 401, requiring an API key that I don't have; keys will be invalidated on October 31.
- The registry read APIs (GET /servers, GET /servers/{name}) work anonymously — this will remain after October 31 as a public directory.
- SDK/CLI have been deprecated.
In other words: an executable workflow does exist, but it's only registry browsing. The "connect to MCPs via Smithery" workflow that the user is probably looking for is dead / disappears in two days, and requires an account I can't create.
What to do: build a lightweight example against what still works — the public registry API. This is an honest, minimal, executable deliverable. Write a small Node script (no dependencies, uses fetch) that does the following:
- Search for servers in the registry
- Fetch details for one server, list its tools
- Display the endpoints the registry exposes
Then run it and show the output.
Should I also demonstrate connection to the direct MCP URL? exa.run.tools is Smithery's proxy URL and is scheduled to be shut down; the direct URL is mcp.exa.ai (per the docs), which requires an Exa API key that I don't have. Not executable — note that explicitly.
Also check whether there's an official "direct MCP URL" field in the API response… the response shows deploymentUrl "https://exa.run.tools" (Smithery proxy — scheduled to be shut down). The registry page is supposed to show the direct URL. Hmm — so the API is still returning a proxy URL. Let me check whether the servers/exa page has a direct URL. Quick check: fetch the server page and grep for mcp.exa.ai. Keep it light — a single curl.
Let me write the example.
Keep it light: one script, smithery-registry-demo.mjs, plus a short README note. No package.json dependencies (node 22 has fetch).
Let me check the HTML of exa's server page for the direct URL.
timeout 20 curl -sS https://smithery.ai/server/exa -o /tmp/exa.html; grep -o -E '(https://)?mcp\.exa\.ai[^"\\ ]*' /tmp/exa.html | sort -u | head; echo "--- run.tools refs ---"; grep -o -E '[a-z0-9.-]*run\.tools[^"\\ ]*' /tmp/exa.html | sort -u | head -5; echo "--- size ---"; wc -c /tmp/exa.html
--- run.tools refs ---
--- run.tools refs --- --- size --- 15 /tmp/exa.html
Recorded tool call
{
"type": "tool_call",
"seq": 51,
"ts": "2026-10-29T21:30:21.298Z",
"name": "bash",
"turn": 1,
"input": {
"command": "timeout 20 curl -sS https://smithery.ai/server/exa -o /tmp/exa.html; grep -o -E '(https://)?mcp\\.exa\\.ai[^\"\\\\ ]*' /tmp/exa.html | sort -u | head; echo \"--- run.tools refs ---\"; grep -o -E '[a-z0-9.-]*run\\.tools[^\"\\\\ ]*' /tmp/exa.html | sort -u | head -5; echo \"--- size ---\"; wc -c /tmp/exa.html"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-802a90304c9e944d",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 54,
"ts": "2026-10-29T21:30:21.624Z",
"turn": 1,
"output": {
"content": [
{
"text": "--- run.tools refs ---\n--- size ---\n15 /tmp/exa.html\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-802a90304c9e944d",
"is_error": false,
"tool_kind": "shell"
}cd /sandbox/repo && git log --oneline -5 2>&1 | head; cat .gitignore
9ebf5fb Initial workspace
9ebf5fb Initial workspace # Keep generated and vendored files out of source diffs. # Logs / OS cruft *.log .DS_Store # JavaScript / TypeScript node_modules/ .next/ dist/ build/ coverage/ # Python .venv/ venv/ __pycache__/ *.py[cod] .pytest_cache/ *.egg-info/ # Rust target/ # Go / PHP / Ruby vendored deps vendor/ .bundle/ # Java / Kotlin / Scala .gradle/ # .NET bin/ obj/ # Elixir _build/ deps/ # Dart / Flutter .dart_tool/
Recorded tool call
{
"type": "tool_call",
"seq": 52,
"ts": "2026-10-29T21:30:21.298Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /sandbox/repo && git log --oneline -5 2>&1 | head; cat .gitignore"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-a5f27baf927a9f95",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 53,
"ts": "2026-10-29T21:30:21.298Z",
"turn": 1,
"output": {
"content": [
{
"text": "9ebf5fb Initial workspace\n# Keep generated and vendored files out of source diffs.\n\n# Logs / OS cruft\n*.log\n.DS_Store\n\n# JavaScript / TypeScript\nnode_modules/\n.next/\ndist/\nbuild/\ncoverage/\n\n# Python\n.venv/\nvenv/\n__pycache__/\n*.py[cod]\n.pytest_cache/\n*.egg-info/\n\n# Rust\ntarget/\n\n# Go / PHP / Ruby vendored deps\nvendor/\n.bundle/\n\n# Java / Kotlin / Scala\n.gradle/\n\n# .NET\nbin/\nobj/\n\n# Elixir\n_build/\ndeps/\n\n# Dart / Flutter\n.dart_tool/\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-a5f27baf927a9f95",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
The /server/exa page returned 15 bytes — probably "404: Page Not Found". The registry URL might be /servers/exa or /exa. Not critical.
Next, write a sample script against the live registry API. Keep it simple: a Node ESM script that uses fetch, no dependencies.
What to create:
smithery-example/registry-demo.mjs— search the registry, fetch details, list tools, and note that the connect endpoint is dead.smithery-example/README.md— pricing, shutdown status, how to run.
After that, run it.
File edits
1 file
Writtensmithery-example/registry-demo.mjsView changes
/sandbox/repo/smithery-example/registry-demo.mjs
Written content · previous contents were not recorded
#!/usr/bin/env node/*** Smithery — minimal, no-dependency example.** IMPORTANT (verified 2026-10-29): Smithery's hosted connection product* (Connect API, proxy, accounts/API keys, CLI, SDKs) shuts down 2026-10-31.* - https://smithery.run/* -> DNS no longer resolves (already dead)* - https://server.smithery.ai/* -> 401, dies 2026-10-31* - api.smithery.ai connect routes -> 401 "Missing Authorization header"** What survives is the PUBLIC REGISTRY (read-only, no auth required).* This script exercises exactly that: search -> details -> tool list.** Run: node smithery-example/registry-demo.mjs [query]*/const API = 'https://api.smithery.ai';const query = process.argv[2] ?? 'web search';async function get(path) {const res = await fetch(`${API}${path}`, {headers: { accept: 'application/json' },});if (!res.ok) throw new Error(`${path} -> HTTP ${res.status} ${await res.text()}`);return res.json();}// 1. Health check (public)const health = await get('/health');console.log(`health: ${health.status} @ ${health.timestamp}\n`);// 2. Search the registry (public, no API key)const search = await get(`/servers?q=${encodeURIComponent(query)}&pageSize=5`);console.log(`search "${query}" -> ${(search.servers ?? []).length} shown`);for (const s of search.servers ?? []) {console.log(` - ${s.qualifiedName.padEnd(28)} verified=${String(s.verified).padEnd(5)} uses=${String(s.useCount).padEnd(7)} ${s.displayName}`);}const top = search.servers?.[0];if (!top) {console.log('\nno results; nothing else to do.');process.exit(0);}// 3. Server details: tools + input schemas (public)const detail = await get(`/servers/${encodeURIComponent(top.qualifiedName)}`);console.log(`\n${detail.displayName} (${detail.qualifiedName})`);console.log(` registry deploymentUrl: ${detail.deploymentUrl}`);console.log(' ^ Smithery proxy URL — stops working 2026-10-31.');console.log(' Use the vendor\'s own MCP URL instead (shown on the server page).');console.log(` tools (${(detail.tools ?? []).length}):`);for (const t of (detail.tools ?? []).slice(0, 8)) {const args = Object.keys(t.inputSchema?.properties ?? {}).join(', ') || '(none)';console.log(` - ${t.name}(${args})`);}// 4. Prove the managed-connection path is closed without an account.const conn = await fetch(`${API}/connect/demo/${encodeURIComponent(top.qualifiedName)}`, {method: 'PUT',headers: { 'content-type': 'application/json' },body: JSON.stringify({ server: top.qualifiedName }),});console.log(`\nconnect API without an API key -> HTTP ${conn.status} ${JSON.stringify(await conn.json())}`);console.log('(expected: 401. Accounts/API keys are discontinued on 2026-10-31.)');
Source: write · chatcmpl-tool-8b9dede073ccc431
Recorded tool call
{
"type": "tool_call",
"seq": 57,
"ts": "2026-10-29T21:30:31.533Z",
"name": "write",
"turn": 1,
"input": {
"path": "/sandbox/repo/smithery-example/registry-demo.mjs",
"content": "#!/usr/bin/env node\n/**\n * Smithery — minimal, no-dependency example.\n *\n * IMPORTANT (verified 2026-10-29): Smithery's hosted connection product\n * (Connect API, proxy, accounts/API keys, CLI, SDKs) shuts down 2026-10-31.\n * - https://smithery.run/* -> DNS no longer resolves (already dead)\n * - https://server.smithery.ai/* -> 401, dies 2026-10-31\n * - api.smithery.ai connect routes -> 401 \"Missing Authorization header\"\n *\n * What survives is the PUBLIC REGISTRY (read-only, no auth required).\n * This script exercises exactly that: search -> details -> tool list.\n *\n * Run: node smithery-example/registry-demo.mjs [query]\n */\n\nconst API = 'https://api.smithery.ai';\nconst query = process.argv[2] ?? 'web search';\n\nasync function get(path) {\n const res = await fetch(`${API}${path}`, {\n headers: { accept: 'application/json' },\n });\n if (!res.ok) throw new Error(`${path} -> HTTP ${res.status} ${await res.text()}`);\n return res.json();\n}\n\n// 1. Health check (public)\nconst health = await get('/health');\nconsole.log(`health: ${health.status} @ ${health.timestamp}\\n`);\n\n// 2. Search the registry (public, no API key)\nconst search = await get(`/servers?q=${encodeURIComponent(query)}&pageSize=5`);\nconsole.log(`search \"${query}\" -> ${(search.servers ?? []).length} shown`);\nfor (const s of search.servers ?? []) {\n console.log(\n ` - ${s.qualifiedName.padEnd(28)} verified=${String(s.verified).padEnd(5)} uses=${String(s.useCount).padEnd(7)} ${s.displayName}`\n );\n}\n\nconst top = search.servers?.[0];\nif (!top) {\n console.log('\\nno results; nothing else to do.');\n process.exit(0);\n}\n\n// 3. Server details: tools + input schemas (public)\nconst detail = await get(`/servers/${encodeURIComponent(top.qualifiedName)}`);\nconsole.log(`\\n${detail.displayName} (${detail.qualifiedName})`);\nconsole.log(` registry deploymentUrl: ${detail.deploymentUrl}`);\nconsole.log(' ^ Smithery proxy URL — stops working 2026-10-31.');\nconsole.log(' Use the vendor\\'s own MCP URL instead (shown on the server page).');\nconsole.log(` tools (${(detail.tools ?? []).length}):`);\nfor (const t of (detail.tools ?? []).slice(0, 8)) {\n const args = Object.keys(t.inputSchema?.properties ?? {}).join(', ') || '(none)';\n console.log(` - ${t.name}(${args})`);\n}\n\n// 4. Prove the managed-connection path is closed without an account.\nconst conn = await fetch(`${API}/connect/demo/${encodeURIComponent(top.qualifiedName)}`, {\n method: 'PUT',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ server: top.qualifiedName }),\n});\nconsole.log(`\\nconnect API without an API key -> HTTP ${conn.status} ${JSON.stringify(await conn.json())}`);\nconsole.log('(expected: 401. Accounts/API keys are discontinued on 2026-10-31.)');\n"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-8b9dede073ccc431",
"tool_kind": "file_edit"
}Recorded tool result
{
"type": "tool_result",
"seq": 59,
"ts": "2026-10-29T21:30:31.533Z",
"turn": 1,
"output": {
"content": [
{
"text": "Successfully wrote 2756 bytes to /sandbox/repo/smithery-example/registry-demo.mjs",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-8b9dede073ccc431",
"is_error": false,
"tool_kind": "file_edit"
}File edits
1 file
Writtensmithery-example/README.mdView changes
/sandbox/repo/smithery-example/README.md
Written content · previous contents were not recorded
# Smithery example (registry only)Run:```bashnode smithery-example/registry-demo.mjs "web search"```No dependencies, no install, no local services, no API key.## What this does and does not coverSmithery announced it is shutting down its hosted connection product on**2026-10-31** (Smithery is now part of Arcade.dev). Verified live on 2026-10-29:| Surface | Status || --- | --- || `https://api.smithery.ai/health`, `/servers`, `/servers/{name}` | **works, public, no auth** — used here || `https://smithery.run/{namespace}` (Connect REST) | **DNS does not resolve** — already down || `https://server.smithery.ai/{server}/mcp` (proxy) | 401 now, dead 2026-10-31 || `api.smithery.ai` connect/tool routes | 401 without a key; keys discontinued 2026-10-31 || `@smithery/api` SDK, Smithery CLI, typed SDKs (`pkg.smithery.ai`) | being marked deprecated |So the only durable workflow is: **use Smithery as a read-only MCP directory**, thenconnect to each vendor's own MCP URL (e.g. `https://mcp.exa.ai`) yourself.## Pricing (from smithery.ai/pricing, retrieved 2026-10-29)- **Hobby — Free**: 50K RPCs/month, 3 namespaces, managed OAuth, persistent connections.- **Pay as you Go — $10/mo**: 100K RPCs, 100 namespaces; footnote: "RPCs consume your$10 credits, then $0.10 / 1K" (i.e. $10 monthly credit + usage-based overage per1,000 RPCs).- **Custom — contact us**: custom rate limits, uptime SLA, Slack support.- Billing unit = **RPC** (one MCP request/tool call), metered per month per namespace.Moot after 2026-10-31: Smithery is refunding every charge since 2026-08-05 andcancelling all subscriptions. The surviving registry is free to browse.
Source: write · chatcmpl-tool-b76914e40def543d
Recorded tool call
{
"type": "tool_call",
"seq": 58,
"ts": "2026-10-29T21:30:31.533Z",
"name": "write",
"turn": 1,
"input": {
"path": "/sandbox/repo/smithery-example/README.md",
"content": "# Smithery example (registry only)\n\nRun:\n\n```bash\nnode smithery-example/registry-demo.mjs \"web search\"\n```\n\nNo dependencies, no install, no local services, no API key.\n\n## What this does and does not cover\n\nSmithery announced it is shutting down its hosted connection product on\n**2026-10-31** (Smithery is now part of Arcade.dev). Verified live on 2026-10-29:\n\n| Surface | Status |\n| --- | --- |\n| `https://api.smithery.ai/health`, `/servers`, `/servers/{name}` | **works, public, no auth** — used here |\n| `https://smithery.run/{namespace}` (Connect REST) | **DNS does not resolve** — already down |\n| `https://server.smithery.ai/{server}/mcp` (proxy) | 401 now, dead 2026-10-31 |\n| `api.smithery.ai` connect/tool routes | 401 without a key; keys discontinued 2026-10-31 |\n| `@smithery/api` SDK, Smithery CLI, typed SDKs (`pkg.smithery.ai`) | being marked deprecated |\n\nSo the only durable workflow is: **use Smithery as a read-only MCP directory**, then\nconnect to each vendor's own MCP URL (e.g. `https://mcp.exa.ai`) yourself.\n\n## Pricing (from smithery.ai/pricing, retrieved 2026-10-29)\n\n- **Hobby — Free**: 50K RPCs/month, 3 namespaces, managed OAuth, persistent connections.\n- **Pay as you Go — $10/mo**: 100K RPCs, 100 namespaces; footnote: \"RPCs consume your\n $10 credits, then $0.10 / 1K\" (i.e. $10 monthly credit + usage-based overage per\n 1,000 RPCs).\n- **Custom — contact us**: custom rate limits, uptime SLA, Slack support.\n- Billing unit = **RPC** (one MCP request/tool call), metered per month per namespace.\n\nMoot after 2026-10-31: Smithery is refunding every charge since 2026-08-05 and\ncancelling all subscriptions. The surviving registry is free to browse.\n"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b76914e40def543d",
"tool_kind": "file_edit"
}Recorded tool result
{
"type": "tool_result",
"seq": 60,
"ts": "2026-10-29T21:30:31.533Z",
"turn": 1,
"output": {
"content": [
{
"text": "Successfully wrote 1680 bytes to /sandbox/repo/smithery-example/README.md",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b76914e40def543d",
"is_error": false,
"tool_kind": "file_edit"
}›Thinking…
Wait a minute—the tool list in the detailed response from earlier was for exa, and the tool names were web_search_exa, web_fetch_exa. Okay. Let me run the script.
Note: search.pageSize parameter—in the documentation, was pageSize listed as a parameter? I used it in the earlier curl and got 2 results back. No problem.
Alright, let's run it.
cd /sandbox/repo && timeout 90 node smithery-example/registry-demo.mjs "web search" 2>&1 | head -40
health: ok @ 2026-10-29T21:30:33.437Z
health: ok @ 2026-10-29T21:30:33.437Z
search "web search" -> 5 shown
- brave verified=true uses=119026 Brave Search
- keenable/web-search verified=true uses=2746 Keenable Web Search
- exa verified=true uses=9181 Exa Search
- jina verified=true uses=3481 Jina AI
- ghostrouter/ghostrouter-web verified=false uses=5398 Ghostrouter
Brave Search (brave)
registry deploymentUrl: https://brave.run.tools
^ Smithery proxy URL — stops working 2026-10-31.
Use the vendor's own MCP URL instead (shown on the server page).
tools (8):
- brave_web_search(q, count, units, offset, country, summary, ui_lang, freshness, goggles_id, safesearch, spellcheck, search_lang, result_filter, extra_snippets, text_decorations)
- brave_news_search(q, count, offset, country, ui_lang, freshness, safesearch, spellcheck, search_lang, text_decorations)
- brave_image_search(q, count, country, safesearch, spellcheck, search_lang)
- brave_video_search(q, count, offset, country, ui_lang, freshness, safesearch, spellcheck, search_lang)
- brave_local_search(ids, units, ui_lang, search_lang)
- brave_llm_context(count, query, country, freshness, spellcheck, search_lang, enable_local, context_threshold_mode, enable_source_metadata, maximum_number_of_urls, maximum_number_of_tokens, maximum_number_of_snippets, maximum_number_of_tokens_per_url, maximum_number_of_snippets_per_url)
- brave_place_search(count, query, units, geoloc, radius, country, ui_lang, latitude, location, longitude, safesearch, spellcheck, search_lang)
- brave_summarizer(key, entity_info)
connect API without an API key -> HTTP 401 {"error":"unauthorized","message":"Missing Authorization header"}
(expected: 401. Accounts/API keys are discontinued on 2026-10-31.)
Recorded tool call
{
"type": "tool_call",
"seq": 63,
"ts": "2026-10-29T21:30:33.333Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /sandbox/repo && timeout 90 node smithery-example/registry-demo.mjs \"web search\" 2>&1 | head -40"
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b19c1dc5b1d710d4",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 64,
"ts": "2026-10-29T21:30:34.956Z",
"turn": 1,
"output": {
"content": [
{
"text": "health: ok @ 2026-10-29T21:30:33.437Z\n\nsearch \"web search\" -> 5 shown\n - brave verified=true uses=119026 Brave Search\n - keenable/web-search verified=true uses=2746 Keenable Web Search\n - exa verified=true uses=9181 Exa Search\n - jina verified=true uses=3481 Jina AI\n - ghostrouter/ghostrouter-web verified=false uses=5398 Ghostrouter\n\nBrave Search (brave)\n registry deploymentUrl: https://brave.run.tools\n ^ Smithery proxy URL — stops working 2026-10-31.\n Use the vendor's own MCP URL instead (shown on the server page).\n tools (8):\n - brave_web_search(q, count, units, offset, country, summary, ui_lang, freshness, goggles_id, safesearch, spellcheck, search_lang, result_filter, extra_snippets, text_decorations)\n - brave_news_search(q, count, offset, country, ui_lang, freshness, safesearch, spellcheck, search_lang, text_decorations)\n - brave_image_search(q, count, country, safesearch, spellcheck, search_lang)\n - brave_video_search(q, count, offset, country, ui_lang, freshness, safesearch, spellcheck, search_lang)\n - brave_local_search(ids, units, ui_lang, search_lang)\n - brave_llm_context(count, query, country, freshness, spellcheck, search_lang, enable_local, context_threshold_mode, enable_source_metadata, maximum_number_of_urls, maximum_number_of_tokens, maximum_number_of_snippets, maximum_number_of_tokens_per_url, maximum_number_of_snippets_per_url)\n - brave_place_search(count, query, units, geoloc, radius, country, ui_lang, latitude, location, longitude, safesearch, spellcheck, search_lang)\n - brave_summarizer(key, entity_info)\n\nconnect API without an API key -> HTTP 401 {\"error\":\"unauthorized\",\"message\":\"Missing Authorization header\"}\n(expected: 401. Accounts/API keys are discontinued on 2026-10-31.)\n",
"type": "text"
}
]
},
"run_id": "cmvu23h8i00t90iqsdxn4yi5u",
"tool_id": "chatcmpl-tool-b19c1dc5b1d710d4",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Working example. Now, let me write the answer concisely:
- What was built + execution results.
- Pricing.
- Manageability assessment.
- Blockers: no Smithery account/API key; smithery.run is already down; SDK/CLI are scheduled for deprecation → can't build actual connection examples; vendor MCP URLs require vendor keys (e.g., Exa/Brave API keys), but I don't have those.
- Local stack unnecessary, no long-running commands — confirmed.
Following instructions, be blunt: the main hosted workflow (Connect via SDK/API) has no viable developer workflow → state it and stop; the registry portion has already been delivered.
Should I git commit? Not requested. Leave files as-is.
What I built
/sandbox/repo/smithery-example/registry-demo.mjs (+ README.md) — zero-dependency Node script, no install, no local services, no long-running commands. Ran it successfully:
node smithery-example/registry-demo.mjs "web search"
→ health ok, 5 registry hits, Brave Search tool list w/ input schemas, connect API → 401
The blocker (plainly)
Smithery's hosted product is being shut down, and most of it is already dead. Smithery is now part of Arcade.dev; the shutdown notice on smithery.ai says October 31, 2026 — two days from now (sandbox date: Oct 29, 2026). Verified live:
| Surface | Result |
|---|---|
api.smithery.ai/health, /servers, /servers/{name} | ✅ public, no auth — this is what the example uses |
smithery.run/{namespace} (Connect REST) | ❌ DNS doesn't resolve — already gone |
server.smithery.ai/{server}/mcp (proxy) | 401 now, dead Oct 31 |
| Connect/tool routes, accounts, API keys | 401 without key; keys discontinued Oct 31 |
@smithery/api SDK, CLI, typed SDKs | being marked deprecated |
So the "connect an agent to MCPs through Smithery" workflow — the actual product — has no developer workflow I can act on. I also have no Smithery account/API key and can't create one (and it'd be void in 2 days). The only durable thing left is Smithery as a read-only MCP directory: look up a server, then connect to the vendor's own MCP URL (e.g. https://mcp.exa.ai) yourself — which needs a vendor key (Exa/Brave), which I also don't have. I stopped there rather than build on a deprecated SDK.
Pricing (from smithery.ai/pricing, today)
- Hobby — Free: 50K RPCs/month, 3 namespaces, managed OAuth, persistent connections
- Pay as you Go — $10/mo: 100K RPCs, 100 namespaces; footnote: "RPCs consume your $10 credits, then $0.10 / 1K" → $10 monthly credit, then usage-based $0.10 per 1,000 RPCs
- Custom — contact us: custom rate limits, uptime SLA, Slack support
- Metering unit is the RPC (one MCP request/tool call), per month, per namespace. Now moot: Smithery is refunding every charge since Aug 5, 2026 and cancelling all subscriptions; the surviving registry is free.
Will this be easy for me to manage?
No — and not because of complexity. The registry API is trivial to manage (plain REST, no auth, no state). The managed-connection product would have been easy too (stateless REST, OAuth/token refresh handled for you, scoped service tokens) — but it ceases to exist Oct 31, so anything built on it is unmaintainable by definition. If you want the capability Smithery offered, the successor path is Arcade.dev (same team) or connecting to vendor MCP URLs directly; say the word and I'll prototype one of those instead.
AX Fundamentals
23 checks. Open an area for details.
This check is a quick preview. Test more tasks and models with Gauge Agents.
Test your product with Gauge Agents