MCP-Server

Agentic Dealer Network

com.agenticdealernetwork/adn-gateway
Commerce & Retail Vertrieb & CRM Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Searches franchised-dealer vehicle inventory, retrieves vehicle details, compares prices, previews out-the-door pricing, and submits consented dealership contact requests.

deal_quote
Request a quote
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.
Destruktiv Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['identity', 'rooftop_slug'], 'properties': {'identity': {'type': 'string', 'maxLength': 30, 'minLength': 5}, 'rooftop_slug': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Required when authenticated (durable quote); ignored meaningfully only with an agent key.'}}, 'additionalProperties': False}
inventory_changes
Sync catalog changes
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.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['cursor'], 'properties': {'view': {'enum': ['manifest', 'summary', 'full']}, 'cursor': {'type': 'string', 'maxLength': 2048, 'minLength': 8}, 'country': {'enum': ['US', 'CA'], 'type': 'string', '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."}, 'rooftop_slug': {'type': 'string', 'pattern': '^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$'}}, 'additionalProperties': False}
inventory_comparables
Compare a vehicle's price to like units
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.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {'make': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'trim': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'model': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'country': {'enum': ['US', 'CA'], 'type': 'string', '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."}, 'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'identity': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'condition': {'enum': ['new', 'used']}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'model_year': {'type': 'integer', 'maximum': 2100, 'minimum': 1950}, 'radius_miles': {'type': 'number', 'maximum': 500, 'exclusiveMinimum': 0}, 'rooftop_slug': {'type': 'string', 'pattern': '^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$'}, 'model_year_expand': {'enum': [0, 1], 'type': 'integer', 'default': 0}}, '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.', 'additionalProperties': False}
inventory_get
Get vehicle details
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.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['identity', 'rooftop_slug'], 'properties': {'identity': {'type': 'string', 'maxLength': 30, 'minLength': 5}, 'rooftop_slug': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}
inventory_stats
Count and summarize network inventory
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.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {'make': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'trim': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'model': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'format': {'enum': ['json', 'csv']}, 'country': {'enum': ['US', 'CA'], 'type': 'string', '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."}, 'group_by': {'type': 'array', '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, 'uniqueItems': True}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'condition': {'enum': ['new', 'used']}, 'fuel_type': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'price_max': {'type': 'number', 'maximum': 99999999.99, 'minimum': 0, 'description': 'Maximum expiry-gated effective price.'}, 'price_min': {'type': 'number', 'maximum': 99999999.99, 'minimum': 0, 'description': 'Minimum expiry-gated effective price.'}, 'body_style': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'dimensions': {'type': 'array', 'items': {'enum': ['make', 'model', 'make_model', 'condition', 'body_style', 'fuel_type', 'drivetrain', 'exterior_color', 'model_year', 'rooftop']}, 'maxItems': 4, 'minItems': 1, 'description': 'One to four unique facets. make_model values join nonblank make and model with one space; rooftop values are rooftop slugs.', 'uniqueItems': True}, 'drivetrain': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'is_certified': {'type': 'boolean'}, 'odometer_max': {'type': 'integer', 'minimum': 0}, 'radius_miles': {'type': 'number', 'maximum': 500, 'exclusiveMinimum': 0}, 'transmission': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'rooftop_slugs': {'type': 'array', 'items': {'type': 'string', 'pattern': '^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$'}, 'maxItems': 20, 'minItems': 1, 'description': 'Restrict the single-snapshot aggregation to these network rooftops.', 'uniqueItems': True}, 'exterior_color': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'interior_color': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'model_year_max': {'type': 'integer', 'maximum': 2100, 'minimum': 1950}, 'model_year_min': {'type': 'integer', 'maximum': 2100, 'minimum': 1950}, 'oem_program_slug': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'passenger_capacity_min': {'type': 'integer', 'maximum': 20, 'minimum': 1}}, '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.', 'additionalProperties': False}
lead_prepare
Ask the dealership to reach out — prepare
Prepare a named dealership's exact contact disclosure and a short-lived signed binding.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['rooftop_slug', 'unit_identity', 'customer', 'channels'], 'properties': {'channels': {'type': 'array', 'items': {'enum': ['email', 'phone']}, 'maxItems': 2, 'minItems': 1, 'uniqueItems': True}, 'comments': {'type': 'string', 'maxLength': 2000}, 'customer': {'type': 'object', 'anyOf': [{'required': ['email']}, {'required': ['phone']}], 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'email': {'type': 'string', 'pattern': '^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$', 'maxLength': 254, 'minLength': 6}, 'phone': {'type': 'string', 'pattern': '^(?=(?:[^0-9]*[0-9]){7,15}[^0-9]*$)\\+?[0-9()\\-. ]+$', 'maxLength': 30, 'minLength': 7}}, 'additionalProperties': False}, 'rooftop_slug': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'unit_identity': {'type': 'string', 'maxLength': 30, 'minLength': 5}}, 'description': 'customer.email requires channels to include email. customer.phone requires channels to include phone.', 'additionalProperties': False}
lead_submit
Ask the dealership to reach out — confirm
Submit the shopper's bound contact request to the named dealership.
Destruktiv Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['rooftop_slug', 'binding', 'disclosure_text', 'customer'], 'properties': {'binding': {'type': 'string', 'maxLength': 16384, 'minLength': 1}, 'comments': {'type': 'string', 'maxLength': 2000}, 'customer': {'type': 'object', 'anyOf': [{'required': ['email']}, {'required': ['phone']}], 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'email': {'type': 'string', 'pattern': '^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$', 'maxLength': 254, 'minLength': 6}, 'phone': {'type': 'string', 'pattern': '^(?=(?:[^0-9]*[0-9]){7,15}[^0-9]*$)\\+?[0-9()\\-. ]+$', 'maxLength': 30, 'minLength': 7}}, 'additionalProperties': False}, 'rooftop_slug': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'disclosure_text': {'type': 'string', 'maxLength': 5000, 'minLength': 10}}, 'additionalProperties': False}
network_directory
List dealerships
Directory of active ADN rooftops: slug, name, dealer group, OEM programs, location metadata, and per-rooftop manifest URL. Pass country=CA for Canadian dealers.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0}, 'country': {'enum': ['US', 'CA'], 'type': 'string', '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."}}, 'additionalProperties': False}
network_search
Search network inventory
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.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {'make': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'sort': {'enum': ['price_asc', 'price_desc', 'year_desc', 'mileage_asc', 'distance'], '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).'}, 'trim': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'view': {'enum': ['summary', 'manifest', 'full'], 'default': 'summary'}, 'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': '1–500 with view manifest; 1–50 for summary and full (server-enforced)'}, 'model': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'format': {'enum': ['json', 'csv'], 'default': 'json'}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0, '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.'}, 'country': {'enum': ['US', 'CA'], 'type': 'string', '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."}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'condition': {'enum': ['new', 'used']}, 'fuel_type': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'price_max': {'type': 'number', 'maximum': 99999999.99, 'minimum': 0, 'description': 'Maximum expiry-gated effective price: an unexpired special price when present, otherwise asking price.'}, 'price_min': {'type': 'number', 'maximum': 99999999.99, 'minimum': 0, 'description': 'Minimum expiry-gated effective price: an unexpired special price when present, otherwise asking price.'}, 'body_style': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'drivetrain': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'is_certified': {'type': 'boolean'}, 'odometer_max': {'type': 'integer', 'minimum': 0}, 'radius_miles': {'type': 'number', 'maximum': 500, 'exclusiveMinimum': 0}, 'rooftop_slug': {'type': 'string', 'pattern': '^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$', 'description': 'Restrict results to one rooftop, as listed by network_directory. A slug that matches no rooftop returns no results rather than an error.'}, 'transmission': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'exterior_color': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'interior_color': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}]}, 'model_year_max': {'type': 'integer', 'maximum': 2100, 'minimum': 1950}, 'model_year_min': {'type': 'integer', 'maximum': 2100, 'minimum': 1950}, 'oem_program_slug': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'passenger_capacity_min': {'type': 'integer', 'maximum': 20, 'minimum': 1}}, '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.', 'additionalProperties': False}
network_snapshot
Export the catalog
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.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {'view': {'enum': ['manifest', 'summary', 'full'], 'default': 'manifest'}, 'format': {'enum': ['csv', 'json'], 'default': 'csv'}, 'country': {'enum': ['US', 'CA'], 'type': 'string', '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."}, 'rooftop_slug': {'type': 'string', 'pattern': '^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$'}}, 'additionalProperties': False}
quote_preview
Preview an out-the-door price
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.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['identity', 'rooftop_slug'], 'properties': {'identity': {'type': 'string', 'maxLength': 30, 'minLength': 5}, 'rooftop_slug': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}
stores
Get dealership details
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.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['rooftop_slug'], 'properties': {'rooftop_slug': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}
Geändert
lead_submit
25. September 2026 03:01
Geändert
deal_quote
25. September 2026 03:01
Geändert
inventory_comparables
25. September 2026 03:01
Geändert
inventory_comparables
19. September 2026 02:50
Geändert
inventory_changes
19. September 2026 02:50
Geändert
network_snapshot
19. September 2026 02:50
Geändert
inventory_stats
19. September 2026 02:50
Geändert
network_search
19. September 2026 02:50
Geändert
network_directory
19. September 2026 02:50
Hinzugefügt
lead_submit
17. September 2026 12:33
Hinzugefügt
lead_prepare
17. September 2026 12:33
Hinzugefügt
deal_quote
17. September 2026 12:33
Hinzugefügt
quote_preview
17. September 2026 12:33
Hinzugefügt
stores
17. September 2026 12:33
Hinzugefügt
inventory_comparables
17. September 2026 12:33
Hinzugefügt
inventory_changes
17. September 2026 12:33
Hinzugefügt
network_snapshot
17. September 2026 12:33
Hinzugefügt
inventory_get
17. September 2026 12:33
Hinzugefügt
inventory_stats
17. September 2026 12:33
Hinzugefügt
network_search
17. September 2026 12:33
Hinzugefügt
network_directory
17. September 2026 12:33