valet-parking-directory
MCP server for valet parking: 789 US operators across 31,186 cities. 7 tools. No auth.
Should I use this
Quality & Safety
Findings (1)
- LOWin valet_search_by_service_and_city
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"valet-parking-directory": {
"url": "https://api.getvaletparking.com/mcp"
}
}
}Remote endpoints
https://api.getvaletparking.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (8)
🟢valet_list_services
List the 9 canonical valet service slugs with display name and category. Use this when an agent needs to validate or discover the supported service taxonomy before composing a follow-up search (e.g. valet_search_by_service_and_city). Returns the in-bundle catalog; no upstream call; no isError path.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"services": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Canonical kebab-case service slug (e.g. wedding-valet)"
},
"displayName": {
"type": "string",
"description": "Human-readable service name"
},
"category": {
"type": "string",
"description": "Broad grouping: event, corporate, hospitality, medical, venue, or general"
}
},
"required": [
"slug",
"displayName",
"category"
],
"additionalProperties": false
},
"description": "The 9 canonical valet service types, in catalog order"
},
"data_freshness": {
"type": "object",
"properties": {
"indexed_at": {
"type": "string",
"description": "YYYY-MM-DD when this catalog was last updated"
},
"source": {
"type": "string",
"description": "Origin of the data, sourced from the in-bundle catalog"
}
},
"required": [
"indexed_at",
"source"
],
"additionalProperties": false,
"description": "TOOL-10 freshness stamp"
},
"_meta": {
"type": "object",
"properties": {
"terms": {
"type": "string",
"format": "uri"
},
"attribution": {
"type": "string"
}
},
"required": [
"terms",
"attribution"
],
"additionalProperties": false,
"description": "TOOL-11 ToS and attribution block"
}
},
"required": [
"services",
"data_freshness",
"_meta"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢valet_get_operator(slug)
Get the full operator profile by slug including address, phone, website, services, venues_served, FAQs, and tipping note. Use this when an agent has a slug from a search tool or directory URL and needs the complete profile to rank or present. Returns isError on slug 404 or upstream outage.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"description": "Canonical kebab-case operator slug (e.g. '12-oaks-parking-llc'). Lowercase letters, digits, hyphens only."
}
},
"required": [
"slug"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"operator": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Payload UUID; matches Typesense document id"
},
"name": {
"type": "string",
"description": "Operator business name"
},
"slug": {
"type": "string",
"description": "Canonical kebab-case slug; matches the input"
},
"primary_city_name": {
"type": "string",
"description": "HQ proxy city display name"
},
"primary_state_name": {
"type": "string",
"description": "HQ proxy state display name"
},
"primary_city_slug": {
"type": "string",
"description": "HQ proxy city slug (URL-safe)"
},
"primary_state_slug": {
"type": "string",
"description": "HQ proxy state slug (URL-safe)"
},
"service_area_city_slugs": {
"type": "array",
"items": {
"type": "string"
},
"description": "All city slugs this operator serves"
},
"service_area_count": {
"type": "number",
"description": "Count of service-area cities"
},
"services": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical service slugs from valet_list_services taxonomy"
},
"tier": {
"type": "string",
"description": "Subscription tier: free | paid | custom"
},
"verified": {
"type": "boolean",
"description": "Manual verification status"
},
"claimed": {
"type": "boolean",
"description": "Operator-claim status"
},
"phone": {
"type": [
"string",
"null"
],
"description": "E.164 phone number; null if none"
},
"description_text": {
"type": [
"string",
"null"
],
"description": "Plaintext description; null if none. Lexical AST not exposed."
},
"photo_url": {
"type": [
"string",
"null"
],
"description": "Profile photo URL; null if none"
},
"address": {
"type": [
"string",
"null"
],
"description": "Full street address; null if none"
},
"website": {
"type": [
"string",
"null"
],
"description": "Operator website URL with ?ref=mcp UTM stamp (TOOL-12); null if none"
},
"venues_served": {
"type": "array",
"items": {
"type": "object",
"properties": {
"venue": {
"type": "string"
}
},
"required": [
"venue"
],
"additionalProperties": false
},
"description": "Venues this operator regularly serves"
},
"faqs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"question": {
"type": "string"
},
"answer": {
"type": "string"
},
"source": {
"type": "string"
}
},
"required": [
"question",
"answer"
],
"additionalProperties": false
},
"description": "Structured FAQs; tipping guidance lives here as one entry"
},
"buyer_question_phrasings": {
"anyOf": [
{
"type": "object",
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "LLM-seeded phrasings of buyer-checklist questions"
}
},
"required": [
"id",
"name",
"slug",
"primary_city_name",
"primary_state_name",
"primary_city_slug",
"primary_state_slug",
"service_area_city_slugs",
"service_area_count",
"services",
"tier",
"verified",
"claimed",
"phone",
"description_text",
"photo_url",
"address",
"website",
"venues_served",
"faqs",
"buyer_question_phrasings"
],
"additionalProperties": false,
"description": "The full merged operator profile (Typesense + Payload long-tail fields)"
},
"data_freshness": {
"type": "object",
"properties": {
"indexed_at": {
"type": "string",
"description": "ISO datetime of the Typesense indexed_at stamp"
},
"source": {
"type": "string",
"description": "Origin of the data; for this tool: typesense:operators"
}
},
"required": [
"indexed_at",
"source"
],
"additionalProperties": false,
"description": "TOOL-10 freshness stamp"
},
"_meta": {
"type": "object",
"properties": {
"terms": {
"type": "string",
"format": "uri"
},
"attribution": {
"type": "string"
}
},
"required": [
"terms",
"attribution"
],
"additionalProperties": false,
"description": "TOOL-11 ToS and attribution block"
}
},
"required": [
"operator",
"data_freshness",
"_meta"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢valet_search_cities(query, limit)
Search the cities directory by name prefix with population-ranked results. Use this when an agent needs to resolve a partial city name into a canonical city slug plus state slug plus lat/lng before composing valet_find_operators_in_city or valet_find_operators_near. Empty array if no matches.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"description": "Partial or full city name (>=2 chars). Matched against name and lowercase name fields with prefix semantics."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 8,
"description": "Max results to return; default 8, capped at 25"
}
},
"required": [
"query"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"cities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Canonical kebab-case city slug (URL-safe)"
},
"state_slug": {
"type": "string",
"description": "Canonical kebab-case state slug (e.g. texas, new-york)"
},
"lat": {
"type": [
"number",
"null"
],
"description": "City centroid latitude; null if unset in the index"
},
"lng": {
"type": [
"number",
"null"
],
"description": "City centroid longitude; null if unset in the index"
},
"population": {
"type": "number",
"description": "Census population estimate; used as the sort tiebreaker"
}
},
"required": [
"slug",
"state_slug",
"lat",
"lng",
"population"
],
"additionalProperties": false
},
"description": "Cities matching the query, ranked by text match then population desc"
},
"data_freshness": {
"type": "object",
"properties": {
"indexed_at": {
"type": "string",
"description": "Date the cities collection was last fully reindexed"
},
"source": {
"type": "string",
"description": "Origin of the data; for this tool: typesense:cities"
}
},
"required": [
"indexed_at",
"source"
],
"additionalProperties": false,
"description": "TOOL-10 freshness stamp"
},
"_meta": {
"type": "object",
"properties": {
"terms": {
"type": "string",
"format": "uri"
},
"attribution": {
"type": "string"
}
},
"required": [
"terms",
"attribution"
],
"additionalProperties": false,
"description": "TOOL-11 ToS and attribution block"
}
},
"required": [
"cities",
"data_freshness",
"_meta"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢valet_find_operators_in_city(state_slug, city_slug, service, limit)
List valet operators serving a city slug plus state slug, optionally narrowed by service. Use this when an agent has a city already disambiguated and wants its operator roster ranked by listing tier then name. Empty array if no listed operators.
Input Schema
{
"type": "object",
"properties": {
"state_slug": {
"type": "string",
"minLength": 1,
"description": "Lowercase kebab-case US state slug (e.g. 'tx', 'new-york')"
},
"city_slug": {
"type": "string",
"minLength": 1,
"description": "Lowercase kebab-case city slug (e.g. 'houston', 'san-francisco')"
},
"service": {
"type": "string",
"enum": [
"wedding-valet",
"corporate-event-valet",
"private-event-valet",
"funeral-valet",
"hotel-resort-valet",
"restaurant-valet",
"hospital-medical-valet",
"major-venue-valet",
"general-valet"
],
"description": "Optional service narrowing. One of the 9 canonical valet service slugs. Omit to list every operator serving the city."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10,
"description": "Max results to return; default 10, capped at 50"
}
},
"required": [
"state_slug",
"city_slug"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"operators": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Operator business name"
},
"slug": {
"type": "string",
"description": "Canonical kebab-case operator slug; pass to valet_get_operator for details"
},
"primary_city_name": {
"type": "string",
"description": "Display name of operator HQ city"
},
"primary_state_name": {
"type": "string",
"description": "Display name of operator HQ state"
},
"primary_city_slug": {
"type": "string",
"description": "Canonical kebab-case HQ city slug"
},
"primary_state_slug": {
"type": "string",
"description": "Canonical kebab-case HQ state slug"
},
"services": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical service slugs this operator offers"
},
"phone": {
"type": [
"string",
"null"
],
"description": "Operator phone number, null if not on file"
},
"tier": {
"type": "string",
"description": "Operator tier: 'free', 'paid', or 'custom'"
},
"description_text": {
"type": [
"string",
"null"
],
"description": "Plain-text summary; null if not on file"
}
},
"required": [
"name",
"slug",
"primary_city_name",
"primary_state_name",
"primary_city_slug",
"primary_state_slug",
"services",
"phone",
"tier",
"description_text"
],
"additionalProperties": false
},
"description": "Operators serving the city, ranked tier:desc then name:asc. Empty array means no matches."
},
"data_freshness": {
"type": "object",
"properties": {
"indexed_at": {
"type": "string",
"description": "ISO timestamp of the freshest row in the batch"
},
"source": {
"type": "string",
"description": "Origin tag: typesense:operators or typesense:operators:empty"
}
},
"required": [
"indexed_at",
"source"
],
"additionalProperties": false,
"description": "TOOL-10 freshness stamp"
},
"_meta": {
"type": "object",
"properties": {
"terms": {
"type": "string",
"format": "uri"
},
"attribution": {
"type": "string"
}
},
"required": [
"terms",
"attribution"
],
"additionalProperties": false,
"description": "TOOL-11 ToS and attribution block"
}
},
"required": [
"operators",
"data_freshness",
"_meta"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢valet_search_by_service_and_city(service_slug, city_slug, limit)
Search valet operators by service slug plus city slug across all matching states. Use this when an agent has both a service slug and a city slug and wants a cross-state tier-then-name ranked list. Invalid service slugs surface the 9 canonical alternatives.
Input Schema
{
"type": "object",
"properties": {
"service_slug": {
"type": "string",
"enum": [
"wedding-valet",
"corporate-event-valet",
"private-event-valet",
"funeral-valet",
"hotel-resort-valet",
"restaurant-valet",
"hospital-medical-valet",
"major-venue-valet",
"general-valet"
],
"description": "Required canonical valet service slug. One of 9 values; call valet_list_services for the full set."
},
"city_slug": {
"type": "string",
"minLength": 1,
"description": "Lowercase kebab-case city slug (e.g. 'austin', 'springfield'). May match multiple cities across states."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10,
"description": "Max results to return; default 10, capped at 50"
}
},
"required": [
"service_slug",
"city_slug"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"operators": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Operator business name"
},
"slug": {
"type": "string",
"description": "Canonical kebab-case operator slug"
},
"primary_city_name": {
"type": "string",
"description": "Display name of operator HQ city"
},
"primary_state_name": {
"type": "string",
"description": "Display name of operator HQ state"
},
"primary_city_slug": {
"type": "string",
"description": "Canonical kebab-case HQ city slug"
},
"primary_state_slug": {
"type": "string",
"description": "Canonical kebab-case HQ state slug; key disambiguation field"
},
"services": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical service slugs this operator offers"
},
"phone": {
"type": [
"string",
"null"
],
"description": "Operator phone number, null if not on file"
},
"tier": {
"type": "string",
"description": "Operator tier: 'free', 'paid', or 'custom'"
},
"description_text": {
"type": [
"string",
"null"
],
"description": "Plain-text summary; null if not on file"
}
},
"required": [
"name",
"slug",
"primary_city_name",
"primary_state_name",
"primary_city_slug",
"primary_state_slug",
"services",
"phone",
"tier",
"description_text"
],
"additionalProperties": false
},
"description": "Operators offering service_slug in any city matching city_slug across all states. Empty array means no matches."
},
"data_freshness": {
"type": "object",
"properties": {
"indexed_at": {
"type": "string",
"description": "ISO timestamp of the freshest row in the batch"
},
"source": {
"type": "string",
"description": "Origin tag: typesense:operators or typesense:operators:empty"
}
},
"required": [
"indexed_at",
"source"
],
"additionalProperties": false,
"description": "TOOL-10 freshness stamp"
},
"_meta": {
"type": "object",
"properties": {
"terms": {
"type": "string",
"format": "uri"
},
"attribution": {
"type": "string"
}
},
"required": [
"terms",
"attribution"
],
"additionalProperties": false,
"description": "TOOL-11 ToS and attribution block"
}
},
"required": [
"operators",
"data_freshness",
"_meta"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢valet_find_nearest_operators(lat, lng, service, limit)
List nearest valet operators within a 100-mile cap of a coordinate, optionally narrowed by service. Use this when a user is in a city with no listed operators and you need the closest available fallback ranked nearest-first. Empty array if nothing within 100 miles.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees (WGS84). Range: -90 to 90."
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees (WGS84). Range: -180 to 180."
},
"service": {
"type": "string",
"enum": [
"wedding-valet",
"corporate-event-valet",
"private-event-valet",
"funeral-valet",
"hotel-resort-valet",
"restaurant-valet",
"hospital-medical-valet",
"major-venue-valet",
"general-valet"
],
"description": "Optional service narrowing. One of the 9 canonical valet service slugs. Omit to list every nearby operator regardless of services offered."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10,
"description": "Max results to return; default 10, capped at 50"
}
},
"required": [
"lat",
"lng"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"operators": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Operator business name"
},
"slug": {
"type": "string",
"description": "Canonical kebab-case operator slug; pass to valet_get_operator for details"
},
"primary_city_name": {
"type": "string",
"description": "Display name of operator HQ city"
},
"primary_state_name": {
"type": "string",
"description": "Display name of operator HQ state"
},
"primary_city_slug": {
"type": "string",
"description": "Canonical kebab-case HQ city slug"
},
"primary_state_slug": {
"type": "string",
"description": "Canonical kebab-case HQ state slug"
},
"services": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical service slugs this operator offers"
},
"phone": {
"type": [
"string",
"null"
],
"description": "Operator phone number, null if not on file"
},
"tier": {
"type": "string",
"description": "Operator tier: 'free', 'paid', or 'custom'"
},
"description_text": {
"type": [
"string",
"null"
],
"description": "Plain-text summary; null if not on file"
},
"distance_miles": {
"type": "number",
"description": "Distance from the input coordinate to operator HQ, rounded to 1 decimal"
}
},
"required": [
"name",
"slug",
"primary_city_name",
"primary_state_name",
"primary_city_slug",
"primary_state_slug",
"services",
"phone",
"tier",
"description_text",
"distance_miles"
],
"additionalProperties": false
},
"description": "Operators within 100 miles of the input coordinate, sorted nearest-first. Empty array means nothing within 100 miles."
},
"data_freshness": {
"type": "object",
"properties": {
"indexed_at": {
"type": "string",
"description": "ISO timestamp of the freshest row in the batch"
},
"source": {
"type": "string",
"description": "Origin tag: typesense:operators or typesense:operators:empty"
}
},
"required": [
"indexed_at",
"source"
],
"additionalProperties": false,
"description": "TOOL-10 freshness stamp"
},
"_meta": {
"type": "object",
"properties": {
"terms": {
"type": "string",
"format": "uri"
},
"attribution": {
"type": "string"
}
},
"required": [
"terms",
"attribution"
],
"additionalProperties": false,
"description": "TOOL-11 ToS and attribution block"
}
},
"required": [
"operators",
"data_freshness",
"_meta"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢valet_find_operators_near(lat, lng, radius_miles, service, limit)
Find valet operators within a given radius of a coordinate, ranked by listing tier then distance. Use this when you have a coordinate and an event-context radius (5mi single venue, 25mi metro, 50mi regional). radius_miles is required; empty array if no matches.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees (WGS84). Range: -90 to 90."
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees (WGS84). Range: -180 to 180."
},
"radius_miles": {
"type": "number",
"minimum": 0.1,
"maximum": 500,
"description": "Search radius in miles. REQUIRED, no default. Pick based on context: 5 mi for a single venue, 25 mi for a metro, 50 mi for a regional sweep."
},
"service": {
"type": "string",
"enum": [
"wedding-valet",
"corporate-event-valet",
"private-event-valet",
"funeral-valet",
"hotel-resort-valet",
"restaurant-valet",
"hospital-medical-valet",
"major-venue-valet",
"general-valet"
],
"description": "Optional service narrowing. One of the 9 canonical valet service slugs. Omit to list every operator within radius regardless of services offered."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10,
"description": "Max results to return; default 10, capped at 50"
}
},
"required": [
"lat",
"lng",
"radius_miles"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"operators": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Operator business name"
},
"slug": {
"type": "string",
"description": "Canonical kebab-case operator slug; pass to valet_get_operator for details"
},
"primary_city_name": {
"type": "string",
"description": "Display name of operator HQ city"
},
"primary_state_name": {
"type": "string",
"description": "Display name of operator HQ state"
},
"primary_city_slug": {
"type": "string",
"description": "Canonical kebab-case HQ city slug"
},
"primary_state_slug": {
"type": "string",
"description": "Canonical kebab-case HQ state slug"
},
"services": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical service slugs this operator offers"
},
"phone": {
"type": [
"string",
"null"
],
"description": "Operator phone number, null if not on file"
},
"tier": {
"type": "string",
"description": "Operator tier: 'free', 'paid', or 'custom'"
},
"description_text": {
"type": [
"string",
"null"
],
"description": "Plain-text summary; null if not on file"
},
"distance_miles": {
"type": "number",
"description": "Distance from the input coordinate to operator HQ, rounded to 1 decimal"
}
},
"required": [
"name",
"slug",
"primary_city_name",
"primary_state_name",
"primary_city_slug",
"primary_state_slug",
"services",
"phone",
"tier",
"description_text",
"distance_miles"
],
"additionalProperties": false
},
"description": "Operators within radius_miles of the input coordinate, ranked tier:desc then distance:asc. Empty array means no matches within radius."
},
"data_freshness": {
"type": "object",
"properties": {
"indexed_at": {
"type": "string",
"description": "ISO timestamp of the freshest row in the batch"
},
"source": {
"type": "string",
"description": "Origin tag: typesense:operators or typesense:operators:empty"
}
},
"required": [
"indexed_at",
"source"
],
"additionalProperties": false,
"description": "TOOL-10 freshness stamp"
},
"_meta": {
"type": "object",
"properties": {
"terms": {
"type": "string",
"format": "uri"
},
"attribution": {
"type": "string"
}
},
"required": [
"terms",
"attribution"
],
"additionalProperties": false,
"description": "TOOL-11 ToS and attribution block"
}
},
"required": [
"operators",
"data_freshness",
"_meta"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡valet_request_quote(contact_name, contact_email, contact_phone, city_slug, city_other, ...)
Submit a valet parking quote request to the operators serving a US city. Use this when a person has asked you to arrange valet and has given their name, email, phone, city, service type and event date. The request is only sent after they confirm by email.
Input Schema
{
"type": "object",
"properties": {
"contact_name": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "The requester's full name"
},
"contact_email": {
"type": "string",
"format": "email",
"maxLength": 254,
"description": "Email address to send the one-tap confirmation link to"
},
"contact_phone": {
"type": "string",
"minLength": 7,
"maxLength": 40,
"description": "Phone number the operator can call"
},
"city_slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"description": "Canonical kebab-case city slug from valet_search_cities, e.g. 'austin'. Omit if using city_other."
},
"city_other": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Free-text city name when no directory slug is known. Omit if using city_slug."
},
"service": {
"type": "string",
"enum": [
"wedding-valet",
"corporate-event-valet",
"private-event-valet",
"funeral-valet",
"hotel-resort-valet",
"restaurant-valet",
"hospital-medical-valet",
"major-venue-valet",
"general-valet"
],
"description": "One of the 9 canonical valet service slugs"
},
"event_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Event date in YYYY-MM-DD format"
},
"guest_count": {
"type": "integer",
"minimum": 1,
"maximum": 10000,
"description": "Approximate guest count, if known"
},
"vehicle_count": {
"type": "integer",
"minimum": 1,
"maximum": 10000,
"description": "Approximate vehicle count, if known"
},
"notes": {
"type": "string",
"maxLength": 2000,
"description": "Free-text notes for the operator, e.g. venue name or timing details"
},
"operator_slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"description": "Send to this one operator only instead of the full fan-out for the city. Omit to notify every matched operator in the city."
}
},
"required": [
"contact_name",
"contact_email",
"contact_phone",
"service",
"event_date"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"reference": {
"type": "string",
"description": "Short human-readable reference for this quote request"
},
"status": {
"type": "string",
"const": "pending-confirmation",
"description": "Always pending-confirmation on success"
},
"next": {
"type": "string",
"description": "What the agent should tell the person to do next"
},
"_meta": {
"type": "object",
"properties": {
"terms": {
"type": "string",
"format": "uri"
},
"attribution": {
"type": "string"
}
},
"required": [
"terms",
"attribution"
],
"additionalProperties": false,
"description": "TOOL-11 ToS and attribution block"
}
},
"required": [
"reference",
"status",
"next",
"_meta"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence