{"apiVersion":"v1","directorySlug":"skmtc-mcp-2b288544ab","title":"SKMTC Hub","description":"Browse 9,477 OpenAPI schemas, generate production-grade clients, servers, forms and docs — and when an API changes, get a pull request, not a changelog.","pageUrl":"https://www.mcpbundles.com/skills/skmtc-mcp-2b288544ab","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.skmtc.dev/mcp","hostedMcpUrl":null,"toolCount":6,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"dev.skmtc/skmtc-mcp-2b288544ab","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"lookup_apis","description":"Resolve a list of service or API names against the skmtc catalog in one call — the tool to start with when a project needs several APIs. Each name comes back as found (one API), ambiguous (up to five candidates, with the real count) or not_found. A match carries the freshness pair (lastCheckedAt: when the hub last looked; lastUpdatedAt: when the schema last changed), operation count, spec type, whether the source is auto-refetched, and links: html, api (JSON record), markdown (the page as markdo","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["name"],"properties":{"hint":{"type":"string","maxLength":100},"name":{"type":"string","maxLength":100,"minLength":1}}},"maxItems":25,"minItems":1}}},"logicalName":"lookup_apis","displayName":"lookup_apis","title":"lookup_apis","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_apis","description":"Search the catalog's API cards (name and short description) with ranked results — for finding APIs by what they are called when lookup_apis has no owner match. Optional facets are facts derived from each schema: auth scheme, webhooks, pagination style, spec type, minimum operation count. An API whose facet was never derived is excluded by that facet rather than counted as a negative. Returns cards with url (JSON record) and htmlUrl (the page); append .md to htmlUrl for the markdown twin.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["q"],"properties":{"q":{"type":"string","maxLength":200,"minLength":1},"auth":{"enum":["apiKey","http","oauth2","openIdConnect","mutualTLS"],"type":"string"},"limit":{"type":"integer","maximum":50,"minimum":1},"owner":{"type":"string","minLength":1},"specType":{"enum":["openapi","swagger"],"type":"string"},"webhooks":{"type":"boolean"},"pagination":{"enum":["cursor","page","offset","none"],"type":"string"},"minOperations":{"type":"integer","maximum":9007199254740991,"minimum":0}}},"logicalName":"search_apis","displayName":"search_apis","title":"search_apis","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_api","description":"The full JSON record of one API by owner/slug: description, provider, license, every source with its last check, publisher-declared versions, lastCheckedAt / lastUpdatedAt, the latest content ref (latestVersionRef), operation and schema counts. Fetch the schema itself from {htmlUrl}/revisions/{latestVersionRef}?raw (pinned) or {htmlUrl}?raw (latest, redirects). Unversioned addresses resolve to the latest revision and are the ones to cite; an address carrying a content ref (…/revisions/{ref}/…) i","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["api"],"properties":{"api":{"type":"string","maxLength":200,"minLength":3}}},"logicalName":"get_api","displayName":"get_api","title":"get_api","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_operations","description":"Every operation of an API in one fetch, as the site's llms.txt: one line per operation with the address of its markdown page. Pass a path prefix to get one node of the path tree instead — the operations directly under it and the narrower prefixes with counts — which is how to navigate a large API (GitHub has 1,200 operations) without reading all of it. An operation key is the path with parameters spelled `:name`, followed by the method — `GET /repos/{owner}/issues` is `repos/:owner/issues/get`.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["api"],"properties":{"api":{"type":"string","maxLength":200,"minLength":3},"prefix":{"type":"string","maxLength":500}}},"logicalName":"list_operations","displayName":"list_operations","title":"list_operations","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_operation","description":"One operation's documentation as markdown, at the API's latest revision: parameters, request body, responses, and a Changes section with its recorded history. A fraction of the size of the HTML page. An operation key is the path with parameters spelled `:name`, followed by the method — `GET /repos/{owner}/issues` is `repos/:owner/issues/get`. Unversioned addresses resolve to the latest revision and are the ones to cite; an address carrying a content ref (…/revisions/{ref}/…) is pinned to fixed b","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["api","key"],"properties":{"api":{"type":"string","maxLength":200,"minLength":3},"key":{"type":"string","maxLength":500,"minLength":1}}},"logicalName":"get_operation","displayName":"get_operation","title":"get_operation","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"ask_catalog","description":"Ask a natural-language question of the catalog and get an answer grounded in the indexed API content, with citations that name the API and operation. An account named in the question (\"how do I send an SMS with twilio?\") scopes retrieval to that publisher; pass api to scope to one API. answered: false is a first-class \"not covered\", and related lists the closest content. The catalog rate-limits this call; on a 429, wait a minute before asking again rather than retrying at once.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["question"],"properties":{"api":{"type":"string","maxLength":200,"minLength":3},"question":{"type":"string","maxLength":500,"minLength":1}}},"logicalName":"ask_catalog","displayName":"ask_catalog","title":"ask_catalog","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=SKMTC-Hub&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3Auc2ttdGMuZGV2L21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22SKMTC-Hub%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.skmtc.dev%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22SKMTC-Hub%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.skmtc.dev%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=SKMTC+Hub&connectorUrl=https%3A%2F%2Fmcp.skmtc.dev%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"SKMTC-Hub\" --url \"https://mcp.skmtc.dev/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/skmtc-mcp-2b288544ab","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/skmtc-mcp-2b288544ab/tools/{tool}","mcpServerUrl":"https://mcp.skmtc.dev/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/skmtc-mcp-2b288544ab?live=1"}