MCP for mobile-vendor readiness — not another permit bot.
StallReady exposes the same vault, readiness score, city checklists, and inspector packets your team uses in the dashboard — over a single HTTPS endpoint agents can call from Cursor or Claude Desktop. Built for food-truck and mobile-vendor compliance prep in the TX corridor (DSHS MFV / HB 2844 + Austin, Houston, DFW). Prepare-only: we do not submit to government portals.
Endpoint & auth
URL: https://stallready.com/api/mcp
Transport: MCP Streamable HTTP (POST JSON-RPC: initialize, tools/list, tools/call). Legacy standalone SSE is not hosted — use POST only. Send MCP-Protocol-Version: 2025-06-18; an unsupported header value returns HTTP 400 (invalid_protocol_version). An older params.protocolVersion in initialize alone is upgraded to 2025-06-18 — see /docs/mcp.
OAuth: Unauthenticated requests get 401 + WWW-Authenticate → Protected Resource Metadata.
Auth (credentials): Authorization: Bearer sr_live_… (interim) or OAuth access token only after FYMB wires a live IdP (mcp_oauth_status in AS metadata). Today use keys from app settings on Ops+MCP ($149/mo). Solo and Fleet keys are rejected with 403.
curl -s -X POST https://stallready.com/api/mcp \
-H "Authorization: Bearer YOUR_SR_LIVE_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2025-06-18" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Tool catalog
Schemas match tools/list on the live server — seven tools, org-scoped to your trucks and credentials.
list_expiring_docs
List credentials for the authenticated org that expire within N days (or are already expired when include_expired is true). Read-only. Example: { "within_days": 14, "truck_id": "trk_abc", "include_expired": false }. Optional doc_types filters by credential type strings. Returns as_of date and items with days_remaining and status (valid|expiring|expired).
get_readiness_score
Compute event-specific readiness 0–100 for one truck in a TX corridor city on event_date. Read-only. Required: truck_id (org-scoped), city (e.g. Austin, Houston, dallas, texas), event_date (ISO date YYYY-MM-DD). Returns score, missing required doc types, and matched rule context. Does not create packets or file with agencies.
get_city_checklist
Return source-linked rule cards for a Texas corridor city or statewide DSHS MFV layer. Read-only. Required: city (normalized: austin, houston, dfw/dallas, texas/dshs-mfv). Optional state defaults TX. Each card includes jurisdiction source_url, last_verified_at, required_doc_types, and body_md. Not legal advice.
export_inspector_packet
Create an inspector packet export for a truck and return print_url plus credential/vault summary. Side effect: inserts a packet_exports row. Required: truck_id. Optional: as_of (ISO date, default today), format html|pdf (metadata only; print route is HTML-first), idempotency_key (safe retries — returns the first successful result). Does not email organizers or submit to government.
generate_compliance_pack
Aggregate city checklist + readiness score + inspector packet for a pre-event bundle. Side effects when confirm is true: calls export_inspector_packet (creates export). Required: city, event_date (ISO), truck_id. Must pass confirm: true or returns confirm_required error without writing. Does not file with any government agency.
list_trucks
List all trucks belonging to the authenticated organization. Read-only. No parameters. Example: {}. Returns trucks array with id, name, and plate/vin fields.
list_credentials
List credentials for the org, optionally filtered by truck_id and status. Read-only. Example: { "truck_id": "trk_abc", "status": "expiring" }. status enum: valid | expiring | expired. Omit filters to return all org credentials.
Limits (honest)
- No government submit — packets and packs are for your team and organizers; StallReady does not file with cities or DSHS.
- Confirm-gated writes —
generate_compliance_packrequiresconfirm: true. - Side effects —
export_inspector_packetcreates a packet export record and returns a print URL. - Rate limits — 600 requests/min and 120 tool calls/min per org (429 + Retry-After).
- Tier gate — MCP keys only on Ops+MCP; includes 5,000 tool calls/mo fair-use (pricing detail).
Public marketing pages and llms.txt are crawlable for buyers, SmitheryBot, and search bots (OAI-SearchBot, Claude-SearchBot, PerplexityBot); training crawlers are not blanket-allowed (see robots.txt).
Cursor
Add to ~/.cursor/mcp.json. Replace YOUR_SR_LIVE_KEY with your Ops+MCP key.
{
"mcpServers": {
"stallready": {
"url": "https://stallready.com/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_SR_LIVE_KEY"
}
}
}
}Claude Desktop
Add under mcpServers in claude_desktop_config.json (same URL and Bearer header).
{
"mcpServers": {
"stallready": {
"url": "https://stallready.com/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_SR_LIVE_KEY"
}
}
}
}Markdown twin for agents
Plain-text install guide with the same snippets and tool table: /marketing/mcp.md
Questions: support@stallready.com
Not legal advice. Confirm requirements with the issuing agency.