One agent-facing layer over public procurement across seven markets — reachable by REST, MCP and CLI. Artifact-transparent by design: we publish the schema, the endpoints and the proofs. What we never expose is how the data is sourced or cleaned.
This hub describes artifacts — a stable schema, live endpoints, falsifiable counts. It does not describe sourcing, sanitization internals or refresh cadence. Every “LIVE” badge on this page was set by an actual HTTP probe recorded in status.probe.json, not by a marketing decision.
01 · Status board
Each badge below reflects a real HTTP probe. ● LIVE means a curl returned the expected JSON today. SHIPS WITH ROLLOUT means the path answers with the site shell, not JSON, yet. PENDING PUBLISH means it isn't published yet. Nothing is marked LIVE on faith.
The full sanitized listing set as JSON — 2,395 rows across 7 markets, shaped as asaptic.tender.v1.
Model Context Protocol endpoint. tools/list returns 9 sourcing and tender tools for Claude, Cursor, codex and Gemini.
Machine-readable description of the agent-facing sourcing interface. Import straight into your tool-caller.
The AI-native site map — a plain-text index pointing crawlers and agents at the machine surfaces.
Well-known descriptor so agents can auto-discover the MCP endpoint and its capabilities.
Query, filter and page tender listings by market. Returns application/json — a data array plus meta with total count and a pagination cursor.
Coordinated-disclosure contact. The signed descriptor lands with the API rollout; today the path returns the site shell.
A thin command-line client over the REST surface. Not yet on npm — npm view returns 404 today.
Every badge above is checkable. Click any GET link, or POST tools/list to /mcp. The exact probe commands and their recorded verdicts live in status.probe.json next to this page.
02 · Quickstart
Pick your surface. The feed, MCP and REST API work today; the CLI is marked honestly for its npm publish.
● Live today — POST /mcp returns 9 tools
{
"mcpServers": {
"asaptic": {
"url": "https://asaptic.com/mcp",
"transport": "http"
}
}
}
Drop into your agent's MCP config. Then ask it to list_sourcing_lanes or get_engagement.
● Live today — 200 application/json
# the full asaptic.tender.v1 listing set, one request
curl https://asaptic.com/tender/rows.json
# filter to Hong Kong rows with jq
curl -s https://asaptic.com/tender/rows.json \
| jq '[.rows[] | select(.market=="HK")]'
Sample row id shape: AT-TEST-0001. Fields are the 11-field contract below — no source identifiers.
● Live today — 200 application/json
# GET tenders filtered by market
curl "https://asaptic.com/api/v1/tenders?market=HK&limit=20"
# CLI over the same surface (pending npm publish)
npx -y @asaptic/cli tenders list --market HK
The REST path is live and returns JSON today; @asaptic/cli goes LIVE when it lands on npm. Track their state on the board above.
03 · Proof Lab
Interactive · in your browser
The Proof Lab lets you probe the sanitization gate and the matcher directly — feed it inputs, watch what the contract does and does not expose, and try to make it leak a source identifier. If you can, we want to know.
asaptic.com/demo/proof-lab/ SHIPS WITH PROOF-LAB MERGEThe Proof Lab is built on a separate branch. This link goes live when that branch merges — see MERGE_NOTES_devhub.md.
04 · Falsifiable numbers
Every number here comes straight out of the live feed you can pull above. No estimates, no projections.
Check them yourself: curl -s https://asaptic.com/tender/rows.json | jq '.rows | length' → 2,395 · jq '[.rows[].market]|unique' → 7 markets · jq '.rows[0]|keys|length' → 11 fields.
05 · The contract
One stable shape for every market. Eleven fields, all sanitized — the identity of the buyer, the reference, the deadline and the source stay on our side of the gate. What crosses is a queryable, comparable listing.
The named internals — brand chips, not open source:
Ships with the developers-surface merge: the published JSON-Schema for asaptic.tender.v1 and its fixtures. Until then, the live shape is observable directly in /tender/rows.json. See MERGE_NOTES_devhub.md.
06 · AI-native distribution
The discovery surfaces an agent looks for — present today or shipping with the rollout, marked by real probe.
Probe them: for p in /llms.txt /openapi.json /.well-known/mcp.json; do curl -s -o /dev/null -w "%{http_code} %{content_type}\n" https://asaptic.com$p; done