valet-parking-directory
MCP server for valet parking: 789 US operators across 31,186 cities. 7 tools. No auth.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen valet_search_by_service_and_city
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"valet-parking-directory": {
"url": "https://api.getvaletparking.com/mcp"
}
}
}Puntos de conexión remotos
https://api.getvaletparking.com/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"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.
Esquema de entrada
{
"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#"
}Esquema de salida
{
"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.
Esquema de entrada
{
"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#"
}Esquema de salida
{
"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.
Esquema de entrada
{
"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#"
}Esquema de salida
{
"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.
Esquema de entrada
{
"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#"
}Esquema de salida
{
"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.
Esquema de entrada
{
"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#"
}Esquema de salida
{
"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.
Esquema de entrada
{
"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#"
}Esquema de salida
{
"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.
Esquema de entrada
{
"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#"
}Esquema de salida
{
"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#"
}Comunidad
Evidencia