Server definition
- Hash
- sha256:efd0f34b163ca202a3f43b5b6a07b2cdbe30f8d356151e7d9440f7724566fee4
- What it is
- What a remote MCP server returned when asked what it offers: 12 tools
The blob, as servednamed by its sha256
{
"instructions": "Agentic Dealer Network gateway. Rooftop endpoints (/r/{slug}/mcp) serve one dealership rooftop: search its live inventory, fetch a unit by VIN, read the store record with its fee schedule (stores), preview estimated pricing (quote_preview — read-only, anonymous), and run the deal rails — deal_quote (anonymous quotes are stateless; authenticated quotes persist a deal thread), deal_hold_soft / deal_hold_release, deal_handoff (consented lead handoff), lead_prepare / lead_submit (anonymous dealership contact request), and deal_thread_get. Authenticated tools take an agent API key via 'Authorization: Bearer adn_k_...' (self-serve registration: POST /register). The network endpoint (/mcp) serves the rooftop directory, cross-network inventory search with OEM and geographic scoping, per-rooftop store records with fee schedules (stores), and quote_preview — pass rooftop_slug on network calls. Choosing a tool: a count or a distribution is one inventory_stats call, never a page walk; a shopper browse is network_search, whose hint names the cheaper call when a page is truncated; a copy of the catalog is network_snapshot (one ETag'd download replaces hundreds of pages) kept current by inventory_changes; a price context for one vehicle is inventory_comparables. Search pages carry has_more and next_offset. Network reads take country (US default, CA for Canada); the radius is always in miles and prices are shown as published by the dealer in that country's currency. Listed asking prices may exclude doc/government fees and tax; quote_preview or deal_quote return an estimated total with any price-included fees flagged included_in_price. Totals are estimates at best; when pricing_coverage is 'partial_estimate', present the total as a subtotal excluding the charges in excluded. Always relay pricing_disclosure. Fee schedules may be incomplete; an unlisted fee is not a guarantee that no such fee applies. Search results are slim summaries: hero_photo_url is deliverable, so embed it as a markdown image when presenting a vehicle; photo_count and options_count report the capped detail available. When a shopper focuses on a vehicle, call inventory_get for its full ordered photo_urls gallery and embed the first few angles. Pass rooftop_slug when calling inventory_get from the network or dealer connection surface. Dealer connection endpoints add private group reads and optional writes while retaining the network read tools. Results carry per-rooftop freshness. Per-IP or per-connection rate limited.",
"tools": [
{
"description": "Out-the-door quote for one available unit at a named rooftop. Anonymous calls are stateless; authenticated calls persist a deal thread. Anonymous calls persist nothing; quote_preview is the read-only equivalent for browsing. Fee schedules may be incomplete — an unlisted fee is not a guarantee that no such fee applies; confirm final charges with the dealer. Totals are estimates at best; when pricing_coverage is \"partial_estimate\", present the total as a subtotal excluding the charges in excluded. Always relay pricing_disclosure.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotency_key": {
"description": "Required when authenticated (durable quote); ignored meaningfully only with an agent key.",
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"identity": {
"maxLength": 30,
"minLength": 5,
"type": "string"
},
"rooftop_slug": {
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"identity",
"rooftop_slug"
],
"type": "object"
},
"name": "deal_quote",
"outputSchema": null
},
{
"description": "State synchronization for a mirror built from network_snapshot: pass the sync_cursor and receive upserts (current rows in the same view) and tombstones since that position, with has_more and next_cursor. Bounded eventual consistency: take a fresh snapshot at least every 24 hours and whenever resync_required is true. Example: {\"cursor\": \"<sync_cursor from network_snapshot>\"}. Pass country=CA for Canadian dealers.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"country": {
"default": "US",
"description": "Market to search; rooftops in the other country are excluded. Prices are in that country's currency; the radius stays in miles.",
"enum": [
"US",
"CA"
],
"type": "string"
},
"cursor": {
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
"rooftop_slug": {
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$",
"type": "string"
},
"view": {
"enum": [
"manifest",
"summary",
"full"
]
}
},
"required": [
"cursor"
],
"type": "object"
},
"name": "inventory_changes",
"outputSchema": null
},
{
"description": "Price context for one vehicle against like units across the network (same make, model, exact model year, condition; optional trim and geo). Example: {\"identity\": \"<VIN>\", \"rooftop_slug\": \"mms\"} or {\"make\": \"Subaru\", \"model\": \"Outback\", \"model_year\": 2024, \"condition\": \"used\"}. Returns count, price quartiles, the subject's rank and up to 5 cheapest peers. Advertised prices only; call quote_preview for a total. Pass country=CA for Canadian dealers.",
"inputSchema": {
"additionalProperties": false,
"description": "Server-enforced: latitude requires longitude; longitude requires latitude; radius_miles requires latitude and longitude. Exactly one of identity | make+model+model_year is required. Additional argument rules are enforced server-side.",
"properties": {
"condition": {
"enum": [
"new",
"used"
]
},
"country": {
"default": "US",
"description": "Market to search; rooftops in the other country are excluded. Prices are in that country's currency; the radius stays in miles.",
"enum": [
"US",
"CA"
],
"type": "string"
},
"currency": {
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"identity": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"latitude": {
"maximum": 90,
"minimum": -90,
"type": "number"
},
"longitude": {
"maximum": 180,
"minimum": -180,
"type": "number"
},
"make": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"model": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"model_year": {
"maximum": 2100,
"minimum": 1950,
"type": "integer"
},
"model_year_expand": {
"default": 0,
"enum": [
0,
1
],
"type": "integer"
},
"radius_miles": {
"exclusiveMinimum": 0,
"maximum": 500,
"type": "number"
},
"rooftop_slug": {
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$",
"type": "string"
},
"trim": {
"maxLength": 120,
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"name": "inventory_comparables",
"outputSchema": null
},
{
"description": "Fetch one available unit by identity (VIN) from a named rooftop (rooftop_slug from network_search results). Returns the full detail shape — ordered photo gallery, options, plain-text description; embed the first few photo_urls as markdown images when presenting the vehicle. Unknown or ineligible identity/rooftop returns unit_not_found. Listed prices may exclude doc/government fees and tax — call quote_preview for the estimated total. Totals are estimates at best; when pricing_coverage is \"partial_estimate\", present the total as a subtotal excluding the charges in excluded. Always relay pricing_disclosure.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"identity": {
"maxLength": 30,
"minLength": 5,
"type": "string"
},
"rooftop_slug": {
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"identity",
"rooftop_slug"
],
"type": "object"
},
"name": "inventory_get",
"outputSchema": null
},
{
"description": "Aggregate available inventory across the network in ONE call: counts, effective-price min/median/max and the top values per facet. Example: {\"dimensions\": [\"make_model\", \"body_style\"], \"condition\": \"used\", \"rooftop_slugs\": [\"mms\"]}. Geo (latitude and longitude, optional radius_miles) and oem_program_slug scope exactly as network_search. Pivot mode (group_by, up to 2 of the facets plus state, dealer_group, price_band, age_band) returns one row per group with count and medians; dimensions and group_by are mutually exclusive; format csv returns the rows as CSV. Pass country=CA for Canadian dealers.",
"inputSchema": {
"additionalProperties": false,
"description": "Categorical arrays are ORed within their field; separate filter fields are ANDed together. Aggregation has no pagination or sorting input. Server-enforced: latitude requires longitude; longitude requires latitude; radius_miles requires latitude and longitude. Exactly one of dimensions | group_by is required. Additional argument rules are enforced server-side.",
"properties": {
"body_style": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"condition": {
"enum": [
"new",
"used"
]
},
"country": {
"default": "US",
"description": "Market to search; rooftops in the other country are excluded. Prices are in that country's currency; the radius stays in miles.",
"enum": [
"US",
"CA"
],
"type": "string"
},
"dimensions": {
"description": "One to four unique facets. make_model values join nonblank make and model with one space; rooftop values are rooftop slugs.",
"items": {
"enum": [
"make",
"model",
"make_model",
"condition",
"body_style",
"fuel_type",
"drivetrain",
"exterior_color",
"model_year",
"rooftop"
]
},
"maxItems": 4,
"minItems": 1,
"type": "array",
"uniqueItems": true
},
"drivetrain": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"exterior_color": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"format": {
"enum": [
"json",
"csv"
]
},
"fuel_type": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"group_by": {
"items": {
"enum": [
"make",
"model",
"make_model",
"condition",
"body_style",
"fuel_type",
"drivetrain",
"exterior_color",
"model_year",
"rooftop",
"state",
"dealer_group",
"price_band",
"age_band"
]
},
"maxItems": 2,
"minItems": 1,
"type": "array",
"uniqueItems": true
},
"interior_color": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"is_certified": {
"type": "boolean"
},
"latitude": {
"maximum": 90,
"minimum": -90,
"type": "number"
},
"longitude": {
"maximum": 180,
"minimum": -180,
"type": "number"
},
"make": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"model": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"model_year_max": {
"maximum": 2100,
"minimum": 1950,
"type": "integer"
},
"model_year_min": {
"maximum": 2100,
"minimum": 1950,
"type": "integer"
},
"odometer_max": {
"minimum": 0,
"type": "integer"
},
"oem_program_slug": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"passenger_capacity_min": {
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"price_max": {
"description": "Maximum expiry-gated effective price.",
"maximum": 99999999.99,
"minimum": 0,
"type": "number"
},
"price_min": {
"description": "Minimum expiry-gated effective price.",
"maximum": 99999999.99,
"minimum": 0,
"type": "number"
},
"radius_miles": {
"exclusiveMinimum": 0,
"maximum": 500,
"type": "number"
},
"rooftop_slugs": {
"description": "Restrict the single-snapshot aggregation to these network rooftops.",
"items": {
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$",
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array",
"uniqueItems": true
},
"transmission": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"trim": {
"maxLength": 120,
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"name": "inventory_stats",
"outputSchema": null
},
{
"description": "Prepare a named dealership's exact contact disclosure and a short-lived signed binding.",
"inputSchema": {
"additionalProperties": false,
"description": "customer.email requires channels to include email. customer.phone requires channels to include phone.",
"properties": {
"channels": {
"items": {
"enum": [
"email",
"phone"
]
},
"maxItems": 2,
"minItems": 1,
"type": "array",
"uniqueItems": true
},
"comments": {
"maxLength": 2000,
"type": "string"
},
"customer": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"email"
]
},
{
"required": [
"phone"
]
}
],
"properties": {
"email": {
"maxLength": 254,
"minLength": 6,
"pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$",
"type": "string"
},
"name": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"phone": {
"maxLength": 30,
"minLength": 7,
"pattern": "^(?=(?:[^0-9]*[0-9]){7,15}[^0-9]*$)\\+?[0-9()\\-. ]+$",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"rooftop_slug": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"unit_identity": {
"maxLength": 30,
"minLength": 5,
"type": "string"
}
},
"required": [
"rooftop_slug",
"unit_identity",
"customer",
"channels"
],
"type": "object"
},
"name": "lead_prepare",
"outputSchema": null
},
{
"description": "Submit the shopper's bound contact request to the named dealership.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"binding": {
"maxLength": 16384,
"minLength": 1,
"type": "string"
},
"comments": {
"maxLength": 2000,
"type": "string"
},
"customer": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"email"
]
},
{
"required": [
"phone"
]
}
],
"properties": {
"email": {
"maxLength": 254,
"minLength": 6,
"pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$",
"type": "string"
},
"name": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"phone": {
"maxLength": 30,
"minLength": 7,
"pattern": "^(?=(?:[^0-9]*[0-9]){7,15}[^0-9]*$)\\+?[0-9()\\-. ]+$",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"disclosure_text": {
"maxLength": 5000,
"minLength": 10,
"type": "string"
},
"rooftop_slug": {
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"rooftop_slug",
"binding",
"disclosure_text",
"customer"
],
"type": "object"
},
"name": "lead_submit",
"outputSchema": null
},
{
"description": "Directory of active ADN rooftops: slug, name, dealer group, OEM programs, location metadata, and per-rooftop manifest URL. Pass country=CA for Canadian dealers.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"country": {
"default": "US",
"description": "Market to search; rooftops in the other country are excluded. Prices are in that country's currency; the radius stays in miles.",
"enum": [
"US",
"CA"
],
"type": "string"
},
"limit": {
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"offset": {
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"name": "network_directory",
"outputSchema": null
},
{
"description": "Browse available inventory across the network, one page at a time. For counts or distributions call inventory_stats; to copy the catalog call network_snapshot (one download replaces hundreds of pages). Results are slim summary rows; embed hero_photo_url as a markdown image when presenting a vehicle, and call inventory_get with rooftop_slug for its full photo gallery. Optional OEM program scope; optional geographic radius — latitude and longitude together; radius_miles defaults to 50 (max 500) and needs both. Rooftops without coordinates are excluded from geo-scoped results. Pass country=CA for Canadian dealers. Listed prices may exclude doc/government fees and tax — call quote_preview for the estimated total. Totals are estimates at best; when pricing_coverage is \"partial_estimate\", present the total as a subtotal excluding the charges in excluded. Always relay pricing_disclosure.",
"inputSchema": {
"additionalProperties": false,
"description": "Categorical arrays are ORed within their field; separate filter fields are ANDed together. The default ordering is price_asc. Server-enforced: latitude requires longitude; longitude requires latitude; radius_miles requires latitude and longitude. sort = distance requires latitude and longitude. Additional argument rules are enforced server-side.",
"properties": {
"body_style": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"condition": {
"enum": [
"new",
"used"
]
},
"country": {
"default": "US",
"description": "Market to search; rooftops in the other country are excluded. Prices are in that country's currency; the radius stays in miles.",
"enum": [
"US",
"CA"
],
"type": "string"
},
"drivetrain": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"exterior_color": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"format": {
"default": "json",
"enum": [
"json",
"csv"
]
},
"fuel_type": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"interior_color": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"is_certified": {
"type": "boolean"
},
"latitude": {
"maximum": 90,
"minimum": -90,
"type": "number"
},
"limit": {
"description": "1–500 with view manifest; 1–50 for summary and full (server-enforced)",
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"longitude": {
"maximum": 180,
"minimum": -180,
"type": "number"
},
"make": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"model": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"model_year_max": {
"maximum": 2100,
"minimum": 1950,
"type": "integer"
},
"model_year_min": {
"maximum": 2100,
"minimum": 1950,
"type": "integer"
},
"odometer_max": {
"minimum": 0,
"type": "integer"
},
"oem_program_slug": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"offset": {
"description": "Zero-based row offset. Results are totally ordered and stable for an unchanged catalog, but pagination is NOT snapshot-isolated: ingestion between two page requests shifts offsets, so a traversal may duplicate or omit rows. To copy the catalog consistently: record catalog_watermark AND total from the first page, compare both on every subsequent page, and restart the traversal if either changes. Narrowing by rooftop_slug shortens each traversal and so reduces the chance of a restart. Offsets beyond 10000 are rejected; narrow the query instead.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"passenger_capacity_min": {
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"price_max": {
"description": "Maximum expiry-gated effective price: an unexpired special price when present, otherwise asking price.",
"maximum": 99999999.99,
"minimum": 0,
"type": "number"
},
"price_min": {
"description": "Minimum expiry-gated effective price: an unexpired special price when present, otherwise asking price.",
"maximum": 99999999.99,
"minimum": 0,
"type": "number"
},
"radius_miles": {
"exclusiveMinimum": 0,
"maximum": 500,
"type": "number"
},
"rooftop_slug": {
"description": "Restrict results to one rooftop, as listed by network_directory. A slug that matches no rooftop returns no results rather than an error.",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$",
"type": "string"
},
"sort": {
"description": "Optional ordering; defaults to price_asc. The sort key uses NULLS LAST and is deterministically terminated by rooftop and unit ids. distance requires latitude and longitude (radius_miles defaults to 50).",
"enum": [
"price_asc",
"price_desc",
"year_desc",
"mileage_asc",
"distance"
]
},
"transmission": {
"oneOf": [
{
"maxLength": 80,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
]
},
"trim": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"view": {
"default": "summary",
"enum": [
"summary",
"manifest",
"full"
]
}
},
"type": "object"
},
"name": "network_search",
"outputSchema": null
},
{
"description": "Export the whole network catalog (or one rooftop with rooftop_slug) as one gzip artifact instead of paging: returns a descriptor with a generation URL, strong ETag, row and byte counts, expiry and (when available) sync_cursor; small results are inlined as rows_inline. Views: manifest (identity, pricing, key attributes; default), summary (the network_search row), full (the inventory_get row). Formats: csv (default), json. Example: {\"view\": \"manifest\", \"format\": \"csv\"}. Re-download only when the ETag changes; poll inventory_changes with sync_cursor to stay current. Pass country=CA for Canadian dealers.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"country": {
"default": "US",
"description": "Market to search; rooftops in the other country are excluded. Prices are in that country's currency; the radius stays in miles.",
"enum": [
"US",
"CA"
],
"type": "string"
},
"format": {
"default": "csv",
"enum": [
"csv",
"json"
]
},
"rooftop_slug": {
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$",
"type": "string"
},
"view": {
"default": "manifest",
"enum": [
"manifest",
"summary",
"full"
]
}
},
"type": "object"
},
"name": "network_snapshot",
"outputSchema": null
},
{
"description": "Read-only out-the-door price preview for one available unit at a named rooftop (pass rooftop_slug): base price plus itemized fees and taxes — fees already included in the listed price are flagged included_in_price and add nothing on top. Persists nothing; free to call while browsing. Fee schedules may be incomplete — an unlisted fee is not a guarantee that no such fee applies; confirm final charges with the dealer. Totals are estimates at best; when pricing_coverage is \"partial_estimate\", present the total as a subtotal excluding the charges in excluded. Always relay pricing_disclosure.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"identity": {
"maxLength": 30,
"minLength": 5,
"type": "string"
},
"rooftop_slug": {
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"identity",
"rooftop_slug"
],
"type": "object"
},
"name": "quote_preview",
"outputSchema": null
},
{
"description": "One named rooftop's store record: name, dealer group, OEM programs, location/contact metadata, and fee schedule. Pass rooftop_slug. Whether a specific unit's listed price already includes a fee varies per unit — quote_preview returns the estimated total. Fee schedules may be incomplete — an unlisted fee is not a guarantee that no such fee applies; confirm final charges with the dealer.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"rooftop_slug": {
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"rooftop_slug"
],
"type": "object"
},
"name": "stores",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:efd0f34b163ca202a3f43b5b6a07b2cdbe30f8d356151e7d9440f7724566fee4 | sha256sum