Start here
The whole API is four operations on one host, no key. Everything below is published by SMKlog and kept in step with the live contract by the same test run that gates a deploy.
Quote API documentation
The request, the four money fields in a rate, the MCP tools and the rules, in one page.
OpenAPI 3.1 contract
Nine component schemas, examples on every operation, the optional OAuth scheme and the authorship marker. Served live from the API host.
Playground
Price a parcel from the browser: a form, the raw JSON answer and the rate table, against production.
The repack line
The worked example: two requests price one item in two cartons on one lane, with the arithmetic that says when the saving is real, and a standard-library Python script.
Postman collection
Every operation as a runnable request with a saved example response. Import, press Send.
Example payloads
The request and response examples from the contract as standalone JSON files.
Contract and schemas
One contract, one vocabulary, one data model, published as files a tool can read.
| Artifact | What it is | Where |
|---|---|---|
| OpenAPI 3.1 | The live contract; the root copy on this site is byte-identical to the API host. | quote-api.smklog.com/openapi.json · mirror |
| JSON Schema (2020-12) | One schema per component: QuoteRequest, QuoteResponse, Rate, Package, CheckoutSessionRequest, CheckoutSession, CheckoutStatus, Liveness, Problem. Cross-referenced by URL. | quote-request · quote-response · rate · package · checkout-session-request · checkout-session · checkout-status · liveness · problem |
| JSON-LD context | Binds every class and property of the contract to a stable IRI, with schema.org terms where one fits. | context.jsonld |
| Vocabulary | The words the contract, the MCP tools and the docs use, each with one meaning, plus the enumerations. | vocabulary.yaml |
| Overlay | OpenAPI Overlay 1.0 binding each operation to its MCP tool, A2A skill and rate-limit bucket. | overlay.yaml |
| APIs.json | The self-hosted index of this API and every artifact around it. | /apis.json · /.well-known/apis.json |
Governance
What the contract is held to before it ships.
The Spectral ruleset extends the maintained spectral:oas base with twenty house rules in three severities: every operation explains itself (error), every error answer is the one Problem shape (error), examples ride on every request and every 200 (warn), the document names its author (error), and naming guidance (info). The same promises are asserted in code on every test run; Spectral runs against the generated document before a worker deploy and the expected result is zero findings at any severity.
Versioning. One product version (today 1.4.0) is shared by the OpenAPI document, the MCP server card, the agent card and the /status answer; paths carry no version prefix. Every change to date has been additive: new fields, new examples, richer descriptions. The news page records each release with its date.
For agents
The same capability over MCP and A2A, and every discovery document an agent tries first.
| Surface | Address |
|---|---|
| MCP (streamable HTTP, five tools) | https://quote-api.smklog.com/mcp · server card · registry listing |
| Stdio bridge (open source) | github.com/smklog/parcel-shipping-rates-mcp · npm |
| A2A (JSON-RPC, three skills) | https://quote-api.smklog.com/a2a · signed agent card · JWKS |
| Agent Skills | discovery index |
| Catalogs | RFC 9727 api-catalog · ai-catalog · apis.json · llms.txt |
| Authentication (optional) | auth.md · authorization-server metadata · protected-resource metadata |
Operations
Where to look when something is slow, refused or down.
Status
Live liveness read from the API host, the component list and the incident history.
Rate limits
Three per-client hourly buckets, what each covers, what a 429 looks like and how a credentialed client gets its own bucket.
Security and disclosure
security.txt with the contact and the canonical policy. No bug bounty is run.
Trust center
Payments, transport security, subprocessors, data residency, the bill of materials and what SMKlog does and does not certify.
Support
A question about a quote goes to the person who wrote the code that produced it.
News
Releases and changes to the API and the site, dated.