Koskamo

Agent Switchboard MCP

Agent Switchboard is a curated directory of 900 AI agents, MCP servers, and agentic tools. This MCP server allows AI agents to search the catalog, retrieve agent details, list categories, compare tools, find alternatives, and generate connection bundles for up to 10 listings simultaneously.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Agent Switchboard MCP logo, by assafbar2Community listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by assafbar2
MCP endpoint (Streamable HTTP)
https://agentswitchboard.dev/api/mcp
Vendor documentation

What its tools do

7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (1)

7 of 7 have a description · 7 of 7 declare behavior hints · 6 of 6 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for AI agents and MCP servers by name, category, or access method
  • Compare features and facts between two or three different agent listings
  • Find alternative tools that can stand in for a specific agent
  • Generate a single MCP client configuration bundle for multiple tools

Source and maintenance

Community listingRegistry 1.2.0
Maintenance checked

Protocol and capabilities

Server
agentswitchboard 1.8.0
MCP protocol negotiated in check
2025-11-25
Tools
7 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Agent Switchboard is a curated directory of AI agents, MCP servers, and agentic tools. Use search_agents to find tools for a job (pick a task such as "query-a-database", or filter by category, access method, official, verified, or auth type; since keeps what was added lately; sort by newest or most skills), get_agent for one listing, and list_categories for valid category slugs. To help a user choose: compare_agents puts 2 or 3 listings side by side, alternatives_to finds listings that could stand in for one, and connect_bundle turns up to 10 listings into one MCP client config to paste, with how to connect the rest. Each result's url is its listing page on the site. submit_listing only files a public suggestion for human review; call it only when the user asks to list a product and has confirmed the details.

Tools

7 advertised

