MCP catalog

Package: agentrouter.mcp.v1 Service: MCPCatalogService

Endpoints

Create or update an MCP catalog server

What it does: Creates or replaces a catalog entry. Idempotent on id. Operator-only.

Request fields:

FieldRequiredDescription
idyesRequired: stable catalog entry id (e.g. "github").
nameyesRequired: display name.
descriptionnoOptional description.
urlyesRequired: customer-facing URL. The flag is renamed to --catalog-url to avoid colliding with the root command's persistent --base-url override.
icon_urlnoOptional icon URL.
categoriesnoOptional category tags.
notenoOptional free-form note.
authenticationnoOptional authentication kind label.
requires_authnoWhether this catalog entry requires a credential.
requires_profilenoWhether the user must register a profile before using this entry.

Response fields:

FieldRequiredDescription
idyesStable string id (e.g. "github", "jira"). Required on upsert.
nameyesDisplay name shown in the dashboard catalog.
descriptionnoDescription text shown in the dashboard catalog.
urlyesCustomer-facing MCP server URL.
icon_urlnoOptional icon URL displayed in the dashboard catalog.
categoriesnoCategory tags ("git", "issue-tracker", ...). Empty list permitted.
notenoOptional free-form note shown alongside the catalog entry.
authenticationnoAuthentication kind label ("oauth", "api_key", "none"). Free-form string -- the catalog renderer interprets it.
requires_authnoTrue when this catalog entry requires a credential from the user (used by the dashboard "Add" flow to pre-populate credential UI).
requires_profilenoTrue when the user must register a profile before using this catalog entry (rather than just adding a backend selector).
is_enablednoOperator-controlled visibility toggle. Disabled servers stay in the table but are hidden from the customer-facing list.
created_atoutput-onlyRow creation time. Output-only.
updated_atoutput-onlyLast mutation time. Output-only.
{"signatures":{"go":"func (mc *MCPCatalogClient) Upsert(ctx context.Context, req *mcpv1.UpsertCatalogServerRequest) (*mcpv1.MCPCatalogServer, error)","python":"upsert(id: str, name: str, url: str, description: str, icon_url: str, categories: list[str] | None, note: str, authentication: str, requires_auth: bool, requires_profile: bool) -\u003e MCPCatalogServer","typescript":"upsert(req: { id: string name: string url: string description?: string iconUrl?: string categories?: string[] note?: string authentication?: string requiresAuth?: boolean requiresProfile?: boolean }): Promise\u003cMCPCatalogServer\u003e","cli":"tare api mcp catalog upsert --id $ID --name $NAME --url $URL","curl":"curl -X POST \"${AGENTROUTER_BASE_URL}/v1/mcp/catalog/servers\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"id\": \"...\",\n    \"name\": \"...\",\n    \"description\": \"...\",\n    \"url\": \"...\",\n    \"icon_url\": \"...\",\n    \"categories\": [],\n    \"note\": \"...\",\n    \"authentication\": \"...\",\n    \"requires_auth\": false,\n    \"requires_profile\": false\n  }'"},"examples":{"go":{"files":[{"name":"main.go","content":"// Command example is a runnable example for the AgentRouter Go SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then `go run .`.\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tagentrouter \"github.com/tetrateio/agentrouter-go\"\n\tmcpv1 \"github.com/tetrateio/agentrouter-go/genapi/api/tars/mcp/v1\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := agentrouter.New(ctx,\n\t\tagentrouter.WithBaseURL(os.Getenv(\"AGENTROUTER_BASE_URL\")),\n\t\tagentrouter.WithAPIKey(os.Getenv(\"AGENTROUTER_API_KEY\")),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"client: %v\", err)\n\t}\n\n\t// Populate the request fields -- see the \"Request fields\" table above for\n\t// the available fields and which are required.\n\treq := \u0026mcpv1.UpsertCatalogServerRequest{}\n\n\tresp, err := client.MCP().Catalog().Upsert(ctx, req)\n\tif err != nil {\n\t\tlog.Fatalf(\"call: %v\", err)\n\t}\n\n\tfmt.Printf(\"%+v\\n\", resp)\n}\n"},{"name":"go.mod","content":"module github.com/tetrateio/agentrouter-go-examples/mcpcatalog/upsertcatalogserver\n\ngo 1.26\n\nrequire github.com/tetrateio/agentrouter-go v0.1.1\n\n// Point this at the directory you extracted the downloaded Go SDK tarball into.\n// The directory name matches the tarball stem on the Download SDK page.\nreplace github.com/tetrateio/agentrouter-go =\u003e ./third_party/agentrouter-go-0.1.1\n"}]},"python":{"files":[{"name":"main.py","content":"\"\"\"Runnable example for the AgentRouter Python SDK.\n\nSet AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `python main.py`.\n\"\"\"\nimport os\n\nfrom agentrouter_sdk import Client\n\nclient = Client(\n    base_url=os.environ[\"AGENTROUTER_BASE_URL\"],\n    api_key=os.environ[\"AGENTROUTER_API_KEY\"],\n)\n\n# Replace the placeholder values below.\nid = \"...\"\nname = \"...\"\nurl = \"...\"\ndescription = \"...\"\nicon_url = \"...\"\ncategories = \"...\"\nnote = \"...\"\nauthentication = \"...\"\nrequires_auth = \"...\"\nrequires_profile = \"...\"\ntry:\n    result = client.mcp.catalog.upsert(id, name, url, description, icon_url, categories, note, authentication, requires_auth, requires_profile)\n    print(result)\nexcept Exception as err:\n    print(\"Error:\", err)\n"},{"name":"requirements.txt","content":"# Point this at the directory you extracted the downloaded Python SDK tarball\n# into. The directory name matches the tarball stem on the Download SDK page.\n# To install instead from PyPI once published, replace the line below with:\n#   agentrouter-sdk\u003e=0.1.0\nagentrouter-sdk @ file:./third_party/agentrouter-python-0.1.1\n"}]},"typescript":{"files":[{"name":"index.ts","content":"// Runnable example for the AgentRouter TypeScript SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `npm install \u0026\u0026 npx tsx index.ts`.\nimport { Client } from '@tetrate/agentrouter-sdk'\n\nconst client = new Client({\n  baseUrl: process.env.AGENTROUTER_BASE_URL,\n  apiKey: process.env.AGENTROUTER_API_KEY,\n})\n\n// Populate the request fields -- see the \"Request fields\" table above\n// for the available fields and which are required.\nconst req = {}\ntry {\n  const result = await client.mcp.catalog.upsert(req)\n  console.log(result)\n} catch (err) {\n  console.error('Error:', err)\n}\n"},{"name":"package.json","content":"{\n  \"name\": \"mcpcatalog\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@tetrate/agentrouter-sdk\": \"file:./third_party/agentrouter-typescript-0.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.0.0\",\n    \"typescript\": \"^5.4.0\"\n  }\n}\n"},{"name":"tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n"}]},"cli":"tare api mcp catalog upsert --id $ID --name $NAME --url $URL","curl":"curl -X POST \"${AGENTROUTER_BASE_URL}/v1/mcp/catalog/servers\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"id\": \"...\",\n    \"name\": \"...\",\n    \"description\": \"...\",\n    \"url\": \"...\",\n    \"icon_url\": \"...\",\n    \"categories\": [],\n    \"note\": \"...\",\n    \"authentication\": \"...\",\n    \"requires_auth\": false,\n    \"requires_profile\": false\n  }'"},"persona":"Admin","httpVerb":"POST","httpPath":"/v1/mcp/catalog/servers","slug":"create-or-update-an-mcp-catalog-server"}

