Smithery

Smithery is an MCP server registry and hosting platform that lets developers discover, publish, and connect to Model Context Protocol servers from any AI agent. The platform combines a public registry of thousands of community MCP servers with a managed gateway that handles OAuth, credential storage, session state, protocol compliance, and webhook triggers — so agents can call tools across servers via a single stateless Connect API. Smithery also distributes a CLI, a TypeScript API client, a local runner, a Skills Registry, deep-linking integrations for popular MCP clients (Claude Desktop, Cursor, Continue), and uplink support for exposing local servers as hosted connections.

2 APIs 27 Features
AIAgentsMCPModel Context ProtocolRegistryHostingToolsSkillsMarketplaceDeveloper Platform

APIs

Smithery Registry API

Discover, publish, and manage MCP (Model Context Protocol) servers and Agent Skills on Smithery. Browse the public registry of thousands of MCP servers, search tools across serv...

Smithery Connect API

Connect AI agents to any MCP server hosted on Smithery without managing OAuth flows, credential storage, or session state. Create stateless connections under a namespace, execut...

Collections

Pricing Plans

Rate Limits

Smithery Ai Rate Limits

6 limits

RATE LIMITS

FinOps

Features

Public MCP server registry with thousands of community-published MCP servers
Server publishing via URL (Streamable HTTP) or MCPB bundle for stdio-based servers
Managed gateway handling MCP protocol compliance, metadata enrichment, and caching
Auto-generated OAuth UI modals for servers requiring API keys or user configuration
Stateless Connect API — agents talk to MCP servers without holding session state client-side
Zero OAuth setup with encrypted credential storage and automatic credential refresh
Skills Registry — reusable prompt-based skills installable via `npx skills add`
Namespaces for grouping servers, connections, and skills under a user or organization
Triggers — expose MCP server events as webhooks; manage subscriptions per-connection or per-namespace
Uplink — expose a local MCP server as a hosted connection without deploying it
Deep linking for one-click client integration (Claude Desktop, Cursor, Continue, etc.)
Scoped service tokens for machine-to-machine access with per-namespace and per-connection scoping
Team API keys with admin-only create/list/revoke flow under organization namespaces
Custom domains for hosted MCP servers, managed at the registry level
Per-server secrets management for storing API keys and credentials used at runtime
Release management with logs, streaming SSE log feed, and resume-on-paused-release support
Runtime log retrieval for hosted MCP servers
MCP JSON-RPC endpoint exposed per connection at /connect/{namespace}/{connectionId}/mcp
Cross-server tool search at /tools — find any tool across the entire registry
Smithery CLI (`smithery`) installable via npm, Homebrew, or Scoop for managing MCP servers and skills
smithery runner — local MCP launcher for stdio servers
smithery-cli-mcp — official MCP server for the Smithery CLI itself
TypeScript API client (Apache-2.0)
Integration with Vercel AI SDK, Claude Desktop, Cursor, Continue, and any MCP-compatible client
agent.pw — share APIs with agents without sharing secrets
mouseless — Rust MCP server for macOS desktop control
hylo workflow engine with hylo-plugins for managed-agent and cloud-claude

Semantic Vocabularies

Smithery Ai Context

0 classes · 7 properties

JSON-LD

API Governance Rules

Smithery API Rules

16 rules · 10 errors 3 warnings

SPECTRAL

JSON Structure

Smithery Connection Structure

8 properties

JSON STRUCTURE

Smithery Server Structure

15 properties

JSON STRUCTURE

Example Payloads

Smithery Mcp Invoke Example

2 fields

EXAMPLE

Resources

🌐
Portal
Portal
🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
🔗
OpenAPI
OpenAPI
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
💻
CodeExamples
CodeExamples
👥
GitHubOrganization
GitHubOrganization
🔗
CLI
CLI
🔧
Tools
Tools
📦
SDKs
SDKs
🔧
Tools
Tools
🔧
Tools
Tools
💻
CodeExamples
CodeExamples
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔧
Tools
Tools
🔧
Tools
Tools
🔗
Plugins
Plugins
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
💰
Pricing
Pricing
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Smithery Registry API
  version: 1.0.0
items:
- info:
    name: Default
    type: folder
  items:
  - info:
      name: Health check
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/health
    docs: Check if the service is running
