How to check which APIs the catalog tracks
Hand the hub a list of service names and get back, per name, whether it is in the catalog, how fresh the schema is, and where to fetch it — from a browser, a curl, or an MCP client.
When to use this
You plan to build against some third-party APIs. Before you start, you want three facts for each one. Does skmtc-hub track it? How current is the schema? Which addresses give an agent or a script the rest?
Prerequisites
- A list of service names as a developer types them:
stripe,twilio,google sheets. The hub reads anowner/slugsuch asstripe/spec3directly. - No account. Public APIs answer without credentials. A personal access token adds the APIs your account can read.
Steps
In a browser
Open skmtc.dev/lookup, paste the list with one name on each line, and press Check. The list goes into the URL, so the result is a link you can send.
From a script
curl -s https://api.skmtc.dev/v1/apis/lookup \
-H 'content-type: application/json' \
-d '{"items":[{"name":"stripe"},{"name":"twilio","hint":"sms"},{"name":"sendgrid"}]}'Up to 25 names for each call. Each result carries:
status:found,ambiguousornot_found.matchedBy: how the name matched.ownermeans the name is a publisher's handle or display name, and the match is that publisher's API.apimeans the name appeared only in an API's own name, slug or provider name. That pass never claims a match; it offers candidates.directmeans you gaveowner/slug.match(forfound) orcandidates(up to five, ranked by size) withcandidateTotal, the count before the cap.- On each match:
lastCheckedAt(when the hub last looked at a source) andlastUpdatedAt(when the schema last changed). AlsooperationCount,specType,refetchEnabled,sourceUrl, andlinks.
links are the addresses to use next:
| link | what it serves |
|---|---|
html | the API's page |
api | the API's JSON record |
markdown | the page as markdown: description, license, source, counts |
llmsTxt | every operation, one fetch, each linked to its markdown |
schema | the OpenAPI document pinned by content ref (stable bytes); absent when the latest revision holds no document |
schemaLatest | the floating address; redirects to schema |
feed | the publisher's change feed (JSON Feed) |
Cite the unversioned addresses. An address that contains a content ref always returns the same bytes.
Narrow a publisher with many APIs
A name that matches a publisher with some APIs comes back ambiguous
with its five largest. Add a hint:
{ "items": [{ "name": "hubspot", "hint": "contacts" }, { "name": "github", "hint": "rest" }] }A hint equal to a candidate's slug selects it. Otherwise it keeps the candidates whose name, slug or summary contain it. The hub ignores a hint that matches nothing, so the result stays as it was.
From an MCP client
The same answer, plus five more tools, over the hub's MCP server. No authentication.
claude mcp add --transport http skmtc https://mcp.skmtc.dev/mcpFor VS Code, add to .vscode/mcp.json:
{ "servers": { "skmtc": { "type": "http", "url": "https://mcp.skmtc.dev/mcp" } } }The tools:
lookup_apis: this endpoint.search_apis: ranked cards with facets.get_api: the JSON record.list_operations: thellms.txt, whole or one path prefix.get_operation: one operation as markdown, with its recorded changes.ask_catalog: a question answered from the indexed schemas, with citations.
What a miss means
not_found means no live API you can read matches by publisher, name,
slug or provider name. The hub logs every name you ask for. The misses are
the list it harvests next. So a request for an API that is not there is
useful, even when the answer is no.