Get an MCP catalog server

What it does: Returns a single catalog entry by id.

Request fields:

FieldRequiredDescription
idyesRequired: stable catalog entry id (e.g. "github").

Response fields:

FieldRequiredDescription
idyesStable string id (e.g. "github", "jira"). Required on upsert.
nameyesDisplay name shown in the dashboard catalog.
descriptionnoDescription text shown in the dashboard catalog.
urlyesCustomer-facing MCP server URL.
icon_urlnoOptional icon URL displayed in the dashboard catalog.
categoriesnoCategory tags ("git", "issue-tracker", ...). Empty list permitted.
notenoOptional free-form note shown alongside the catalog entry.
authenticationnoAuthentication kind label ("oauth", "api_key", "none"). Free-form string -- the catalog renderer interprets it.
requires_authnoTrue when this catalog entry requires a credential from the user (used by the dashboard "Add" flow to pre-populate credential UI).
requires_profilenoTrue when the user must register a profile before using this catalog entry (rather than just adding a backend selector).
is_enablednoOperator-controlled visibility toggle. Disabled servers stay in the table but are hidden from the customer-facing list.
created_atoutput-onlyRow creation time. Output-only.
updated_atoutput-onlyLast mutation time. Output-only.
{"signatures":{"go":"func (mc *MCPCatalogClient) Get(ctx context.Context, id string) (*mcpv1.MCPCatalogServer, error)","python":"get(id: str) -\u003e MCPCatalogServer","typescript":"get(id: string): Promise\u003cMCPCatalogServer\u003e","cli":"tare api mcp catalog get \u003cid\u003e","curl":"curl \"${AGENTROUTER_BASE_URL}/v1/mcp/catalog/servers/01H...\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"examples":{"go":{"files":[{"name":"main.go","content":"// Command example is a runnable example for the AgentRouter Go SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then `go run .`.\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tagentrouter \"github.com/tetrateio/agentrouter-go\"\n)\n\n// input holds the request fields. Replace the placeholder values below.\ntype input struct {\n\tId string\n}\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := agentrouter.New(ctx,\n\t\tagentrouter.WithBaseURL(os.Getenv(\"AGENTROUTER_BASE_URL\")),\n\t\tagentrouter.WithAPIKey(os.Getenv(\"AGENTROUTER_API_KEY\")),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"client: %v\", err)\n\t}\n\n\tin := input{\n\t\tId: \"...\",\n\t}\n\n\tid := in.Id\n\tresult, err := client.MCP().Catalog().Get(ctx, id)\n\tif err != nil {\n\t\tlog.Fatalf(\"call: %v\", err)\n\t}\n\n\tfmt.Printf(\"%+v\\n\", result)\n}\n"},{"name":"go.mod","content":"module github.com/tetrateio/agentrouter-go-examples/mcpcatalog/getcatalogserver\n\ngo 1.26\n\nrequire github.com/tetrateio/agentrouter-go v0.1.1\n\n// Point this at the directory you extracted the downloaded Go SDK tarball into.\n// The directory name matches the tarball stem on the Download SDK page.\nreplace github.com/tetrateio/agentrouter-go =\u003e ./third_party/agentrouter-go-0.1.1\n"}]},"python":{"files":[{"name":"main.py","content":"\"\"\"Runnable example for the AgentRouter Python SDK.\n\nSet AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `python main.py`.\n\"\"\"\nimport os\n\nfrom agentrouter_sdk import Client\n\nclient = Client(\n    base_url=os.environ[\"AGENTROUTER_BASE_URL\"],\n    api_key=os.environ[\"AGENTROUTER_API_KEY\"],\n)\n\n# Replace the placeholder values below.\nid = \"...\"\ntry:\n    result = client.mcp.catalog.get(id)\n    print(result)\nexcept Exception as err:\n    print(\"Error:\", err)\n"},{"name":"requirements.txt","content":"# Point this at the directory you extracted the downloaded Python SDK tarball\n# into. The directory name matches the tarball stem on the Download SDK page.\n# To install instead from PyPI once published, replace the line below with:\n#   agentrouter-sdk\u003e=0.1.0\nagentrouter-sdk @ file:./third_party/agentrouter-python-0.1.1\n"}]},"typescript":{"files":[{"name":"index.ts","content":"// Runnable example for the AgentRouter TypeScript SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `npm install \u0026\u0026 npx tsx index.ts`.\nimport { Client } from '@tetrate/agentrouter-sdk'\n\nconst client = new Client({\n  baseUrl: process.env.AGENTROUTER_BASE_URL,\n  apiKey: process.env.AGENTROUTER_API_KEY,\n})\n\n// Replace the placeholder values below.\nconst id = \"...\"\ntry {\n  const result = await client.mcp.catalog.get(id)\n  console.log(result)\n} catch (err) {\n  console.error('Error:', err)\n}\n"},{"name":"package.json","content":"{\n  \"name\": \"mcpcatalog\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@tetrate/agentrouter-sdk\": \"file:./third_party/agentrouter-typescript-0.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.0.0\",\n    \"typescript\": \"^5.4.0\"\n  }\n}\n"},{"name":"tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n"}]},"cli":"tare api mcp catalog get \u003cid\u003e","curl":"curl \"${AGENTROUTER_BASE_URL}/v1/mcp/catalog/servers/01H...\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"persona":"Admin","httpVerb":"GET","httpPath":"/v1/mcp/catalog/servers/{id}","slug":"get-an-mcp-catalog-server"}

List MCP catalog servers

What it does: Returns every catalog entry, including disabled rows so operators can re-enable them. The dashboard's read-only view filters to is_enabled=true.

Request fields:

FieldRequiredDescription
include_disablednoWhen true, include is_enabled=false entries. The dashboard sets this false; the operator CLI defaults to true so disabled servers are visible.
pagenoCursor-pagination inputs (page size + continuation token).

Response fields:

FieldRequiredDescription
serversnoCatalog entries for this page (disabled rows included per request).
pagenoCursor-pagination outputs (next-page token).
{"signatures":{"go":"func (mc *MCPCatalogClient) List(ctx context.Context, includeDisabled bool) (*mcpv1.ListCatalogServersResponse, error)","python":"list(include_disabled: bool) -\u003e ListCatalogServersResponse","typescript":"list(includeDisabled): Promise\u003cListCatalogServersResponse\u003e","cli":"tare api mcp catalog list","curl":"curl \"${AGENTROUTER_BASE_URL}/v1/mcp/catalog/servers\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"examples":{"go":{"files":[{"name":"main.go","content":"// Command example is a runnable example for the AgentRouter Go SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then `go run .`.\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tagentrouter \"github.com/tetrateio/agentrouter-go\"\n)\n\n// input holds the request fields. Replace the placeholder values below.\ntype input struct {\n\tIncludeDisabled string\n}\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := agentrouter.New(ctx,\n\t\tagentrouter.WithBaseURL(os.Getenv(\"AGENTROUTER_BASE_URL\")),\n\t\tagentrouter.WithAPIKey(os.Getenv(\"AGENTROUTER_API_KEY\")),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"client: %v\", err)\n\t}\n\n\tin := input{\n\t\tIncludeDisabled: \"...\",\n\t}\n\n\tincludeDisabled := in.IncludeDisabled\n\tresult, err := client.MCP().Catalog().List(ctx, includeDisabled)\n\tif err != nil {\n\t\tlog.Fatalf(\"call: %v\", err)\n\t}\n\n\tfmt.Printf(\"%+v\\n\", result)\n}\n"},{"name":"go.mod","content":"module github.com/tetrateio/agentrouter-go-examples/mcpcatalog/listcatalogservers\n\ngo 1.26\n\nrequire github.com/tetrateio/agentrouter-go v0.1.1\n\n// Point this at the directory you extracted the downloaded Go SDK tarball into.\n// The directory name matches the tarball stem on the Download SDK page.\nreplace github.com/tetrateio/agentrouter-go =\u003e ./third_party/agentrouter-go-0.1.1\n"}]},"python":{"files":[{"name":"main.py","content":"\"\"\"Runnable example for the AgentRouter Python SDK.\n\nSet AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `python main.py`.\n\"\"\"\nimport os\n\nfrom agentrouter_sdk import Client\n\nclient = Client(\n    base_url=os.environ[\"AGENTROUTER_BASE_URL\"],\n    api_key=os.environ[\"AGENTROUTER_API_KEY\"],\n)\n\n# Replace the placeholder values below.\ninclude_disabled = \"...\"\ntry:\n    result = client.mcp.catalog.list(include_disabled)\n    print(result)\nexcept Exception as err:\n    print(\"Error:\", err)\n"},{"name":"requirements.txt","content":"# Point this at the directory you extracted the downloaded Python SDK tarball\n# into. The directory name matches the tarball stem on the Download SDK page.\n# To install instead from PyPI once published, replace the line below with:\n#   agentrouter-sdk\u003e=0.1.0\nagentrouter-sdk @ file:./third_party/agentrouter-python-0.1.1\n"}]},"typescript":{"files":[{"name":"index.ts","content":"// Runnable example for the AgentRouter TypeScript SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `npm install \u0026\u0026 npx tsx index.ts`.\nimport { Client } from '@tetrate/agentrouter-sdk'\n\nconst client = new Client({\n  baseUrl: process.env.AGENTROUTER_BASE_URL,\n  apiKey: process.env.AGENTROUTER_API_KEY,\n})\n\n// Replace the placeholder values below.\nconst includeDisabled = \"...\"\ntry {\n  const result = await client.mcp.catalog.list(includeDisabled)\n  console.log(result)\n} catch (err) {\n  console.error('Error:', err)\n}\n"},{"name":"package.json","content":"{\n  \"name\": \"mcpcatalog\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@tetrate/agentrouter-sdk\": \"file:./third_party/agentrouter-typescript-0.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.0.0\",\n    \"typescript\": \"^5.4.0\"\n  }\n}\n"},{"name":"tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n"}]},"cli":"tare api mcp catalog list","curl":"curl \"${AGENTROUTER_BASE_URL}/v1/mcp/catalog/servers\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"persona":"Admin","httpVerb":"GET","httpPath":"/v1/mcp/catalog/servers","slug":"list-mcp-catalog-servers"}

Toggle MCP catalog server visibility

What it does: Flips the operator visibility toggle on a catalog entry. Split from UpsertCatalogServer so a re-upsert that refreshes content fields (display_name, url, ...) cannot silently re-enable a previously-disabled row through the proto bool zero value.

Request fields:

FieldRequiredDescription
idyesStable catalog entry id, e.g. "github".
enabledyesTarget visibility. true -> entry is visible to the customer-facing list; false -> hidden (row kept, is_enabled set to false).

Response fields:

FieldRequiredDescription
idyesStable string id (e.g. "github", "jira"). Required on upsert.
nameyesDisplay name shown in the dashboard catalog.
descriptionnoDescription text shown in the dashboard catalog.
urlyesCustomer-facing MCP server URL.
icon_urlnoOptional icon URL displayed in the dashboard catalog.
categoriesnoCategory tags ("git", "issue-tracker", ...). Empty list permitted.
notenoOptional free-form note shown alongside the catalog entry.
authenticationnoAuthentication kind label ("oauth", "api_key", "none"). Free-form string -- the catalog renderer interprets it.
requires_authnoTrue when this catalog entry requires a credential from the user (used by the dashboard "Add" flow to pre-populate credential UI).
requires_profilenoTrue when the user must register a profile before using this catalog entry (rather than just adding a backend selector).
is_enablednoOperator-controlled visibility toggle. Disabled servers stay in the table but are hidden from the customer-facing list.
created_atoutput-onlyRow creation time. Output-only.
updated_atoutput-onlyLast mutation time. Output-only.
{"signatures":{"go":"func (mc *MCPCatalogClient) SetEnabled(ctx context.Context, id string, enabled bool) (*mcpv1.MCPCatalogServer, error)","python":"set_enabled(id: str, enabled: bool) -\u003e MCPCatalogServer","typescript":"setEnabled(id: string, enabled: boolean): Promise\u003cMCPCatalogServer\u003e","cli":"tare api mcp catalog set-enabled --id $ID --enabled $ENABLED","curl":"curl -X POST \"${AGENTROUTER_BASE_URL}/v1/mcp/catalog/servers/01H.../enabled\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"enabled\": false\n  }'"},"examples":{"go":{"files":[{"name":"main.go","content":"// Command example is a runnable example for the AgentRouter Go SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then `go run .`.\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tagentrouter \"github.com/tetrateio/agentrouter-go\"\n)\n\n// input holds the request fields. Replace the placeholder values below.\ntype input struct {\n\tId      string\n\tEnabled string\n}\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := agentrouter.New(ctx,\n\t\tagentrouter.WithBaseURL(os.Getenv(\"AGENTROUTER_BASE_URL\")),\n\t\tagentrouter.WithAPIKey(os.Getenv(\"AGENTROUTER_API_KEY\")),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"client: %v\", err)\n\t}\n\n\tin := input{\n\t\tId:      \"...\",\n\t\tEnabled: \"...\",\n\t}\n\n\tid := in.Id\n\tenabled := in.Enabled\n\tresult, err := client.MCP().Catalog().SetEnabled(ctx, id, enabled)\n\tif err != nil {\n\t\tlog.Fatalf(\"call: %v\", err)\n\t}\n\n\tfmt.Printf(\"%+v\\n\", result)\n}\n"},{"name":"go.mod","content":"module github.com/tetrateio/agentrouter-go-examples/mcpcatalog/setcatalogserverenabled\n\ngo 1.26\n\nrequire github.com/tetrateio/agentrouter-go v0.1.1\n\n// Point this at the directory you extracted the downloaded Go SDK tarball into.\n// The directory name matches the tarball stem on the Download SDK page.\nreplace github.com/tetrateio/agentrouter-go =\u003e ./third_party/agentrouter-go-0.1.1\n"}]},"python":{"files":[{"name":"main.py","content":"\"\"\"Runnable example for the AgentRouter Python SDK.\n\nSet AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `python main.py`.\n\"\"\"\nimport os\n\nfrom agentrouter_sdk import Client\n\nclient = Client(\n    base_url=os.environ[\"AGENTROUTER_BASE_URL\"],\n    api_key=os.environ[\"AGENTROUTER_API_KEY\"],\n)\n\n# Replace the placeholder values below.\nid = \"...\"\nenabled = \"...\"\ntry:\n    result = client.mcp.catalog.set_enabled(id, enabled)\n    print(result)\nexcept Exception as err:\n    print(\"Error:\", err)\n"},{"name":"requirements.txt","content":"# Point this at the directory you extracted the downloaded Python SDK tarball\n# into. The directory name matches the tarball stem on the Download SDK page.\n# To install instead from PyPI once published, replace the line below with:\n#   agentrouter-sdk\u003e=0.1.0\nagentrouter-sdk @ file:./third_party/agentrouter-python-0.1.1\n"}]},"typescript":{"files":[{"name":"index.ts","content":"// Runnable example for the AgentRouter TypeScript SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `npm install \u0026\u0026 npx tsx index.ts`.\nimport { Client } from '@tetrate/agentrouter-sdk'\n\nconst client = new Client({\n  baseUrl: process.env.AGENTROUTER_BASE_URL,\n  apiKey: process.env.AGENTROUTER_API_KEY,\n})\n\n// Replace the placeholder values below.\nconst id = \"...\"\nconst enabled = \"...\"\ntry {\n  const result = await client.mcp.catalog.setEnabled(id, enabled)\n  console.log(result)\n} catch (err) {\n  console.error('Error:', err)\n}\n"},{"name":"package.json","content":"{\n  \"name\": \"mcpcatalog\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@tetrate/agentrouter-sdk\": \"file:./third_party/agentrouter-typescript-0.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.0.0\",\n    \"typescript\": \"^5.4.0\"\n  }\n}\n"},{"name":"tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n"}]},"cli":"tare api mcp catalog set-enabled --id $ID --enabled $ENABLED","curl":"curl -X POST \"${AGENTROUTER_BASE_URL}/v1/mcp/catalog/servers/01H.../enabled\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"enabled\": false\n  }'"},"persona":"Admin","httpVerb":"POST","httpPath":"/v1/mcp/catalog/servers/{id}/enabled","slug":"toggle-mcp-catalog-server-visibility"}

Delete an MCP catalog server

What it does: Removes a catalog entry by id. Operator-only.

Request fields:

FieldRequiredDescription
idyesRequired: stable id of the catalog entry to delete (e.g. "github").
{"signatures":{"go":"func (mc *MCPCatalogClient) Delete(ctx context.Context, id string) error","python":"delete(id: str) -\u003e None","typescript":"delete(id: string): Promise\u003cvoid\u003e","cli":"tare api mcp catalog delete \u003cid\u003e","curl":"curl -X DELETE \"${AGENTROUTER_BASE_URL}/v1/mcp/catalog/servers/01H...\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"examples":{"go":{"files":[{"name":"main.go","content":"// Command example is a runnable example for the AgentRouter Go SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then `go run .`.\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tagentrouter \"github.com/tetrateio/agentrouter-go\"\n)\n\n// input holds the request fields. Replace the placeholder values below.\ntype input struct {\n\tId string\n}\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := agentrouter.New(ctx,\n\t\tagentrouter.WithBaseURL(os.Getenv(\"AGENTROUTER_BASE_URL\")),\n\t\tagentrouter.WithAPIKey(os.Getenv(\"AGENTROUTER_API_KEY\")),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"client: %v\", err)\n\t}\n\n\tin := input{\n\t\tId: \"...\",\n\t}\n\n\tid := in.Id\n\tif err := client.MCP().Catalog().Delete(ctx, id); err != nil {\n\t\tlog.Fatalf(\"call: %v\", err)\n\t}\n\n\tfmt.Println(\"ok\")\n}\n"},{"name":"go.mod","content":"module github.com/tetrateio/agentrouter-go-examples/mcpcatalog/deletecatalogserver\n\ngo 1.26\n\nrequire github.com/tetrateio/agentrouter-go v0.1.1\n\n// Point this at the directory you extracted the downloaded Go SDK tarball into.\n// The directory name matches the tarball stem on the Download SDK page.\nreplace github.com/tetrateio/agentrouter-go =\u003e ./third_party/agentrouter-go-0.1.1\n"}]},"python":{"files":[{"name":"main.py","content":"\"\"\"Runnable example for the AgentRouter Python SDK.\n\nSet AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `python main.py`.\n\"\"\"\nimport os\n\nfrom agentrouter_sdk import Client\n\nclient = Client(\n    base_url=os.environ[\"AGENTROUTER_BASE_URL\"],\n    api_key=os.environ[\"AGENTROUTER_API_KEY\"],\n)\n\n# Replace the placeholder values below.\nid = \"...\"\ntry:\n    result = client.mcp.catalog.delete(id)\n    print(result)\nexcept Exception as err:\n    print(\"Error:\", err)\n"},{"name":"requirements.txt","content":"# Point this at the directory you extracted the downloaded Python SDK tarball\n# into. The directory name matches the tarball stem on the Download SDK page.\n# To install instead from PyPI once published, replace the line below with:\n#   agentrouter-sdk\u003e=0.1.0\nagentrouter-sdk @ file:./third_party/agentrouter-python-0.1.1\n"}]},"typescript":{"files":[{"name":"index.ts","content":"// Runnable example for the AgentRouter TypeScript SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `npm install \u0026\u0026 npx tsx index.ts`.\nimport { Client } from '@tetrate/agentrouter-sdk'\n\nconst client = new Client({\n  baseUrl: process.env.AGENTROUTER_BASE_URL,\n  apiKey: process.env.AGENTROUTER_API_KEY,\n})\n\n// Replace the placeholder values below.\nconst id = \"...\"\ntry {\n  const result = await client.mcp.catalog.delete(id)\n  console.log(result)\n} catch (err) {\n  console.error('Error:', err)\n}\n"},{"name":"package.json","content":"{\n  \"name\": \"mcpcatalog\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@tetrate/agentrouter-sdk\": \"file:./third_party/agentrouter-typescript-0.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.0.0\",\n    \"typescript\": \"^5.4.0\"\n  }\n}\n"},{"name":"tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n"}]},"cli":"tare api mcp catalog delete \u003cid\u003e","curl":"curl -X DELETE \"${AGENTROUTER_BASE_URL}/v1/mcp/catalog/servers/01H...\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"persona":"Admin","httpVerb":"DELETE","httpPath":"/v1/mcp/catalog/servers/{id}","slug":"delete-an-mcp-catalog-server"}