- info:
    name: servers
    type: folder
  items:
  - info:
      name: Get a server
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/servers/:qualifiedName
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
    docs: Retrieve server details including connections, tools, and security status.
  - info:
      name: Create a server
      type: http
    http:
      method: PUT
      url: https://api.smithery.ai/servers/:qualifiedName
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
      body:
        type: json
        data: '{}'
    docs: Create a new server. Idempotent — returns success if the server already exists and is owned by the caller.
  - info:
      name: Update a server
      type: http
    http:
      method: PATCH
      url: https://api.smithery.ai/servers/:qualifiedName
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
      body:
        type: json
        data: '{}'
    docs: Update server metadata such as display name, description, repository, icon, or visibility.
  - info:
      name: Delete a server
      type: http
    http:
      method: DELETE
      url: https://api.smithery.ai/servers/:qualifiedName
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
    docs: Permanently delete a server, its releases, and associated resources.
  - info:
      name: Download server bundle
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/servers/:qualifiedName/download
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
    docs: Download the MCPB bundle for the latest successful stdio release.
  - info:
      name: List releases
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/servers/:qualifiedName/releases
      params:
      - name: page
        value: ''
        type: query
      - name: pageSize
        value: ''
        type: query
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
    docs: List releases ordered by most recent first. Logs are omitted — fetch a specific release to see logs.
  - info:
      name: Publish a server
      type: http
    http:
      method: PUT
      url: https://api.smithery.ai/servers/:qualifiedName/releases
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
      body:
        type: multipart-form
        data:
        - name: payload
          type: text
          value: ''
        - name: module
          type: text
          value: ''
        - name: sourcemap
          type: text
          value: ''
        - name: bundle
          type: text
          value: ''
    docs: Submit a release via multipart form. Supports hosted (JS module upload), external (URL), and stdio (MCPB bundle)
      release types.
  - info:
      name: Get a release
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/servers/:qualifiedName/releases/:id
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
      - name: id
        value: ''
        type: path
    docs: Retrieve release details including status, git metadata, pipeline logs, and MCP endpoint URL.
  - info:
      name: Stream release logs
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/servers/:qualifiedName/releases/:id/stream
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
      - name: id
        value: ''
        type: path
    docs: Real-time SSE stream of release logs and status updates.
  - info:
      name: Resume a release
      type: http
    http:
      method: POST
      url: https://api.smithery.ai/servers/:qualifiedName/releases/:id/resume
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
      - name: id
        value: ''
        type: path
    docs: Resume a paused release (e.g. after OAuth authorization). Use id='latest' to resume the most recent one.
  - info:
      name: List runtime logs
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/servers/:qualifiedName/logs
      params:
      - name: from
        value: ''
        type: query
        description: Start of time range (ISO 8601).
      - name: to
        value: ''
        type: query
        description: End of time range (ISO 8601).
      - name: limit
        value: ''
        type: query
        description: Max invocations to return. Defaults to 20.
      - name: search
        value: ''
        type: query
        description: Text search across log messages.
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
    docs: Fetch recent runtime logs grouped by invocation.
  - info:
      name: List secrets
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/servers/:qualifiedName/secrets
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
    docs: List secret names. Values are not returned.
  - info:
      name: Set a secret
      type: http
    http:
      method: PUT
      url: https://api.smithery.ai/servers/:qualifiedName/secrets
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
      body:
        type: json
        data: '{}'
    docs: Create or update a secret value.
  - info:
      name: Delete a secret
      type: http
    http:
      method: DELETE
      url: https://api.smithery.ai/servers/:qualifiedName/secrets/:secretName
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
      - name: secretName
        value: ''
        type: path
    docs: Remove a secret by name.
  - info:
      name: Get server icon
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/servers/:qualifiedName/icon
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
    docs: Retrieve the server's icon image. Returns the image directly with appropriate content type.
  - info:
      name: Upload server icon
      type: http
    http:
      method: PUT
      url: https://api.smithery.ai/servers/:qualifiedName/icon
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
    docs: 'Upload or replace the server icon. Accepts a single image file via multipart/form-data. Max 1MB. Supported formats:
      PNG, JPEG, GIF, SVG, WebP.'
  - info:
      name: Delete server icon
      type: http
    http:
      method: DELETE
      url: https://api.smithery.ai/servers/:qualifiedName/icon
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
    docs: Remove the server's icon.
  - info:
      name: List all servers
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/servers
      params:
      - name: q
        value: ''
        type: query
        description: Search query for full-text and semantic search across server names and descriptions.
      - name: page
        value: ''
        type: query
        description: Page number (1-indexed).
      - name: pageSize
        value: ''
        type: query
        description: Number of results per page (default 10, max 100).
      - name: topK
        value: ''
        type: query
        description: Maximum number of candidate results to consider from the search index before pagination.
      - name: fields
        value: ''
        type: query
        description: Comma-separated list of fields to include in response
      - name: ids
        value: ''
        type: query
        description: Filter by specific server IDs.
      - name: qualifiedName
        value: ''
        type: query
        description: 'Exact match on the server''s qualified name (e.g. "smithery/hello-world"). Deprecated: use GET /servers/:namespace/:server
          instead.'
      - name: namespace
        value: ''
        type: query
        description: Filter by the namespace that owns the server.
      - name: remote
        value: ''
        type: query
        description: Filter by remote status. Remote servers are accessed via URL; non-remote servers run locally via stdio.
      - name: isDeployed
        value: ''
        type: query
        description: Filter by deployment status. Deployed servers are hosted on Smithery infrastructure.
      - name: verified
        value: ''
        type: query
        description: Filter to only verified servers.
      - name: ownerId
        value: ''
        type: query
        description: Filter by the server owner's user ID.
      - name: repoOwner
        value: ''
        type: query
        description: Filter by GitHub repository owner from repository_url.
      - name: repoName
        value: ''
        type: query
        description: Filter by GitHub repository name from repository_url.
      - name: seed
        value: ''
        type: query
        description: Random seed for deterministic pagination. When provided, results use a stable sort order that is consistent
          across pages for the same seed value.
    docs: 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.
