Use Sieve as a service
The same pipeline the app uses, over HTTP. OpenAPI documentation is at https://sieve-api.vercel.app/docs. Also a hosted MCP server : add https://sieve-api.vercel.app/mcp in Claude, Cursor or any MCP client and your own agent can call list_devices, identify_device, diagnose and read_manual_page, with no install.
Try the API live
Three steps, all real calls to https://sieve-api.vercel.app.
1. Create an API key
2. Pick a request
curl -X POST https://sieve-api.vercel.app/v1/identify \
-H "X-API-Key: <your key>" \
-H "content-type: application/json" \
-d '{"manufacturer":"Philips Respironics","model":"EverFlo","visible_text":["EverFlo","REF 1020000"]}'3. Run it
POST /v1/identify
Nameplate fields in, registry matches with confidence out.
POST /v1/identify/image
Multipart photo in; vision describes, registry decides. Falls back to manual mode, never errors.
GET /v1/devices
Registry: models, cited indicator tables, whether a manual is indexed.
POST /v1/analyze
Device, indicators and answers in; fault tree with verbatim citations, rule hits, audit verdicts, recalls and the Trace out.
GET /v1/page/{doc}/{page}
The manual page text behind any citation.
POST /v1/records
File a work order. GET lists; /v1/fleet aggregates.
GET /v1/evals/latest
The published evaluation JSON.
POST /v1/keys
Create a signed API key. Shown once; nothing about it is stored on the server.
GET /v1/keys/verify
Check a key and see how many requests it has left this minute.
GET /v1/costs
Token and USD totals by model from the ledger.
curl
curl -X POST https://sieve-api.vercel.app/v1/analyze \
-H "content-type: application/json" \
-d '{"device_id":"philips-everflo","indicator_ids":["everflo-yellow-solid-silent"],"answers":{"warmup":"yes"}}'Python
import httpx
r = httpx.post("https://sieve-api.vercel.app/v1/analyze", json={
"device_id": "philips-everflo",
"indicator_ids": ["everflo-yellow-solid-silent"],
"answers": {"warmup": "yes", "analyser": "yes"},
})
tree = r.json()["tree"]
for step in tree["steps"]:
print(step["id"], step["action"], "->", step["cite"]["doc"], "p", step["cite"]["page"])JavaScript
const r = await fetch("https://sieve-api.vercel.app/v1/analyze", {
method: "POST", headers: { "content-type": "application/json" },
body: JSON.stringify({ device_id: "devilbiss-525", indicator_ids: ["dv525-red-beep"], answers: {} }),
});
const { tree, rule_hits, citations, trace } = await r.json();