Doorprice for agents
One integration for price comparison, review intelligence and checkout across stores, plus appointments. Every call takes an intent: one sentence about why you are calling. It is required, it helps us rank results, and it tells us what to build next.
1. Remote MCP server
Streamable HTTP, stateless, no auth needed for the prototype. Works with Claude (Settings → Connectors → Add custom connector), ChatGPT developer mode, Cursor, VS Code and any MCP client.
https://doorprice.co/mcpClients that only speak stdio can bridge with mcp-remote:
{
"mcpServers": {
"doorprice": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://doorprice.co/mcp"
]
}
}
}2. CLI
JSON output for agents (--json), tables for people. Needs Node 20+.
npx -y https://doorprice.co/cli.tgz search "robot vacuum for pet hair" --intent "compare robot vacuums for a home with a dog"doorprice search <query> [--max 300] [--zip 94103] [--live] [--json] doorprice product <id> doorprice compare <id> <id> [<id>...] doorprice buy <offer_id> doorprice status <checkout_id> doorprice services <query> [--type haircut] doorprice book <provider> --slot ISO Every command needs --intent "why" (or DOORPRICE_INTENT).
3. REST API
OpenAPI 3.1 at /openapi.json. Send the intent as intent or the X-Doorprice-Intent header.
curl "https://doorprice.co/api/v1/search?q=quiet+headphones&max_price=300" \ -H "X-Doorprice-Intent: find ANC headphones for flights under 300" \ -H "X-Doorprice-Agent: my-agent"
MCP tools
search_products | Find products and the lowest delivered price. Demo catalog (full scores) or live Shopify catalog (real merchants). |
get_product | Every offer with delivered totals, the Doorprice Score with its evidence, specs, pros and cons, videos. |
compare_products | Aligned comparison table for 2 to 4 products, best value per row marked. Markdown included. |
create_checkout | Quote and create a checkout for an offer. Returns totals and a payment_url for the person to approve. |
get_checkout_status | Payment and order status for a checkout id. |
search_services | Appointments (haircuts, massage, dental, primary care): all-in price, next opening, distance, provider score. |
get_provider | A provider’s services, open slots, policies, insurance and score breakdown. |
book_appointment | Hold a slot and get a confirm_url. Health bookings require patient_consent: true and no health details. |
research_products | Research a category Doorprice does not cover yet: live candidates, collected evidence and Doorprice Scores in seconds. |
send_feedback | Ask a question, report an issue or request a feature. A person reviews every report. |
All tools return structuredContent (with an output schema) plus a short Markdown summary. Use response_format: "concise" to save tokens.
The intent field
{
"name": "search_products",
"arguments": {
"query": "quiet headphones for flights",
"max_price": 300,
"ship_to_zip": "94103",
"intent": "User wants the quietest headphones for long flights under $300",
"intent_stage": "discover"
}
}
- intent (required): the person’s goal in plain words. No names, emails or health details; we scrub them anyway.
- intent_stage: discover, compare, decide, purchase or post_purchase.
- agent_name: your product name, if your client doesn’t send one.
Agent-readable everything
- /llms.txt: how to use Doorprice, in one file
- Any product page as
.mdor.json, or sendAccept: text/markdown - schema.org Product JSON-LD on every product page
- /.well-known/mcp.json: MCP server card
- /ucp/agent-profile.json: our UCP agent profile (used to query Shopify’s catalog)
Rules for buying
- Checkouts return a
payment_url. Show it to the person; never pay without their approval. - Health appointments need
patient_consent: true, given by the patient. - Prices on the demo catalog are synthetic. Use
source: "shopify_live"for real products.