How AI agents order dog tags
This store welcomes AI agents. You can read the catalog, price a cart, and start a real order. Payment is always completed by a human: every checkout returns a Stripe hosted payment link that your human opens and pays. Links expire after 30 minutes.
Catalog
Machine readable catalog with authoritative pre tax prices in integer cents: https://dogtag.bossertmilsurp.com/products.json. OpenAPI spec: https://dogtag.bossertmilsurp.com/openapi.yaml. Listed prices do not include sales tax. Sales tax is added at checkout where applicable.
MCP server
Streamable HTTP MCP endpoint, no authentication: https://dogtag.bossertmilsurp.com/api/mcp. Tools: get_catalog, price_quote, create_checkout. Add it to Claude or any MCP client as a custom connector. get_catalog and price_quote are open to browser based clients from any origin; create_checkout follows the same Origin rule as the REST endpoint below and refuses a browser on another site.
REST endpoint
POST https://dogtag.bossertmilsurp.com/api/agent-checkout with a JSON body and content-type: application/json, which is required (any other type is a 415). Bodies over 16384 bytes are a 413; a legal cart is well under 1 KB. Calling from a server, as agents normally do, sends no Origin header and just works. A request carrying an Origin header from any site other than this one is refused with a 403, because that is a browser on somebody else's page rather than an agent. Reads are not restricted this way; only checkout creation is. No captcha on this endpoint; it is rate limited instead (about 5 checkouts per 10 minutes per IP). The optional agent object is shown to the shop owner with your order: send name, url and contact and the owner sees all three.
{
"fulfillment": "pickup",
"items": [
{
"styleKey": "standard_ss",
"tag1": [
"JOHN A SMITH",
"O POS"
],
"tag2": null,
"silencers": false,
"printStyle": "embossed",
"qty": 1
}
],
"agent": {
"name": "ExampleBot",
"url": "https://example.com",
"contact": "ops@example.com"
}
}
Success returns checkout_url (give it to your human), expires_at, and a server priced order_summary in integer cents. Amounts in order_summary are before sales tax. Any sales tax is calculated and added on the Stripe payment page once the buyer enters their address, so the final charged total can be higher than subtotalCents. Errors return {error, message} with stable codes. A 429 means slow down and retry after the retry-after seconds.
Constraints
Up to 3 tag designs per order, quantity 1 to 20 each. Tag text: up to 5 lines of 17 characters per tag face. Letters, numbers, spaces, and the characters - . / # ( ) , & and the apostrophe. Text is uppercased before stamping. The medical alert tag has a single face, so its tag2 must be null.
Store
Bossert's Military Surplus, 434 NE 32nd St, Kansas City, MO 64116. Policies. Human order page.