- info:
    name: domains
    type: folder
  items:
  - info:
      name: List domains
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/servers/:qualifiedName/domains
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
    docs: List the domains for a server.
  - info:
      name: Update managed domain
      type: http
    http:
      method: PATCH
      url: https://api.smithery.ai/servers/:qualifiedName/domains/:domainId
      params:
      - name: qualifiedName
        value: ''
        type: path
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use
          %2F to encode the slash.
      - name: domainId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Update the managed run.tools slug for a server.
- info:
    name: skills
    type: folder
  items:
  - info:
      name: List or search skills
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/skills
      params:
      - name: q
        value: ''
        type: query
        description: Search query for full-text and semantic search across skill names and descriptions.
      - name: category
        value: ''
        type: query
        description: Filter by skill category (e.g. 'code', 'data', 'web').
      - name: namespace
        value: ''
        type: query
        description: Filter by the namespace that owns the skill.
      - name: slug
        value: ''
        type: query
        description: 'Filter by exact skill slug within a namespace. Deprecated: use GET /skills/:namespace/:slug instead.'
      - name: ownerId
        value: ''
        type: query
        description: Filter by the skill owner's organization ID.
      - name: verified
        value: ''
        type: query
        description: Filter by whether the skill's namespace is verified.
      - name: page
        value: ''
        type: query
        description: Page number (1-indexed).
      - name: pageSize
        value: ''
        type: query
        description: Number of results per page (default 20, max 100).
      - name: topK
        value: ''
        type: query
        description: Maximum number of candidate results to consider from the search index before pagination.
      - name: fields
        value: ''
        type: query
        description: Comma-separated list of fields to include in response
    docs: Search and browse reusable prompt-based skills. Supports full-text and semantic search via the `q` parameter, and
      filtering by category, namespace, or slug.
  - info:
      name: Create a new skill (deprecated)
      type: http
    http:
      method: POST
      url: https://api.smithery.ai/skills
      body:
        type: json
        data: '{}'
    docs: '**Deprecated:** Use PUT /skills/{namespace}/{slug} instead. Create a new skill by linking a GitHub repository containing
      a SKILL.md file.'
  - info:
      name: Get a skill
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/skills/:namespace/:slug
      params:
      - name: namespace
        value: ''
        type: path
      - name: slug
        value: ''
        type: path
    docs: Get a single skill by its namespace and slug.
  - info:
      name: Create or update a skill
      type: http
    http:
      method: PUT
      url: https://api.smithery.ai/skills/:namespace/:slug
      params:
      - name: namespace
        value: ''
        type: path
      - name: slug
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Idempotent endpoint to create or update a GitHub-backed skill. Send application/json with `gitUrl`.
  - info:
      name: Delete a skill
      type: http
    http:
      method: DELETE
      url: https://api.smithery.ai/skills/:namespace/:slug
      params:
      - name: namespace
        value: ''
        type: path
      - name: slug
        value: ''
        type: path
    docs: Delete a skill by namespace and slug. Requires ownership of the namespace.
  - info:
      name: Download skill bundle
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/skills/:namespace/:slug/download
      params:
      - name: namespace
        value: ''
        type: path
      - name: slug
        value: ''
        type: path
    docs: Download a ZIP bundle containing all skill files.
  - info:
      name: Sync skill metadata from GitHub (deprecated)
      type: http
    http:
      method: POST
      url: https://api.smithery.ai/skills/:namespace/:slug/sync
      params:
      - name: namespace
        value: ''
        type: path
      - name: slug
        value: ''
        type: path
    docs: '**Deprecated:** Use PUT /skills/{namespace}/{slug} instead. Refetch SKILL.md and repository stars from GitHub and
      update the skill record.'
  - info:
      name: Upload a skill bundle
      type: http
    http:
      method: PUT
      url: https://api.smithery.ai/skills/:namespace/:slug/upload
      params:
      - name: namespace
        value: ''
        type: path
      - name: slug
        value: ''
        type: path
      body:
        type: multipart-form
        data:
        - name: archive
          type: text
          value: ''
    docs: Upload or replace a skill bundle via multipart/form-data with an `archive` file.
