API reference
MCP
For AI agents.
MCP endpoint (Streamable HTTP)
POST
/mcp For Claude, ChatGPT, Codex, Cursor and other agents: JSON-RPC 2.0 (initialize, tools/list, tools/call). Tools: list_namespaces, create_namespace, delete_namespace, write_documents, delete_documents, search, sql_query, count, get_document, warm_namespace; each runs the same code, limits and metering as its REST call (metered apart as mcp_queries / mcp_writes). Agents sign in with OAuth 2.1 (discovery from the 401's WWW-Authenticate, dynamic registration, PKCE); API keys work too. Connect: claude mcp add --transport http skimmerdb https://api.skimmerdb.com/mcp (https://skimmerdb.com/mcp is the same endpoint).
Body application/json
jsonrpcstringrequired |
idinteger | string |
methodstringrequiredinitialize, ping, tools/list or tools/call. |
paramsobject |
Answer
jsonrpcstring |
idinteger | string | null |
resultobject |
errorobject |
error.codeinteger |
error.messagestring |
Status codes
200OK |
401No key, or an unknown or revoked one. |
curl -s https://api.skimmerdb.com/mcp \
-H "Authorization: Bearer $KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'from skimmerdb import SkimmerDB
from skimmerdb._api.api.mcp import mcp
from skimmerdb._api.models import JsonRpcRequest
db = SkimmerDB() # SKIMMERDB_KEY
answer = mcp.sync(client=db.api, body=JsonRpcRequest.from_dict({"jsonrpc":"2.0","id":1,"method":"tools/list"}))import { SkimmerDB } from "skimmerdb";
import { mcp } from "skimmerdb/api";
const db = new SkimmerDB(); // SKIMMERDB_KEY
const { data } = await mcp({ client: db.client, body: {"jsonrpc":"2.0","id":1,"method":"tools/list"} });{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "search"
}
]
}
}OAuth protected-resource metadata
GET
/.well-known/oauth-protected-resource no keyWhere MCP clients find the OAuth server (RFC 9728).
Answer
resourcestring |
authorization_serversstring[] |
scopes_supportedstring[] |
bearer_methods_supportedstring[] |
resource_namestring |
resource_documentationstring |
Status codes
200OK |
curl -s https://api.skimmerdb.com/.well-known/oauth-protected-resourcefrom skimmerdb import SkimmerDB
from skimmerdb._api.api.mcp import get_resource_metadata
db = SkimmerDB() # SKIMMERDB_KEY
answer = get_resource_metadata.sync(client=db.api)import { SkimmerDB } from "skimmerdb";
import { getResourceMetadata } from "skimmerdb/api";
const db = new SkimmerDB(); // SKIMMERDB_KEY
const { data } = await getResourceMetadata({ client: db.client });