{"openapi":"3.1.0","info":{"title":"MCPBundles Platform API","description":"Programmatic workspace API authenticated with workspace API keys (``X-API-Key: mb_…`` or ``Authorization: Api-Key mb_…``). Use ``POST /graphql`` for workspace management. MCP tool execution uses ``https://mcp.mcpbundles.com`` (Hub and bundle routes), not these REST paths. Data-bundle REST APIs are documented separately per bundle.","version":"1.0.0"},"paths":{"/graphql":{"get":{"tags":["graphql"],"summary":"Handle Http Get","operationId":"handle_http_get_graphql_get","responses":{"200":{"description":"The GraphiQL integrated development environment.","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found if GraphiQL or query via GET are not enabled."}}},"post":{"tags":["graphql"],"summary":"Handle Http Post","operationId":"handle_http_post_graphql_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tunnel/expose":{"post":{"summary":"Tunnel Expose Register","description":"Register a localhost port for external HTTP access.\n\nAccepts any valid auth method (API key, OAuth Bearer, NextAuth cookie).\nReturns the public URL that routes to localhost:{port}.","operationId":"tunnel_expose_register_api_tunnel_expose_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"delete":{"summary":"Tunnel Expose Revoke","description":"Revoke an exposed port.","operationId":"tunnel_expose_revoke_api_tunnel_expose_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tunnel/sessions":{"get":{"summary":"Tunnel Sessions List","description":"Return every live proxy WebSocket for the authenticated user.\n\nThe desktop and the workspace settings page render this as the\n\"Connected devices\" panel — one row per installation, with a\nRevoke button per row that hits ``DELETE /api/tunnel/sessions/{id}``.","operationId":"tunnel_sessions_list_api_tunnel_sessions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tunnel/sessions/{connection_id}":{"delete":{"summary":"Tunnel Sessions Revoke","description":"Force-close one specific installation's WebSocket.\n\nThe proxy on that machine will see a 1000 close, hit its\nexponential backoff, and reconnect under a fresh\nProxyConnection row. Use this from the UI when a user wants to\nkick a forgotten device off their account without signing out.","operationId":"tunnel_sessions_revoke_api_tunnel_sessions__connection_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/local-runtime/heartbeat":{"post":{"summary":"Local Runtime Heartbeat","description":"Record a proxy runtime heartbeat and its configured local MCP servers.","operationId":"local_runtime_heartbeat_api_local_runtime_heartbeat_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/local-runtime/install-options/{server_name}":{"get":{"summary":"Local Runtime Install Options","description":"Return curated local install options for a published MCP directory listing.","operationId":"local_runtime_install_options_api_local_runtime_install_options__server_name__get","parameters":[{"name":"server_name","in":"path","required":true,"schema":{"type":"string","title":"Server Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/local-runtime/install-recipes/{server_name}":{"get":{"summary":"Local Runtime Install Recipes","description":"Legacy alias kept for previously released `mcpbundles` CLI versions.","operationId":"local_runtime_install_recipes_api_local_runtime_install_recipes__server_name__get","parameters":[{"name":"server_name","in":"path","required":true,"schema":{"type":"string","title":"Server Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/local-runtime/connections/{connection_key}/tools/{tool_name}/execute":{"post":{"summary":"Local Runtime Execute","description":"Execute a tool on a connected local MCP runtime.","operationId":"local_runtime_execute_api_local_runtime_connections__connection_key__tools__tool_name__execute_post","parameters":[{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"tool_name","in":"path","required":true,"schema":{"type":"string","title":"Tool Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}