- info:
    name: tokens
    type: folder
  items:
  - info:
      name: Create a service token
      type: http
    http:
      method: POST
      url: https://api.smithery.ai/tokens
      body:
        type: json
        data: '{}'
    docs: Create a service token for machine-to-machine authentication. Accepts API key or bearer token. Optionally apply
      restrictions.
- info:
    name: namespaces
    type: folder
  items:
  - info:
      name: Get user's namespaces or search namespaces
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/namespaces
      params:
      - name: q
        value: ''
        type: query
        description: Text search query (prefix match on name)
      - name: ownerId
        value: ''
        type: query
        description: Filter by owner ID
      - name: hasServers
        value: ''
        type: query
        description: Filter namespaces with servers
      - name: hasSkills
        value: ''
        type: query
        description: Filter namespaces with skills
      - name: page
        value: ''
        type: query
      - name: pageSize
        value: ''
        type: query
      - name: fields
        value: ''
        type: query
        description: Comma-separated list of fields to include in response
    docs: 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.
  - info:
      name: Create a new namespace with generated name
      type: http
    http:
      method: POST
      url: https://api.smithery.ai/namespaces
    docs: Create a new namespace with a server-generated human-readable name, owned by the authenticated user
  - info:
      name: Create a new namespace
      type: http
    http:
      method: PUT
      url: https://api.smithery.ai/namespaces/:name
      params:
      - name: name
        value: ''
        type: path
    docs: 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.
  - info:
      name: Delete a namespace
      type: http
    http:
      method: DELETE
      url: https://api.smithery.ai/namespaces/:name
      params:
      - name: name
        value: ''
        type: path
    docs: 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.
  - info:
      name: Create a server under a namespace (deprecated)
      type: http
    http:
      method: PUT
      url: https://api.smithery.ai/namespaces/:namespace/servers/:server
      params:
      - name: server
        value: ''
        type: path
      - name: namespace
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: '**Deprecated:** Use PUT /servers/{namespace}/{server} instead. Create a new server under the specified namespace.
      This endpoint is idempotent.'
- info:
    name: organizations
    type: folder
  items:
  - info:
      name: List team API keys
      type: http
    http:
      method: GET
      url: https://api.smithery.ai/organizations/:orgId/api-keys
      params:
      - name: orgId
        value: ''
        type: path
    docs: Returns all API keys belonging to the organization. Requires admin role. Key values are not included in the response.
  - info:
      name: Create a team API key
      type: http
    http:
      method: POST
      url: https://api.smithery.ai/organizations/:orgId/api-keys
      params:
      - name: orgId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Creates an API key owned by the organization. Requires admin role.
  - info:
      name: Revoke a team API key
      type: http
    http:
      method: DELETE
      url: https://api.smithery.ai/organizations/:orgId/api-keys/:keyId
      params:
      - name: orgId
        value: ''
        type: path
      - name: keyId
        value: ''
        type: path
    docs: Deletes an API key belonging to the organization. Requires admin role.
bundled: true