search_agents — Search Agents
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the curated Agent Switchboard directory of AI agents, MCP servers, and agentic tools. Filter by task, category slug, access methods, official (first-party listings from major vendors), verified, and/or auth type; sort by relevance, newest, most skills, or name. Verified: we checked it works — its URLs load and its declared access (API, MCP, CLI or extension) responds. Re-checked monthly; the label drops if it stops working. Official: a first-party listing, published by the company behind the product under its own domain or GitHub org (e.g. Notion's own Notion MCP, not a community build), where that company is a major vendor (publicly traded, a frontier AI lab, or valued around $1B+). It records who publishes the product, not a paid placement, and is separate from Verified.

search_agents input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "auth": {
      "type": "array",
      "items": {
        "enum": [
          "none",
          "apiKey",
          "oauth2",
          "bearer"
        ],
        "type": "string"
      },
      "description": "Only listings with one of these auth types: none (no key or sign-in needed), apiKey, oauth2, bearer. A listing has one auth type, so several mean any of them"
    },
    "sort": {
      "enum": [
        "relevance",
        "newest",
        "skills",
        "name"
      ],
      "type": "string",
      "description": "Result order. relevance (default): best match first with search text; without it, best fit first for a task, else A→Z. newest: most recently added first. skills: most skills first. name: A→Z"
    },
    "task": {
      "type": "string",
      "description": "Task slug, e.g. \"query-a-database\": only the listings that do that job, best fit first. GET https://agentswitchboard.dev/api/tasks lists the tasks"
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1,
      "description": "Max results per page (1–50)"
    },
    "query": {
      "type": "string",
      "description": "Free-text search over name, description, skills, categories, tags, and provider (up to 200 characters; longer text is cut)"
    },
    "since": {
      "type": "string",
      "description": "Only listings added to the directory on or after this day: a date (YYYY-MM-DD), or a number of days back with today included (\"7\" is the last 7 days). Add sort \"newest\" to list the newest first"
    },
    "access": {
      "type": "array",
      "items": {
        "enum": [
          "api",
          "mcp",
          "cli",
          "browser-extension",
          "extension"
        ],
        "type": "string"
      },
      "description": "Require ALL of these access methods: api, mcp, cli, browser-extension (\"extension\" is accepted as an alias of browser-extension)"
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "minimum": 0,
      "description": "Number of results to skip, for pagination"
    },
    "category": {
      "type": "string",
      "description": "Category slug, e.g. \"code-devtools\", \"voice-messaging\""
    },
    "official": {
      "type": "boolean",
      "description": "Only first-party listings from major vendors (e.g. Notion's own Notion MCP)"
    },
    "verified": {
      "type": "boolean",
      "description": "Only Verified listings: checked to work, re-checked monthly"
    }
  },
  "additionalProperties": false
}
search_agents output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "total",
    "offset",
    "limit",
    "agents"
  ],
  "properties": {
    "limit": {
      "type": "integer"
    },
    "since": {
      "type": "string",
      "description": "With since: the first day kept (YYYY-MM-DD, UTC)"
    },
    "total": {
      "type": "integer",
      "description": "Total matches before paging"
    },
    "agents": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "description",
          "provider",
          "categories",
          "accessMethods",
          "authType",
          "verified",
          "official",
          "officialVendor",
          "url",
          "iconUrl"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "iconUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Absolute URL of the listing's 128px PNG icon, served by Agent Switchboard; null when it has none"
          },
          "authType": {
            "type": "string"
          },
          "official": {
            "type": "boolean",
            "description": "Official: a first-party listing, published by the company behind the product under its own domain or GitHub org (e.g. Notion's own Notion MCP, not a community build), where that company is a major vendor (publicly traded, a frontier AI lab, or valued around $1B+). It records who publishes the product, not a paid placement, and is separate from Verified."
          },
          "provider": {
            "type": "string"
          },
          "verified": {
            "type": "boolean",
            "description": "Verified: we checked it works — its URLs load and its declared access (API, MCP, CLI or extension) responds. Re-checked monthly; the label drops if it stops working."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string"
          },
          "accessMethods": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "officialVendor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "offset": {
      "type": "integer"
    }
  },
  "additionalProperties": false
}
search_agents annotations
{
  "title": "Search Agents",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_agent — Get Agent Details
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full detail for one agent by slug: skills, auth, streaming/push support, tags, provider links, and useItNow: how to start using it (MCP client config, install command, API base URL, setup links). Verified: we checked it works — its URLs load and its declared access (API, MCP, CLI or extension) responds. Re-checked monthly; the label drops if it stops working. Official: a first-party listing, published by the company behind the product under its own domain or GitHub org (e.g. Notion's own Notion MCP, not a community build), where that company is a major vendor (publicly traded, a frontier AI lab, or valued around $1B+). It records who publishes the product, not a paid placement, and is separate from Verified.

get_agent input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Agent slug, e.g. \"playwright-mcp\""
    }
  },
  "additionalProperties": false
}
get_agent output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "name",
    "slug",
    "description",
    "provider",
    "categories",
    "accessMethods",
    "authType",
    "verified",
    "official",
    "officialVendor",
    "url",
    "iconUrl",
    "agentUrl",
    "providerUrl",
    "skills",
    "tags",
    "supportsStreaming",
    "supportsPushNotifications",
    "mcpEndpoint",
    "mcpCommand",
    "install",
    "quickstartUrl",
    "apiBaseUrl",
    "useItNow"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "description"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "additionalProperties": true
      }
    },
    "addedAt": {
      "type": "string"
    },
    "iconUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "Absolute URL of the listing's 128px PNG icon, served by Agent Switchboard; null when it has none"
    },
    "install": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "type",
            "command"
          ],
          "properties": {
            "type": {
              "type": "string"
            },
            "command": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The command that installs its CLI"
    },
    "agentUrl": {
      "type": "string"
    },
    "authType": {
      "type": "string"
    },
    "official": {
      "type": "boolean",
      "description": "Official: a first-party listing, published by the company behind the product under its own domain or GitHub org (e.g. Notion's own Notion MCP, not a community build), where that company is a major vendor (publicly traded, a frontier AI lab, or valued around $1B+). It records who publishes the product, not a paid placement, and is separate from Verified."
    },
    "provider": {
      "type": "string"
    },
    "useItNow": {
      "type": "object",
      "required": [
        "tryThisFirst",
        "mcp",
        "cli",
        "api",
        "extension"
      ],
      "properties": {
        "api": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "baseUrl",
                "auth",
                "docsUrl"
              ],
              "properties": {
                "auth": {
                  "type": "string"
                },
                "baseUrl": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "docsUrl": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "cli": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "install",
                "docsUrl"
              ],
              "properties": {
                "docsUrl": {
                  "type": "string"
                },
                "install": {
                  "anyOf": [
                    {
                      "type": "object",
                      "required": [
                        "type",
                        "command"
                      ],
                      "properties": {
                        "type": {
                          "type": "string"
                        },
                        "command": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "mcp": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "endpoint",
                "command",
                "clientConfig",
                "cursorInstallUrl",
                "claudeConnectorUrl",
                "claudeCodeCommand",
                "setupPrompt",
                "docsUrl"
              ],
              "properties": {
                "command": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "docsUrl": {
                  "type": "string"
                },
                "endpoint": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "setupPrompt": {
                  "type": "string"
                },
                "clientConfig": {
                  "anyOf": [
                    {
                      "type": "object",
                      "required": [
                        "mcpServers"
                      ],
                      "properties": {
                        "mcpServers": {
                          "type": "object",
                          "additionalProperties": {}
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "cursorInstallUrl": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "claudeCodeCommand": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "claudeConnectorUrl": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "extension": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "tryThisFirst": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "lead",
                "prompts"
              ],
              "properties": {
                "lead": {
                  "type": "string"
                },
                "prompts": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "skill",
                      "text"
                    ],
                    "properties": {
                      "text": {
                        "type": "string"
                      },
                      "skill": {
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "description": "How to start using it, per access method: client config and install links for MCP, the install command for a CLI, base URL and auth for an API. Commands and addresses come from the vendor's own docs; when there are none, docsUrl is where its instructions are.",
      "additionalProperties": false
    },
    "verified": {
      "type": "boolean",
      "description": "Verified: we checked it works — its URLs load and its declared access (API, MCP, CLI or extension) responds. Re-checked monthly; the label drops if it stops working."
    },
    "apiBaseUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "Base URL of the vendor's public API"
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "mcpCommand": {
      "type": [
        "string",
        "null"
      ],
      "description": "The command that runs its MCP server locally"
    },
    "description": {
      "type": "string"
    },
    "mcpEndpoint": {
      "type": [
        "string",
        "null"
      ],
      "description": "The vendor's hosted MCP server address"
    },
    "providerUrl": {
      "type": "string"
    },
    "accessMethods": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "quickstartUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "The vendor's setup or getting-started page"
    },
    "officialVendor": {
      "type": [
        "string",
        "null"
      ]
    },
    "supportsStreaming": {
      "type": "boolean"
    },
    "supportsPushNotifications": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
get_agent annotations
{
  "title": "Get Agent Details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_categories — List Categories
Advertised by the server during the last successful anonymous check.
Advertised read-only

All directory categories with live agent counts. Slugs are valid inputs for search_agents.

list_categories input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
list_categories output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "categories"
  ],
  "properties": {
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "slug",
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "agentCount": {
            "type": "number"
          },
          "description": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
list_categories annotations
{
  "title": "List Categories",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_agents — Compare Agents
Advertised by the server during the last successful anonymous check.
Advertised read-only

Put 2 or 3 listings side by side, as the site's /compare page does. For each listing: the facts that set it apart from the others ("Only one with a CLI", "No auth required", "Most skills (12)"). Then one row per field, with each listing's value by slug: what it is, provider, official vendor, verified, access, auth, MCP server, CLI install, API base URL, skills, streaming, push, categories, tags, listed since. A row where every listing agrees has same: true. Facts from the listings' own data, never a verdict. A curated comparison of the same listings adds its intro line. Unknown or repeated slugs, and any past 3, are left out with a note.

compare_agents input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "slugs"
  ],
  "properties": {
    "slugs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 6,
      "minItems": 1,
      "description": "Listing slugs to compare, in column order: 2 or 3, e.g. [\"deepgram\", \"assemblyai\"]"
    }
  },
  "additionalProperties": false
}
compare_agents output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "title",
    "url",
    "intro",
    "agents",
    "rows",
    "notes"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "The comparison on the site"
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "key",
          "label",
          "same",
          "values"
        ],
        "properties": {
          "key": {
            "type": "string"
          },
          "same": {
            "type": "boolean",
            "description": "Every listing has the same value"
          },
          "label": {
            "type": "string"
          },
          "values": {
            "type": "object",
            "description": "Each listing's value, by slug",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "code"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "note": {
                      "type": "string"
                    }
                  },
                  "description": "A command or address from the listing's docs, with what it is",
                  "additionalProperties": false
                }
              ]
            }
          }
        },
        "additionalProperties": false
      }
    },
    "intro": {
      "type": [
        "string",
        "null"
      ],
      "description": "A curated comparison's editorial line; null for any other mix"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Named listings that were left out, and why"
    },
    "title": {
      "type": "string"
    },
    "agents": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "url",
          "iconUrl",
          "description",
          "provider",
          "categories",
          "accessMethods",
          "verified",
          "official",
          "authType",
          "setsApart"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "iconUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Absolute URL of the listing's 128px PNG icon, served by Agent Switchboard; null when it has none"
          },
          "authType": {
            "type": "string"
          },
          "official": {
            "type": "boolean",
            "description": "Official: a first-party listing, published by the company behind the product under its own domain or GitHub org (e.g. Notion's own Notion MCP, not a community build), where that company is a major vendor (publicly traded, a frontier AI lab, or valued around $1B+). It records who publishes the product, not a paid placement, and is separate from Verified."
          },
          "provider": {
            "type": "string"
          },
          "verified": {
            "type": "boolean",
            "description": "Verified: we checked it works — its URLs load and its declared access (API, MCP, CLI or extension) responds. Re-checked monthly; the label drops if it stops working."
          },
          "setsApart": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string"
          },
          "accessMethods": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
