Agentic Dealer Network
Live franchised-dealer inventory, quotes, and consented salesperson handoffs.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWlead_prepare에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"adn-gateway": {
"url": "https://gateway.agenticdealernetwork.com/mcp"
}
}
}원격 엔드포인트
https://gateway.agenticdealernetwork.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (12)
🟢network_directory(country, limit, offset)
Directory of active ADN rooftops: slug, name, dealer group, OEM programs, location metadata, and per-rooftop manifest URL. Pass country=CA for Canadian dealers.
입력 스키마
{
"type": "object",
"properties": {
"country": {
"type": "string",
"enum": [
"US",
"CA"
],
"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."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 10000
}
},
"additionalProperties": false
}🟢network_search(country, condition, make, model, body_style, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"country": {
"type": "string",
"enum": [
"US",
"CA"
],
"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."
},
"condition": {
"enum": [
"new",
"used"
]
},
"make": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"model": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"body_style": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"fuel_type": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"drivetrain": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"exterior_color": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"interior_color": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"transmission": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"trim": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"model_year_min": {
"type": "integer",
"minimum": 1950,
"maximum": 2100
},
"model_year_max": {
"type": "integer",
"minimum": 1950,
"maximum": 2100
},
"price_min": {
"type": "number",
"minimum": 0,
"maximum": 99999999.99,
"description": "Minimum expiry-gated effective price: an unexpired special price when present, otherwise asking price."
},
"price_max": {
"type": "number",
"minimum": 0,
"maximum": 99999999.99,
"description": "Maximum expiry-gated effective price: an unexpired special price when present, otherwise asking price."
},
"odometer_max": {
"type": "integer",
"minimum": 0
},
"passenger_capacity_min": {
"type": "integer",
"minimum": 1,
"maximum": 20
},
"is_certified": {
"type": "boolean"
},
"oem_program_slug": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"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."
},
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"radius_miles": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 500
},
"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)."
},
"view": {
"enum": [
"summary",
"manifest",
"full"
],
"default": "summary"
},
"format": {
"enum": [
"json",
"csv"
],
"default": "json"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500,
"description": "1–500 with view manifest; 1–50 for summary and full (server-enforced)"
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 10000,
"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."
}
},
"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."
}🟢inventory_stats(country, condition, make, model, body_style, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"country": {
"type": "string",
"enum": [
"US",
"CA"
],
"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."
},
"condition": {
"enum": [
"new",
"used"
]
},
"make": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"model": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"body_style": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"fuel_type": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"drivetrain": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"exterior_color": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"interior_color": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"transmission": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
]
},
"trim": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"model_year_min": {
"type": "integer",
"minimum": 1950,
"maximum": 2100
},
"model_year_max": {
"type": "integer",
"minimum": 1950,
"maximum": 2100
},
"price_min": {
"type": "number",
"minimum": 0,
"maximum": 99999999.99,
"description": "Minimum expiry-gated effective price."
},
"price_max": {
"type": "number",
"minimum": 0,
"maximum": 99999999.99,
"description": "Maximum expiry-gated effective price."
},
"odometer_max": {
"type": "integer",
"minimum": 0
},
"passenger_capacity_min": {
"type": "integer",
"minimum": 1,
"maximum": 20
},
"is_certified": {
"type": "boolean"
},
"oem_program_slug": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"radius_miles": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 500
},
"dimensions": {
"type": "array",
"minItems": 1,
"maxItems": 4,
"uniqueItems": true,
"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"
]
}
},
"group_by": {
"type": "array",
"minItems": 1,
"maxItems": 2,
"uniqueItems": true,
"items": {
"enum": [
"make",
"model",
"make_model",
"condition",
"body_style",
"fuel_type",
"drivetrain",
"exterior_color",
"model_year",
"rooftop",
"state",
"dealer_group",
"price_band",
"age_band"
]
}
},
"format": {
"enum": [
"json",
"csv"
]
},
"rooftop_slugs": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"uniqueItems": true,
"description": "Restrict the single-snapshot aggregation to these network rooftops.",
"items": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$"
}
}
},
"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."
}🟢inventory_get(identity, rooftop_slug)
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.
입력 스키마
{
"type": "object",
"properties": {
"identity": {
"type": "string",
"minLength": 5,
"maxLength": 30
},
"rooftop_slug": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"identity",
"rooftop_slug"
],
"additionalProperties": false
}🟢network_snapshot(country, rooftop_slug, view, format)
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.
입력 스키마
{
"type": "object",
"properties": {
"country": {
"type": "string",
"enum": [
"US",
"CA"
],
"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])?$"
},
"view": {
"enum": [
"manifest",
"summary",
"full"
],
"default": "manifest"
},
"format": {
"enum": [
"csv",
"json"
],
"default": "csv"
}
},
"additionalProperties": false
}🟢inventory_changes(cursor, view, country, rooftop_slug)
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.
입력 스키마
{
"type": "object",
"properties": {
"cursor": {
"type": "string",
"minLength": 8,
"maxLength": 2048
},
"view": {
"enum": [
"manifest",
"summary",
"full"
]
},
"country": {
"type": "string",
"enum": [
"US",
"CA"
],
"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])?$"
}
},
"required": [
"cursor"
],
"additionalProperties": false
}🟢inventory_comparables(country, currency, identity, make, model, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"country": {
"type": "string",
"enum": [
"US",
"CA"
],
"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",
"minLength": 1,
"maxLength": 64
},
"make": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"model": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"model_year": {
"type": "integer",
"minimum": 1950,
"maximum": 2100
},
"trim": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"rooftop_slug": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$"
},
"condition": {
"enum": [
"new",
"used"
]
},
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"radius_miles": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 500
},
"model_year_expand": {
"type": "integer",
"enum": [
0,
1
],
"default": 0
}
},
"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."
}🟢stores(rooftop_slug)
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.
입력 스키마
{
"type": "object",
"properties": {
"rooftop_slug": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"rooftop_slug"
],
"additionalProperties": false
}🟢quote_preview(identity, rooftop_slug)
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.
입력 스키마
{
"type": "object",
"properties": {
"identity": {
"type": "string",
"minLength": 5,
"maxLength": 30
},
"rooftop_slug": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"identity",
"rooftop_slug"
],
"additionalProperties": false
}🔴deal_quote(identity, rooftop_slug, idempotency_key)
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.
입력 스키마
{
"type": "object",
"properties": {
"identity": {
"type": "string",
"minLength": 5,
"maxLength": 30
},
"rooftop_slug": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Required when authenticated (durable quote); ignored meaningfully only with an agent key."
}
},
"required": [
"identity",
"rooftop_slug"
],
"additionalProperties": false
}🟢lead_prepare(rooftop_slug, unit_identity, customer, channels, comments)
Prepare a named dealership's exact contact disclosure and a short-lived signed binding.
입력 스키마
{
"type": "object",
"properties": {
"rooftop_slug": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"unit_identity": {
"type": "string",
"minLength": 5,
"maxLength": 30
},
"customer": {
"type": "object",
"required": [
"name"
],
"anyOf": [
{
"required": [
"email"
]
},
{
"required": [
"phone"
]
}
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"minLength": 6,
"maxLength": 254,
"pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"
},
"phone": {
"type": "string",
"minLength": 7,
"maxLength": 30,
"pattern": "^(?=(?:[^0-9]*[0-9]){7,15}[^0-9]*$)\\+?[0-9()\\-. ]+$"
}
}
},
"channels": {
"type": "array",
"minItems": 1,
"maxItems": 2,
"uniqueItems": true,
"items": {
"enum": [
"email",
"phone"
]
}
},
"comments": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"rooftop_slug",
"unit_identity",
"customer",
"channels"
],
"additionalProperties": false,
"description": "customer.email requires channels to include email. customer.phone requires channels to include phone."
}🔴lead_submit(rooftop_slug, binding, disclosure_text, customer, comments)
Submit the shopper's bound contact request to the named dealership.
입력 스키마
{
"type": "object",
"properties": {
"rooftop_slug": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"binding": {
"type": "string",
"minLength": 1,
"maxLength": 16384
},
"disclosure_text": {
"type": "string",
"minLength": 10,
"maxLength": 5000
},
"customer": {
"type": "object",
"required": [
"name"
],
"anyOf": [
{
"required": [
"email"
]
},
{
"required": [
"phone"
]
}
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"minLength": 6,
"maxLength": 254,
"pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"
},
"phone": {
"type": "string",
"minLength": 7,
"maxLength": 30,
"pattern": "^(?=(?:[^0-9]*[0-9]){7,15}[^0-9]*$)\\+?[0-9()\\-. ]+$"
}
}
},
"comments": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"rooftop_slug",
"binding",
"disclosure_text",
"customer"
],
"additionalProperties": false
}커뮤니티
증거