compare_agents annotations
{
  "title": "Compare Agents",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
alternatives_to — Alternatives To
Advertised by the server during the last successful anonymous check.
Advertised read-only

Listings that could stand in for one listing, strongest first, as on its /agents/<slug>/alternatives page. Each alternative is in the listing's main category, offers at least one of its access methods, and overlaps on what it does (shared skills and tags, rarer ones counting for more). Each comes with why: the access methods both offer and what they have in common. Up to 8. Fewer, or none, rather than a weak match. Also returns a link comparing the listing with its top two alternatives.

alternatives_to input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Agent slug, e.g. \"deepgram\""
    },
    "limit": {
      "type": "integer",
      "maximum": 8,
      "minimum": 1,
      "description": "Most alternatives to return (1–8, default 8)"
    }
  },
  "additionalProperties": false
}
alternatives_to output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "agent",
    "total",
    "url",
    "compareUrl",
    "basis",
    "alternatives"
  ],
  "properties": {
    "url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Its alternatives page; null when it has too few for one"
    },
    "agent": {
      "type": "object",
      "required": [
        "name",
        "slug",
        "url",
        "iconUrl",
        "description",
        "provider",
        "categories",
        "accessMethods",
        "verified",
        "official",
        "authType"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "iconUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "Absolute URL of the listing's 128px PNG icon, served by Agent Switchboard; null when it has none"
        },
        "authType": {
          "type": "string"
        },
        "official": {
          "type": "boolean",
          "description": "Official: a first-party listing, published by the company behind the product under its own domain or GitHub org (e.g. Notion's own Notion MCP, not a community build), where that company is a major vendor (publicly traded, a frontier AI lab, or valued around $1B+). It records who publishes the product, not a paid placement, and is separate from Verified."
        },
        "provider": {
          "type": "string"
        },
        "verified": {
          "type": "boolean",
          "description": "Verified: we checked it works — its URLs load and its declared access (API, MCP, CLI or extension) responds. Re-checked monthly; the label drops if it stops working."
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "description": {
          "type": "string"
        },
        "accessMethods": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "basis": {
      "type": "string",
      "description": "What every alternative has in common with the listing"
    },
    "total": {
      "type": "integer",
      "description": "How many alternatives it has, up to 8"
    },
    "compareUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "The listing side by side with its top two alternatives"
    },
    "alternatives": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "url",
          "iconUrl",
          "description",
          "provider",
          "categories",
          "accessMethods",
          "verified",
          "official",
          "authType",
          "sharedAccess",
          "inCommon",
          "why"
        ],
        "properties": {
          "url": {
            "$ref": "#/properties/agent/properties/url"
          },
          "why": {
            "type": "string"
          },
          "name": {
            "$ref": "#/properties/agent/properties/name"
          },
          "slug": {
            "$ref": "#/properties/agent/properties/slug"
          },
          "iconUrl": {
            "$ref": "#/properties/agent/properties/iconUrl"
          },
          "authType": {
            "$ref": "#/properties/agent/properties/authType"
          },
          "inCommon": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Skills and tags both have, rarest first"
          },
          "official": {
            "$ref": "#/properties/agent/properties/official"
          },
          "provider": {
            "$ref": "#/properties/agent/properties/provider"
          },
          "verified": {
            "$ref": "#/properties/agent/properties/verified"
          },
          "categories": {
            "$ref": "#/properties/agent/properties/categories"
          },
          "description": {
            "$ref": "#/properties/agent/properties/description"
          },
          "sharedAccess": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Access methods both offer"
          },
          "accessMethods": {
            "$ref": "#/properties/agent/properties/accessMethods"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
alternatives_to annotations
{
  "title": "Alternatives To",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
connect_bundle — Connect Bundle
Advertised by the server during the last successful anonymous check.
Advertised read-only

One MCP client config to paste ({"mcpServers": …}, as Cursor and other MCP clients read it) for up to 10 listings, and how each one connects. A listing is in the config when its own docs give a hosted server address or a local command. An MCP server whose docs give neither comes with its setup guide, and setupPrompt asks a coding agent to set all of those up. A listing without an MCP server comes with its CLI install command, API address or docs. Also returns a claude mcp add command for each server in the config, for Claude Code, and the /stack link for the listings. Nothing is guessed: every address and command is copied from the vendor's docs, as on the listing's page.

connect_bundle input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "slugs"
  ],
  "properties": {
    "slugs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 30,
      "minItems": 1,
      "description": "Listing slugs, in the order to list them: 1 to 10, e.g. a stack's items"
    }
  },
  "additionalProperties": false
}
connect_bundle output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "stackUrl",
    "config",
    "claudeCode",
    "setupPrompt",
    "items",
    "notes"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "url",
          "iconUrl",
          "description",
          "provider",
          "categories",
          "accessMethods",
          "verified",
          "official",
          "authType",
          "how",
          "server",
          "docsUrl",
          "note"
        ],
        "properties": {
          "how": {
            "enum": [
              "config",
              "guide",
              "other"
            ],
            "type": "string",
            "description": "config: in the config; guide: an MCP server to set up from its guide; other: no MCP server"
          },
          "url": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "note": {
            "type": "string",
            "description": "How it connects"
          },
          "slug": {
            "type": "string"
          },
          "server": {
            "anyOf": [
              {
                "$ref": "#/properties/config/anyOf/0/properties/mcpServers/additionalProperties"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its entry in the config, under its slug"
          },
          "docsUrl": {
            "type": "string",
            "description": "Its setup instructions"
          },
          "iconUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Absolute URL of the listing's 128px PNG icon, served by Agent Switchboard; null when it has none"
          },
          "authType": {
            "type": "string"
          },
          "official": {
            "type": "boolean",
            "description": "Official: a first-party listing, published by the company behind the product under its own domain or GitHub org (e.g. Notion's own Notion MCP, not a community build), where that company is a major vendor (publicly traded, a frontier AI lab, or valued around $1B+). It records who publishes the product, not a paid placement, and is separate from Verified."
          },
          "provider": {
            "type": "string"
          },
          "verified": {
            "type": "boolean",
            "description": "Verified: we checked it works — its URLs load and its declared access (API, MCP, CLI or extension) responds. Re-checked monthly; the label drops if it stops working."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string"
          },
          "accessMethods": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Named listings that were left out, and why"
    },
    "config": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "mcpServers"
          ],
          "properties": {
            "mcpServers": {
              "type": "object",
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "url"
                    ],
                    "properties": {
                      "url": {
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "command",
                      "args"
                    ],
                    "properties": {
                      "args": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "command": {
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  }
                ]
              }
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The MCP client config to paste; null when no listing has an address or command to copy"
    },
    "summary": {
      "type": "string",
      "description": "How many are in the config, to set up from a guide, and without an MCP server"
    },
    "stackUrl": {
      "type": "string",
      "description": "These listings as a shared stack on the site"
    },
    "claudeCode": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "A claude mcp add command for each server in the config"
    },
    "setupPrompt": {
      "type": [
        "string",
        "null"
      ],
      "description": "For a coding agent: set up each MCP server that has only a setup guide"
    }
  },
  "additionalProperties": false
}
connect_bundle annotations
{
  "title": "Connect Bundle",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
submit_listing — Submit a Listing
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Suggest a new listing for the Agent Switchboard directory. This opens a PUBLIC GitHub issue that the maintainer reviews by hand; it does not publish anything. Use it only when the user asks to submit or list a product, after you show them the name, URL, and description you will send and they agree. Call search_agents first: if the product is already listed, tell the user instead. Limited to 5 submissions per hour per caller and one per URL per day. Not safe to retry blindly: each call that returns status "filed" opens a new issue.

submit_listing input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "name",
    "url",
    "description"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 500,
      "description": "The product's own homepage, docs, or GitHub repo (https)"
    },
    "name": {
      "type": "string",
      "maxLength": 100,
      "minLength": 2,
      "description": "Product name, e.g. \"Acme MCP\""
    },
    "access": {
      "type": "array",
      "items": {
        "enum": [
          "api",
          "mcp",
          "cli",
          "browser-extension"
        ],
        "type": "string"
      },
      "maxItems": 4,
      "description": "How agents reach it: api, mcp, cli, browser-extension"
    },
    "category": {
      "type": "string",
      "maxLength": 60,
      "description": "Suggested category slug from list_categories"
    },
    "description": {
      "type": "string",
      "maxLength": 1500,
      "minLength": 20,
      "description": "What it does and who it is for, in plain words (20–1500 characters)"
    },
    "contact_email": {
      "type": "string",
      "format": "email",
      "maxLength": 200,
      "description": "Optional. Sent privately to the maintainer for follow-up, never posted. Only include an address the user gave you for this purpose."
    }
  },
  "additionalProperties": false
}
submit_listing output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status",
    "message"
  ],
  "properties": {
    "status": {
      "enum": [
        "filed",
        "already_listed",
        "rate_limited",
        "unavailable"
      ],
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "issueUrl": {
      "type": "string"
    },
    "existingSlug": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
submit_listing annotations
{
  "title": "Submit a Listing",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
638 ms
95th percentile latency
638 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 638 ms · metadata changed · 7 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http agent-switchboard-mcp https://agentswitchboard.dev/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add agent-switchboard-mcp --url https://agentswitchboard.dev/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable agent-switchboard-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "agent-switchboard-mcp": {
      "url": "https://agentswitchboard.dev/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "agent-switchboard-mcp": {
      "type": "streamableHttp",
      "url": "https://agentswitchboard.dev/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start agent-switchboard-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "agent-switchboard-mcp": {
      "type": "http",
      "url": "https://agentswitchboard.dev/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http agent-switchboard-mcp https://agentswitchboard.dev/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://agentswitchboard.dev/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "agent-switchboard-mcp": {
      "serverUrl": "https://agentswitchboard.dev/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Agent Switchboard MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.