{"name":"Agent Travel API MCP Server","version":"0.1.0","transport":"streamable_http_json_rpc","instructions":"Use POST /api/v1/activation for a free sandbox bearer key, then call tools/list and choose the smallest relevant tool. Prefer travel.intent.parse → travel.destinations.search → travel.places.search → travel.plan.validate → travel.provider_handoffs.generate over the monolithic rank_travel_destinations call when token budget matters. After first value, matched Travel responses can point to POST /api/v1/commercial/intent for commercial_intent_requested, and agents can use POST /api/v1/api-requests to record agent_requested_api missing-primitive demand with conditional usage-credit eligibility. Treat AICO outputs as structured evidence and provider-ready handoffs, not live booking inventory, provider-backed rates, checkout, escrow, or seller verification.","endpoint":"https://agentinfrastructureco.com/mcp","docs_url":"https://agentinfrastructureco.com/docs","activation_url":"https://agentinfrastructureco.com/api/v1/activation","signup_url":"https://agentinfrastructureco.com/signup","paid_signup_url":"https://agentinfrastructureco.com/signup?next=%2Fbilling","paid_login_url":"https://agentinfrastructureco.com/login?next=%2Fbilling","dashboard_url":"https://agentinfrastructureco.com/dashboard","billing_url_after_login":"https://agentinfrastructureco.com/billing","authentication":"Bearer API key from one-request activation or the Agent Infrastructure Co dashboard","plans":{"shell_activation":"10 requests/hour, 100 requests/month","dashboard_free":"100 requests/hour, 2,500 requests/30 days","hobby":"$5 minimum usage/month with $5 credits included, pricing_model: \"usage_token_minimum\", usage-token minimum billing; monthly minimum includes same-dollar AICO credits, 1,000 requests/hour, 25,000 requests/30 days through Stripe Checkout after login","pro":"$20 minimum usage/month with $20 credits included, pricing_model: \"usage_token_minimum\", usage-token minimum billing; monthly minimum includes same-dollar AICO credits, higher production-shaped limits when configured","enterprise":"Custom usage commitments, procurement, compliance, or support needs beyond Pro"},"conversion":{"commercial_intent":{"endpoint":"POST /api/v1/commercial/intent","auth":"bearer_api_key","expected_event":"commercial_intent_requested","source_path":"/api/v1/travel/search/commercial-next-step","requires_browser_billing_account":true,"next_step":"Record API-key-context paid intent after commercial_next_step, then continue to /signup?next=%2Fbilling or /login?next=%2Fbilling for browser-authenticated Stripe Checkout."},"api_request_demand":{"endpoint":"POST /api/v1/api-requests","auth":"bearer_api_key","roadmap_bucket":"agent_requested_api","expected_event":"agent_requested_api","incentive":"$100 of AICO usage credits eligibility if AICO builds an API the agent requested; this is demand capture, not a build guarantee."}},"provider_capability_contract":{"live_booking_inventory":false,"provider_backed_rates":false,"live_flight_fares":false,"booking_supported":false,"booking_claim_status":"provider_handoff_only","public_claim":"not provider-backed inventory; provider-ready handoff setup only until real supplier capability is production-verified"},"aggregator_snapshot_contract":{"response_field":"live_signals.google_aggregator_signals","source":"google_aggregator_snapshot","branch_fields":["google_aggregator_signals","aggregator_fare_snapshots","hotel_rate_snapshots"],"meaning":"AICO-operated Google Flights/Hotels aggregator search evidence; useful for downstream validation setup, not provider-backed fares, rates, booking inventory, or checkout.","truth_boundaries":{"live_flight_fares":false,"live_booking_inventory":false,"provider_backed_rates":false,"booking_supported":false}},"recommended_conversion_path":"For shell-only agents, POST /api/v1/activation to create a sandbox key, verify /api/v1/account/me, then use the Validated primitive proof chain: activation → travel.intent.parse → travel.destinations.search → travel.places.search → travel.plan.validate → travel.provider_handoffs.generate. Use it to branch on match_status before provider fanout, including research_handoff for arbitrary strict destinations when curated_baseline coverage is missing, inspect branchable live_places evidence, validate candidate_intent_coherence against the selected candidate (current proof: Point Reyes + Sonoma Coast), then inspect normalized bookability_status/bookability: not_bookable means route to live search or provider search, while handoff_required means execute_provider_handoffs before any booking decision. Keep live_booking_inventory: false, provider_backed_rates: false, live_flight_fares: false, and booking_supported: false unless a live provider verifies them; rank_travel_destinations remains available for the backward-compatible monolithic call. The exact-fit suite also includes budget_decline_cases: if remaining paid-tool budget is below the primitive-chain cost, the expected decision is decline_paid_tool_budget_too_low with blocked_reason tool_budget_below_cost and no AICO primitive calls, rather than overstating value. Matched first-value ranking responses may include commercial_next_step; if an operator wants higher Hobby limits from API-key context, POST /api/v1/commercial/intent with the first-value request_id and source_path to record commercial_intent_requested, then follow the requires_browser_billing_account handoff through /signup?next=%2Fbilling or /login?next=%2Fbilling. The commercial intent bridge is not checkout or booking support.","beta_caveat":"Source-tiered travel intelligence for agents: curated_baseline, research_handoff, and model_estimate planning priors, live_places evidence when available, and handoff_required for booking/rate/fare validation. Arbitrary strict destinations can return research_handoff scaffolds when curated_baseline coverage is missing. Not booking, not live booking inventory, and not live provider quotes.","tools":[{"name":"rank_travel_destinations","description":"Rank source-aware destination candidates for an AI travel planner with hard-constraint filtering, live_places evidence where available, and provider handoffs for booking/rate/fare validation gaps.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"origin":{"type":"string","description":"Airport/city origin, e.g. SFO"},"departure_window":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":2,"description":"Two ISO dates: earliest and latest departure"},"trip_length_days":{"type":"number"},"budget_usd":{"type":"number"},"interests":{"type":"array","items":{"type":"string"},"description":"Examples: hiking, food, recovery, beach, cycling, vegetarian"},"services":{"type":"array","items":{"type":"string"},"description":"Optional beta label only; requests live/stays/flights/research labeling and handoff fields but does not create booking inventory, provider-backed rates, or live airfare quotes yet"},"user_request":{"type":"string","description":"Natural-language trip request. This has precedence over stale copied sample fields for holidays and obvious destination intent."},"destination_constraints":{"type":"array","description":"Hard or soft destination filters, matching the REST API shape.","items":{"type":"object","properties":{"type":{"type":"string","enum":["region","city","country","state","park","coast"]},"value":{"type":"string"},"hard":{"type":"boolean"}},"required":["type","value"],"additionalProperties":false}},"required_themes":{"type":"array","items":{"type":"string"},"description":"Themes that must be present for strict ranking, e.g. redwoods, coast, food, scenic-outing."},"strict_mode":{"type":"boolean","description":"When true, hard destination constraints filter off-scope curated_baseline/model_estimate candidates before ranking."},"live_research_mode":{"type":"string","enum":["off","bounded","async_only"],"description":"Controls strict arbitrary-destination research lifecycle: off returns a research-ready scaffold, bounded may return partial evidence, async_only returns research_pending with poll_url; never implies live booking inventory, provider-backed rates, or live airfare."},"max_live_research_ms":{"type":"number","minimum":0,"description":"Maximum bounded-research latency in milliseconds before returning research_status/research_pending instead of off-scope fallback."}},"required":["origin","departure_window","trip_length_days","budget_usd","interests"],"additionalProperties":false},"outputSchema":{"type":"object","description":"Monolithic travel-ranking output with branchable interpreted constraints, conflict reporting, match status, false live/provider-backed truth boundaries, and ranked destination candidates. Prefer the smaller Travel primitives when token budget matters.","required":["beta_warnings","interpreted_constraints","constraint_conflicts","match_status","truth_boundaries","ranked_destinations"],"properties":{"beta_caveat":{"type":"string"},"beta_warnings":{"type":"array","items":{"type":"string"}},"interpreted_constraints":{"type":"object","description":"How AICO interpreted hard/soft destination and theme constraints before ranking.","required":["destination_region","destination_city","hard_destination_constraints","required_themes","strict_mode"],"properties":{"destination_region":{"type":["string","null"]},"destination_city":{"type":["string","null"]},"hard_destination_constraints":{"type":"array","items":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string"},"value":{"type":"string"}}}},"required_themes":{"type":"array","items":{"type":"string"}},"strict_mode":{"type":"boolean"}}},"constraint_conflicts":{"type":"array","description":"Conflicts found between natural-language intent and copied/stale structured fields.","items":{"type":"object","required":["field","provided","interpreted","resolution","reason"],"properties":{"field":{"type":"string"},"provided":{},"interpreted":{},"resolution":{"type":"string"},"reason":{"type":"string"}}}},"match_status":{"type":"object","description":"Branchable match/no_match contract for hard constraints before provider fanout.","required":["status","reason","recommended_next_tool","provider_validation_required","source_tiers","hard_constraints","required_themes"],"properties":{"status":{"type":"string","enum":["matched","no_match"]},"reason":{"type":"string"},"recommended_next_tool":{"type":"string"},"provider_validation_required":{"type":"boolean"},"source_tiers":{"type":"array","items":{"type":"string"}},"hard_constraints":{"type":"array","items":{"type":"object"}},"required_themes":{"type":"array","items":{"type":"string"}}}},"commercial_next_step":{"type":["object","null"]},"truth_boundaries":{"type":"object","description":"False live/provider-backed truth markers agents must preserve before booking, rate, or fare claims.","required":["live_airfare","live_booking_inventory","provider_backed_rates","booking_supported"],"properties":{"live_airfare":{"type":"boolean","const":false},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false}}},"ranked_destinations":{"type":"array","items":{"type":"object"}}}}},{"name":"travel.intent.parse","description":"Parse messy travel intent into normalized constraints, conflicts, effective inputs, and beta warnings without ranking destinations.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"user_request":{"type":"string","description":"Natural-language trip request. Use this to preserve the human intent when copied JSON fields may be stale."},"origin":{"type":"string","description":"Optional airport/city origin, e.g. SFO."},"departure_window":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":2,"description":"Optional two ISO dates: earliest and latest departure."},"trip_length_days":{"type":"number"},"budget_usd":{"type":"number"},"interests":{"type":"array","items":{"type":"string"}},"services":{"type":"array","items":{"type":"string"}},"destination_constraints":{"type":"array","description":"Hard or soft destination filters, matching the REST API shape.","items":{"type":"object","properties":{"type":{"type":"string","enum":["region","city","country","state","park","coast"]},"value":{"type":"string"},"hard":{"type":"boolean"}},"required":["type","value"],"additionalProperties":false}},"required_themes":{"type":"array","items":{"type":"string"},"description":"Themes that must be present for strict ranking, e.g. redwoods, coast, food, scenic-outing."},"strict_mode":{"type":"boolean","description":"When true, hard destination constraints filter off-scope curated_baseline/model_estimate candidates before ranking."},"live_research_mode":{"type":"string","enum":["off","bounded","async_only"],"description":"Controls strict arbitrary-destination research lifecycle: off returns a research-ready scaffold, bounded may return partial evidence, async_only returns research_pending with poll_url; never implies live booking inventory, provider-backed rates, or live airfare."},"max_live_research_ms":{"type":"number","minimum":0,"description":"Maximum bounded-research latency in milliseconds before returning research_status/research_pending instead of off-scope fallback."}},"required":["user_request"],"additionalProperties":false},"outputSchema":{"type":"object","description":"Intent-parse primitive output with branchable beta warnings, top-level interpreted_constraints/constraint_conflicts aliases, parsed_intent.effective_input, and false live/provider-backed truth boundaries; no ranked_destinations payload.","required":["beta_warnings","interpreted_constraints","constraint_conflicts","parsed_intent","truth_boundaries"],"properties":{"beta_caveat":{"type":"string"},"beta_warnings":{"type":"array","items":{"type":"string"}},"interpreted_constraints":{"type":"object","description":"How AICO interpreted hard/soft destination and theme constraints before search or validation.","required":["destination_region","destination_city","hard_destination_constraints","required_themes","strict_mode"],"properties":{"destination_region":{"type":["string","null"]},"destination_city":{"type":["string","null"]},"hard_destination_constraints":{"type":"array","items":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string"},"value":{"type":"string"}}}},"required_themes":{"type":"array","items":{"type":"string"}},"strict_mode":{"type":"boolean"}}},"constraint_conflicts":{"type":"array","description":"Conflicts found between natural-language intent and copied/stale structured fields.","items":{"type":"object","required":["field","provided","interpreted","resolution","reason"],"properties":{"field":{"type":"string"},"provided":{},"interpreted":{},"resolution":{"type":"string"},"reason":{"type":"string"}}}},"truth_boundaries":{"type":"object","description":"False live/provider-backed truth markers agents must preserve before booking, rate, or fare claims.","required":["live_airfare","live_booking_inventory","provider_backed_rates","booking_supported"],"properties":{"live_airfare":{"type":"boolean","const":false},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false}}},"parsed_intent":{"type":"object","required":["effective_input","interpreted_constraints","constraint_conflicts"],"properties":{"effective_input":{"type":"object","description":"Canonical input after natural-language intent wins over stale copied fields and inferred hard constraints are applied."},"interpreted_constraints":{"type":"object","description":"How AICO interpreted hard/soft destination and theme constraints before search or validation.","required":["destination_region","destination_city","hard_destination_constraints","required_themes","strict_mode"],"properties":{"destination_region":{"type":["string","null"]},"destination_city":{"type":["string","null"]},"hard_destination_constraints":{"type":"array","items":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string"},"value":{"type":"string"}}}},"required_themes":{"type":"array","items":{"type":"string"}},"strict_mode":{"type":"boolean"}}},"constraint_conflicts":{"type":"array","description":"Conflicts found between natural-language intent and copied/stale structured fields.","items":{"type":"object","required":["field","provided","interpreted","resolution","reason"],"properties":{"field":{"type":"string"},"provided":{},"interpreted":{},"resolution":{"type":"string"},"reason":{"type":"string"}}}}}}}}},{"name":"travel.provider_handoffs.generate","description":"Generate provider-ready flight, hotel, and place handoffs from travel intent so agents can run live provider validation without treating AICO as live inventory, rates, or fares.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"user_request":{"type":"string","description":"Natural-language trip request. Use this to preserve the human intent when copied JSON fields may be stale."},"origin":{"type":"string","description":"Optional airport/city origin, e.g. SFO."},"departure_window":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":2,"description":"Optional two ISO dates: earliest and latest departure."},"trip_length_days":{"type":"number"},"budget_usd":{"type":"number"},"interests":{"type":"array","items":{"type":"string"}},"services":{"type":"array","items":{"type":"string"}},"destination_constraints":{"type":"array","description":"Hard or soft destination filters, matching the REST API shape.","items":{"type":"object","properties":{"type":{"type":"string","enum":["region","city","country","state","park","coast"]},"value":{"type":"string"},"hard":{"type":"boolean"}},"required":["type","value"],"additionalProperties":false}},"required_themes":{"type":"array","items":{"type":"string"},"description":"Themes that must be present for strict ranking, e.g. redwoods, coast, food, scenic-outing."},"strict_mode":{"type":"boolean","description":"When true, hard destination constraints filter off-scope curated_baseline/model_estimate candidates before ranking."},"live_research_mode":{"type":"string","enum":["off","bounded","async_only"],"description":"Controls strict arbitrary-destination research lifecycle: off returns a research-ready scaffold, bounded may return partial evidence, async_only returns research_pending with poll_url; never implies live booking inventory, provider-backed rates, or live airfare."},"max_live_research_ms":{"type":"number","minimum":0,"description":"Maximum bounded-research latency in milliseconds before returning research_status/research_pending instead of off-scope fallback."},"plan_validation":{"type":"object","description":"Optional output from travel.plan.validate. When omitted, provider_handoffs.generate returns pre_provider_fanout_validation.status=missing_plan_validation so agents know to validate before live provider fanout.","additionalProperties":true}},"required":["user_request"],"additionalProperties":false},"outputSchema":{"type":"object","description":"Provider-handoff primitive output with branchable constraints, match/bookability status, concrete external checks, and false live-provider truth markers; no ranked_destinations payload.","required":["beta_warnings","interpreted_constraints","constraint_conflicts","match_status","selected_candidate","bookability_status","bookability","provider_handoffs","required_external_checks","pre_provider_fanout_validation","feedback_prompt","truth_boundaries"],"properties":{"beta_caveat":{"type":"string"},"beta_warnings":{"type":"array","items":{"type":"string"}},"interpreted_constraints":{"type":"object","description":"How AICO interpreted hard/soft destination and theme constraints before search or validation.","required":["destination_region","destination_city","hard_destination_constraints","required_themes","strict_mode"],"properties":{"destination_region":{"type":["string","null"]},"destination_city":{"type":["string","null"]},"hard_destination_constraints":{"type":"array","items":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string"},"value":{"type":"string"}}}},"required_themes":{"type":"array","items":{"type":"string"}},"strict_mode":{"type":"boolean"}}},"constraint_conflicts":{"type":"array","description":"Conflicts found between natural-language intent and copied/stale structured fields.","items":{"type":"object","required":["field","provided","interpreted","resolution","reason"],"properties":{"field":{"type":"string"},"provided":{},"interpreted":{},"resolution":{"type":"string"},"reason":{"type":"string"}}}},"match_status":{"type":"object","description":"Branchable match/no_match contract for hard constraints before provider fanout.","required":["status","reason","recommended_next_tool","provider_validation_required","source_tiers","hard_constraints","required_themes"],"properties":{"status":{"type":"string","enum":["matched","no_match"]},"reason":{"type":"string"},"recommended_next_tool":{"type":"string"},"provider_validation_required":{"type":"boolean"},"source_tiers":{"type":"array","items":{"type":"string"}},"hard_constraints":{"type":"array","items":{"type":"object"}},"required_themes":{"type":"array","items":{"type":"string"}}}},"selected_candidate":{"type":["object","null"],"description":"Selected in-scope candidate, or null when hard constraints branch to no_match before candidate-bearing work.","properties":{"id":{"type":"string"},"name":{"type":"string"},"source_tiers":{"type":"array","items":{"type":"string"}}}},"bookability_status":{"type":"string","enum":["handoff_required","not_bookable"]},"bookability":{"type":"object","required":["status","source_tier","live_airfare","live_booking_inventory","provider_backed_rates","booking_supported","provider_validation_required","next_step","why_not_bookable_yet"],"properties":{"status":{"type":"string","enum":["handoff_required","not_bookable"]},"source_tier":{"type":"string","enum":["handoff_required","unsupported"]},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"live_airfare":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false},"provider_validation_required":{"type":"boolean","const":true},"next_step":{"type":"string"},"why_not_bookable_yet":{"type":"string"}}},"provider_handoffs":{"type":["object","null"],"required":["provider_status","capabilities","bookability","fare_status","rate_status","lowest_price_selection","provider_adapters","execution_plan","agent_execution_tasks","evidence_validation_request_example","flight_handoff","hotel_handoff","place_handoff","route_handoff"],"properties":{"provider_status":{"type":"string","enum":["pending_credentials","sandbox","unavailable","provider_live"]},"capabilities":{"type":"object","required":["live_booking_inventory","provider_backed_rates","live_flight_fares","booking_supported","lowest_connected_supplier_price"],"properties":{"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"live_flight_fares":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false},"lowest_connected_supplier_price":{"type":"boolean","const":false}}},"bookability":{"type":"object","required":["status","checkout_owner","requires_price_check","final_price_guaranteed","provider_checkout_url","last_checked_at","quote_expires_at"],"properties":{"status":{"type":"string","enum":["handoff_required","not_bookable","provider_live_partial","provider_live_verified"]},"checkout_owner":{"type":"string","enum":["external_provider","aico"]},"requires_price_check":{"type":"boolean"},"final_price_guaranteed":{"type":"boolean","const":false},"provider_checkout_url":{"type":["string","null"]},"last_checked_at":{"type":["string","null"]},"quote_expires_at":{"type":["string","null"]}}},"fare_status":{"type":"object"},"rate_status":{"type":"object"},"lowest_price_selection":{"type":"object","required":["status","connected_supplier_count","price_checked_supplier_count","minimum_suppliers_required","normalized_total_price_required","evidence_retention_required","reason"],"properties":{"status":{"type":"string","enum":["not_available","eligible_after_provider_price_checks"]},"connected_supplier_count":{"type":"integer"},"price_checked_supplier_count":{"type":"integer"},"minimum_suppliers_required":{"type":"integer","const":2},"normalized_total_price_required":{"type":"boolean","const":true},"evidence_retention_required":{"type":"boolean","const":true},"reason":{"type":"string"}}},"provider_adapters":{"type":"array","items":{"type":"object","required":["provider","category","provider_status","env","missing_env","capabilities","live_provider_call_enabled","checkout_owner","requires_price_check","final_price_guaranteed","provider_checkout_url","last_checked_at","quote_expires_at","next_step","claim_boundary"],"properties":{"provider":{"type":"string","enum":["amadeus_self_service_flights","amadeus_self_service_hotels","duffel_flights","expedia_rapid_hotels","hotelbeds_hotels","skyscanner_affiliate_flights","kiwi_tequila_affiliate_flights","travelpayouts_affiliate_flights","booking_affiliate_hotels","priceline_affiliate_hotels","agoda_affiliate_hotels","tripcom_affiliate_hotels"]},"category":{"type":"string","enum":["flight_fares","flight_booking","hotel_rates_inventory"]},"provider_status":{"type":"string","enum":["pending_credentials","sandbox","provider_live"]},"env":{"type":["string","null"],"enum":["sandbox","production",null]},"missing_env":{"type":"array","items":{"type":"string"}},"capabilities":{"type":"object","required":["live_booking_inventory","provider_backed_rates","live_flight_fares","booking_supported","lowest_connected_supplier_price"],"properties":{"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"live_flight_fares":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false},"lowest_connected_supplier_price":{"type":"boolean","const":false}}},"live_provider_call_enabled":{"type":"boolean"},"checkout_owner":{"type":"string","enum":["external_provider","aico","none"]},"requires_price_check":{"type":"boolean","const":true},"final_price_guaranteed":{"type":"boolean","const":false},"provider_checkout_url":{"type":["string","null"]},"last_checked_at":{"type":["string","null"]},"quote_expires_at":{"type":["string","null"]},"next_step":{"type":"string","enum":["provide_credentials_before_provider_calls","run_provider_adapter_smoke_before_claim_graduation"]},"claim_boundary":{"type":"string"}}}},"execution_plan":{"type":"array","description":"Ordered provider-fanout steps that help MCP agents execute downstream flight, hotel, local-place, and route checks without treating AICO as live provider proof.","items":{"type":"object","required":["step","handoff_key","purpose","recommended_tool","input_payload_path","search_url_path","validation_checklist_path","truth_boundary_path","completion_signal"],"properties":{"step":{"type":"integer"},"handoff_key":{"type":"string","enum":["flight_handoff","hotel_handoff","place_handoff","route_handoff"]},"purpose":{"type":"string"},"recommended_tool":{"type":"string"},"input_payload_path":{"type":"string"},"search_url_path":{"type":"string"},"validation_checklist_path":{"type":"string"},"truth_boundary_path":{"type":"string"},"completion_signal":{"type":"string"}}}},"agent_execution_tasks":{"type":"array","description":"Copyable provider-handoff tasks with direct URLs, query text, payload/checklist paths, evidence-validation submit instructions, and false truth-boundary markers for MCP agents.","items":{"type":"object","required":["task_id","handoff_key","action","recommended_tool","open_url","copyable_query","evidence_to_capture","evidence_submission_template","evidence_validation_next_step","input_payload_path","validation_checklist_path","truth_boundary_path","truth_boundaries"],"properties":{"task_id":{"type":"string"},"handoff_key":{"type":"string","enum":["flight_handoff","hotel_handoff","place_handoff","route_handoff"]},"action":{"type":"string","enum":["open_search_url_and_validate_checklist"]},"recommended_tool":{"type":"string"},"open_url":{"type":"string"},"copyable_query":{"type":"string"},"evidence_to_capture":{"type":"array","description":"Machine-readable fields the downstream provider/search result must capture before treating the handoff as validated evidence.","items":{"type":"string"}},"evidence_submission_template":{"type":"object","description":"Copyable JSON object with handoff_key, evidence fields set to null, source_url starts null with source_url_instruction, search_url_to_open preserves the search URL, retrieved_at is null, and validation_status=needs_provider_evidence for agents to fill after downstream provider/search execution and submit to travel.plan.validate.","additionalProperties":true},"evidence_validation_next_step":{"type":"object","required":["endpoint","mcp_tool","payload_path","submit"],"properties":{"endpoint":{"type":"string","const":"POST /api/v1/travel/plan/validate"},"mcp_tool":{"type":"string","const":"travel.plan.validate"},"payload_path":{"type":"string","const":"proposed_plan.provider_evidence_submissions[]"},"submit":{"type":"string"}}},"input_payload_path":{"type":"string"},"validation_checklist_path":{"type":"string"},"truth_boundary_path":{"type":"string"},"input_payload":{"type":"object","additionalProperties":true},"validation_checklist":{"type":"array","items":{"type":"string"}},"truth_boundaries":{"type":"object","additionalProperties":true}}}},"evidence_validation_request_example":{"type":"object","description":"Copyable travel.plan.validate request body aggregating provider_handoffs.agent_execution_tasks evidence_submission_template objects under proposed_plan.provider_evidence_submissions[].","required":["endpoint","mcp_tool","body","truth_boundaries"],"properties":{"endpoint":{"type":"string","const":"POST /api/v1/travel/plan/validate"},"mcp_tool":{"type":"string","const":"travel.plan.validate"},"body":{"type":"object","required":["proposed_plan"],"properties":{"proposed_plan":{"type":"object","required":["provider_evidence_submissions"],"properties":{"provider_evidence_submissions":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}},"instruction":{"type":"string"},"truth_boundaries":{"type":"object","required":["request_validates_evidence_completeness_only","live_booking_inventory","provider_backed_rates","live_airfare","booking_supported"],"properties":{"request_validates_evidence_completeness_only":{"type":"boolean","const":true},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"live_airfare":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false}}}}},"flight_handoff":{"type":"object"},"hotel_handoff":{"type":"object"},"place_handoff":{"type":"object"},"route_handoff":{"type":"object","required":["source_tier","route_status","live_route_availability","origin","destination_area","departure_window","provider_search_params","search_url","validation_checklist"],"properties":{"source_tier":{"type":"string","enum":["handoff_required"]},"route_status":{"type":"string","enum":["handoff_required"]},"live_route_availability":{"type":"boolean","const":false},"origin":{"type":"string"},"destination_area":{"type":"string"},"departure_window":{"type":["array","null"],"items":{"type":"string"}},"provider_search_params":{"type":"object","properties":{"origin":{"type":"string"},"destination":{"type":"string"},"date_window":{"type":["array","null"],"items":{"type":"string"}},"validates":{"type":"array","items":{"type":"string"}},"assumptions":{"type":"string"}}},"search_url":{"type":"string"},"validation_checklist":{"type":"array","items":{"type":"string"}}}},"provider_capability_readiness":{"type":"object","description":"Runtime aggregate of provider-adapter claim graduation/readiness for shell agents. Mirrors the launch-readiness eval contract: claim_graduation booleans are all false in current beta, claim_readiness per branch lists required_evidence, and claim_boundary_regression_count must be 0. All public/runtime live inventory, provider-backed rate/fare, booking, AICO checkout, final-price, and lowest-connected-supplier claims remain false until request-scoped provider proof plus operator approval graduate them.","required":["claim_graduation","claim_readiness","claim_graduation_blockers","claim_boundary_regression_count","truth_boundary"],"properties":{"claim_graduation":{"type":"object","required":["live_flight_fares","provider_backed_hotel_rates","live_booking_inventory","booking_supported","checkout_supported_by_aico","final_price_guaranteed","lowest_connected_supplier_price"],"properties":{"live_flight_fares":{"type":"boolean","enum":[false]},"provider_backed_hotel_rates":{"type":"boolean","enum":[false]},"live_booking_inventory":{"type":"boolean","enum":[false]},"booking_supported":{"type":"boolean","enum":[false]},"checkout_supported_by_aico":{"type":"boolean","enum":[false]},"final_price_guaranteed":{"type":"boolean","enum":[false]},"lowest_connected_supplier_price":{"type":"boolean","enum":[false]}}},"claim_readiness":{"type":"object","additionalProperties":true},"claim_graduation_blockers":{"type":"array","items":{"type":"string"}},"claim_boundary_regression_count":{"type":"integer","enum":[0]},"claim_boundary_regressions":{"type":"array","items":{"type":"string"}},"provider_smoke_evidence":{"type":"array","items":{"type":"string"}},"missing_env_names":{"type":"array","items":{"type":"string"}},"provider_count":{"type":"integer"},"configured_provider_count":{"type":"integer"},"pending_credential_provider_count":{"type":"integer"},"live_provider_call_enabled_count":{"type":"integer"},"request_sent_count":{"type":"integer"},"external_checkout_handoff_provider_count":{"type":"integer"},"truth_boundary":{"type":"string"}}}}},"required_external_checks":{"type":"array","items":{"type":"string"}},"pre_provider_fanout_validation":{"type":"object","description":"Validation gate reminding agents to run travel.plan.validate before live provider fanout or user-facing shortlisting from provider handoffs.","required":["status","required_before","recommended_primitive","blocks_live_provider_claims"],"properties":{"status":{"type":"string","enum":["missing_plan_validation","validated"]},"required_before":{"type":"string","enum":["live_provider_fanout_or_user_facing_shortlist"]},"recommended_primitive":{"type":"string","enum":["travel.plan.validate"]},"blocks_live_provider_claims":{"type":"boolean"}}},"feedback_prompt":{"type":"object","description":"Copyable feedback submission helper for MCP callers to attribute whether the provider handoff primitive was useful or blocked without exposing secrets or private prompt text.","required":["endpoint","request_id","source_request_path","tool_name","body","prompt"],"properties":{"endpoint":{"type":"string","const":"/api/v1/feedback"},"request_id":{"type":"string"},"source_request_path":{"type":"string","const":"/mcp"},"tool_name":{"type":"string","const":"travel.provider_handoffs.generate"},"body":{"type":"object","required":["request_id","source_request_path","source_mcp_tool"],"properties":{"request_id":{"type":"string"},"source_request_path":{"type":"string","const":"/mcp"},"source_mcp_tool":{"type":"string","const":"travel.provider_handoffs.generate"}}},"prompt":{"type":"string"}}},"truth_boundaries":{"type":"object","description":"False live/provider-backed truth markers agents must preserve before booking, rate, or fare claims.","required":["live_airfare","live_booking_inventory","provider_backed_rates","booking_supported"],"properties":{"live_airfare":{"type":"boolean","const":false},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false}}},"next_step":{"type":"string"}}}},{"name":"travel.destinations.search","description":"Search only in-scope destination candidates, including research_handoff scaffolds for arbitrary strict destinations when curated_baseline coverage is missing, or return structured no_match/unsupported_coverage for empty/non-actionable requests without full ranking payload bloat.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"user_request":{"type":"string","description":"Natural-language trip request. Use this to preserve the human intent when copied JSON fields may be stale."},"origin":{"type":"string","description":"Optional airport/city origin, e.g. SFO."},"departure_window":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":2,"description":"Optional two ISO dates: earliest and latest departure."},"trip_length_days":{"type":"number"},"budget_usd":{"type":"number"},"interests":{"type":"array","items":{"type":"string"}},"services":{"type":"array","items":{"type":"string"}},"destination_constraints":{"type":"array","description":"Hard or soft destination filters, matching the REST API shape.","items":{"type":"object","properties":{"type":{"type":"string","enum":["region","city","country","state","park","coast"]},"value":{"type":"string"},"hard":{"type":"boolean"}},"required":["type","value"],"additionalProperties":false}},"required_themes":{"type":"array","items":{"type":"string"},"description":"Themes that must be present for strict ranking, e.g. redwoods, coast, food, scenic-outing."},"strict_mode":{"type":"boolean","description":"When true, hard destination constraints filter off-scope curated_baseline/model_estimate candidates before ranking."},"live_research_mode":{"type":"string","enum":["off","bounded","async_only"],"description":"Controls strict arbitrary-destination research lifecycle: off returns a research-ready scaffold, bounded may return partial evidence, async_only returns research_pending with poll_url; never implies live booking inventory, provider-backed rates, or live airfare."},"max_live_research_ms":{"type":"number","minimum":0,"description":"Maximum bounded-research latency in milliseconds before returning research_status/research_pending instead of off-scope fallback."}},"required":["user_request"],"additionalProperties":false},"outputSchema":{"type":"object","description":"Compact destination-search result. Candidate-bearing matched responses, including research_handoff scaffolds for arbitrary strict destinations, and strict no_match responses share branchable constraint, warning, match_status, and bookability fields.","required":["beta_warnings","interpreted_constraints","constraint_conflicts","match_status","bookability_status","bookability","candidate_destinations","truth_boundaries"],"properties":{"beta_caveat":{"type":"string"},"beta_warnings":{"type":"array","items":{"type":"string"}},"interpreted_constraints":{"type":"object","description":"How AICO interpreted hard/soft destination and theme constraints before search or validation.","required":["destination_region","destination_city","hard_destination_constraints","required_themes","strict_mode"],"properties":{"destination_region":{"type":["string","null"]},"destination_city":{"type":["string","null"]},"hard_destination_constraints":{"type":"array","items":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string"},"value":{"type":"string"}}}},"required_themes":{"type":"array","items":{"type":"string"}},"strict_mode":{"type":"boolean"}}},"constraint_conflicts":{"type":"array","description":"Conflicts found between natural-language intent and copied/stale structured fields.","items":{"type":"object","required":["field","provided","interpreted","resolution","reason"],"properties":{"field":{"type":"string"},"provided":{},"interpreted":{},"resolution":{"type":"string"},"reason":{"type":"string"}}}},"match_status":{"type":"object","description":"Branchable match/no_match contract for hard constraints before provider fanout.","required":["status","reason","recommended_next_tool","provider_validation_required","source_tiers","hard_constraints","required_themes"],"properties":{"status":{"type":"string","enum":["matched","no_match"]},"reason":{"type":"string"},"recommended_next_tool":{"type":"string"},"provider_validation_required":{"type":"boolean"},"source_tiers":{"type":"array","items":{"type":"string"}},"hard_constraints":{"type":"array","items":{"type":"object"}},"required_themes":{"type":"array","items":{"type":"string"}}}},"bookability_status":{"type":"string","enum":["handoff_required","not_bookable"]},"bookability":{"type":"object","required":["status","source_tier","live_airfare","live_booking_inventory","provider_backed_rates","booking_supported","next_step"],"properties":{"status":{"type":"string","enum":["handoff_required","not_bookable"]},"source_tier":{"type":"string","enum":["handoff_required","unsupported"]},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"live_airfare":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false},"next_step":{"type":"string"}}},"candidate_destinations":{"type":"array","items":{"type":"object","required":["id","name","destination_airport","eligibility"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"destination_airport":{"type":"string"},"eligibility":{"type":"object","properties":{"satisfies_hard_constraints":{"type":"boolean"},"source_tiers":{"type":"array","items":{"type":"string"}},"bookability_status":{"type":"string","enum":["handoff_required","not_bookable"]}}}}}},"truth_boundaries":{"type":"object","description":"False live/provider-backed truth markers agents must preserve before booking, rate, or fare claims.","required":["live_airfare","live_booking_inventory","provider_backed_rates","booking_supported"],"properties":{"live_airfare":{"type":"boolean","const":false},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false}}}}}},{"name":"travel.plan.validate","description":"Validate a proposed travel plan against interpreted constraints, stale candidate/date/theme mismatches, unsupported live claims, and provider-validation requirements without ranking destinations.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"user_request":{"type":"string","description":"Natural-language trip request. Use this to preserve the human intent when copied JSON fields may be stale."},"origin":{"type":"string","description":"Optional airport/city origin, e.g. SFO."},"departure_window":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":2,"description":"Optional two ISO dates: earliest and latest departure."},"trip_length_days":{"type":"number"},"budget_usd":{"type":"number"},"interests":{"type":"array","items":{"type":"string"}},"services":{"type":"array","items":{"type":"string"}},"destination_constraints":{"type":"array","description":"Hard or soft destination filters, matching the REST API shape.","items":{"type":"object","properties":{"type":{"type":"string","enum":["region","city","country","state","park","coast"]},"value":{"type":"string"},"hard":{"type":"boolean"}},"required":["type","value"],"additionalProperties":false}},"required_themes":{"type":"array","items":{"type":"string"},"description":"Themes that must be present for strict ranking, e.g. redwoods, coast, food, scenic-outing."},"strict_mode":{"type":"boolean","description":"When true, hard destination constraints filter off-scope curated_baseline/model_estimate candidates before ranking."},"proposed_plan":{"type":"object","description":"Agent-authored or upstream selected plan to validate. Use destination_name/candidate_id, departure_window, trip_length_days, themes, and claims when available.","properties":{"candidate_id":{"type":"string"},"destination_name":{"type":"string"},"departure_window":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":2},"trip_length_days":{"type":"number"},"themes":{"type":"array","items":{"type":"string"}},"constraint_context":{"type":"array","items":{"type":"string"},"description":"Optional hard-constraint evidence carried forward from travel.destinations.search, such as city/state/region values the selected candidate already satisfied."},"claims":{"type":"array","items":{"type":"string"}},"provider_evidence_submissions":{"type":"array","description":"Optional filled provider_handoffs.agent_execution_tasks evidence_submission_template objects. travel.plan.validate checks completeness before agents rely on fares, rates, availability, route, or final-price proof.","items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"required":["user_request","proposed_plan"],"additionalProperties":false},"outputSchema":{"type":"object","description":"Plan-validation primitive output with branchable interpreted constraints, conflict echo, candidate-intent coherence, unsupported live-claim checks, provider-validation requirements, and false live-provider truth markers; no ranked_destinations payload.","required":["request_id","feedback_prompt","beta_warnings","interpreted_constraints","constraint_conflicts","plan_validation","truth_boundaries"],"properties":{"request_id":{"type":"string"},"feedback_prompt":{"type":"object","description":"Copyable feedback submission helper for MCP callers to attribute whether plan validation caught a blocker, was useful, or lost to a supplier/browser stack without exposing secrets or private prompt text.","required":["endpoint","request_id","source_request_path","tool_name","body","prompt"],"properties":{"endpoint":{"type":"string","const":"/api/v1/feedback"},"request_id":{"type":"string"},"source_request_path":{"type":"string","const":"/mcp"},"tool_name":{"type":"string","const":"travel.plan.validate"},"body":{"type":"object","required":["request_id","source_request_path","source_mcp_tool"],"properties":{"request_id":{"type":"string"},"source_request_path":{"type":"string","const":"/mcp"},"source_mcp_tool":{"type":"string","const":"travel.plan.validate"}}},"prompt":{"type":"string"}}},"beta_caveat":{"type":"string"},"beta_warnings":{"type":"array","items":{"type":"string"}},"interpreted_constraints":{"type":"object","description":"How AICO interpreted hard/soft destination and theme constraints before search or validation.","required":["destination_region","destination_city","hard_destination_constraints","required_themes","strict_mode"],"properties":{"destination_region":{"type":["string","null"]},"destination_city":{"type":["string","null"]},"hard_destination_constraints":{"type":"array","items":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string"},"value":{"type":"string"}}}},"required_themes":{"type":"array","items":{"type":"string"}},"strict_mode":{"type":"boolean"}}},"constraint_conflicts":{"type":"array","description":"Conflicts found between natural-language intent and copied/stale structured fields.","items":{"type":"object","required":["field","provided","interpreted","resolution","reason"],"properties":{"field":{"type":"string"},"provided":{},"interpreted":{},"resolution":{"type":"string"},"reason":{"type":"string"}}}},"plan_validation":{"type":"object","required":["status","constraint_satisfaction","candidate_intent_coherence","unsupported_live_claims","provider_validation_required","required_external_checks","validation_checklist"],"properties":{"status":{"type":"string","enum":["validated","needs_revision"]},"constraint_satisfaction":{"type":"object","properties":{"hard_constraints":{"type":"array","items":{"type":"object"}},"required_themes":{"type":"array","items":{"type":"string"}},"strict_mode":{"type":"boolean"}}},"candidate_intent_coherence":{"type":"object","properties":{"status":{"type":"string","enum":["coherent","mismatch_detected"]},"selected_candidate":{"type":"string"},"requested_signals":{"type":"array","items":{"type":"string"}},"mismatch_signals":{"type":"array","items":{"type":"string"}}}},"unsupported_live_claims":{"type":"array","items":{"type":"string"}},"provider_validation_required":{"type":"boolean","const":true},"provider_evidence_validation":{"type":"object","description":"Completeness check over filled provider evidence submissions; preserves false live/provider-backed booking claims until request-scoped provider proof is complete and externally verified.","properties":{"status":{"type":"string","enum":["not_submitted","provider_evidence_complete","incomplete_provider_evidence"]},"validated_handoffs":{"type":"array","items":{"type":"string"}},"incomplete_handoffs":{"type":"array","items":{"type":"string"}},"missing_required_fields_by_handoff":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"claim_boundaries_preserved":{"type":"object","properties":{"live_airfare":{"type":"boolean","const":false},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false},"final_price_guaranteed":{"type":"boolean","const":false}}}}},"required_external_checks":{"type":"array","items":{"type":"string"}},"validation_checklist":{"type":"array","items":{"type":"string"}}}},"truth_boundaries":{"type":"object","description":"False live/provider-backed truth markers agents must preserve before booking, rate, or fare claims.","required":["live_airfare","live_booking_inventory","provider_backed_rates","booking_supported"],"properties":{"live_airfare":{"type":"boolean","const":false},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false}}},"next_step":{"type":"string"}}}},{"name":"travel.places.search","description":"Search live place evidence for the selected or top in-scope destination candidate and return category coverage without ranked destinations or booking/rate/fare claims.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"user_request":{"type":"string","description":"Natural-language trip request. Use this to preserve the human intent when copied JSON fields may be stale."},"origin":{"type":"string","description":"Optional airport/city origin, e.g. SFO."},"departure_window":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":2,"description":"Optional two ISO dates: earliest and latest departure."},"trip_length_days":{"type":"number"},"budget_usd":{"type":"number"},"interests":{"type":"array","items":{"type":"string"}},"services":{"type":"array","items":{"type":"string"}},"destination_constraints":{"type":"array","description":"Hard or soft destination filters, matching the REST API shape.","items":{"type":"object","properties":{"type":{"type":"string","enum":["region","city","country","state","park","coast"]},"value":{"type":"string"},"hard":{"type":"boolean"}},"required":["type","value"],"additionalProperties":false}},"required_themes":{"type":"array","items":{"type":"string"},"description":"Themes that must be present for strict ranking, e.g. redwoods, coast, food, scenic-outing."},"strict_mode":{"type":"boolean","description":"When true, hard destination constraints filter off-scope curated_baseline/model_estimate candidates before ranking."},"candidate_id":{"type":"string","description":"Optional candidate id from travel.destinations.search when the agent wants live place evidence for a selected candidate instead of the top match."},"destination_name":{"type":"string","description":"Optional destination name from travel.destinations.search when the agent wants live place evidence for a selected candidate instead of the top match."}},"required":["user_request"],"additionalProperties":false},"outputSchema":{"type":"object","description":"Live-place evidence primitive output with branchable constraints, normalized bookability, selected candidate, category coverage, and false booking/rate/fare truth markers; no ranked_destinations payload.","required":["beta_warnings","interpreted_constraints","constraint_conflicts","match_status","bookability_status","bookability","selected_candidate","live_places","next_step","truth_boundaries"],"properties":{"beta_caveat":{"type":"string"},"beta_warnings":{"type":"array","items":{"type":"string"}},"interpreted_constraints":{"type":"object","description":"How AICO interpreted hard/soft destination and theme constraints before search or validation.","required":["destination_region","destination_city","hard_destination_constraints","required_themes","strict_mode"],"properties":{"destination_region":{"type":["string","null"]},"destination_city":{"type":["string","null"]},"hard_destination_constraints":{"type":"array","items":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string"},"value":{"type":"string"}}}},"required_themes":{"type":"array","items":{"type":"string"}},"strict_mode":{"type":"boolean"}}},"constraint_conflicts":{"type":"array","description":"Conflicts found between natural-language intent and copied/stale structured fields.","items":{"type":"object","required":["field","provided","interpreted","resolution","reason"],"properties":{"field":{"type":"string"},"provided":{},"interpreted":{},"resolution":{"type":"string"},"reason":{"type":"string"}}}},"match_status":{"type":"object","description":"Branchable match/no_match contract for hard constraints before provider fanout.","required":["status","reason","recommended_next_tool","provider_validation_required","source_tiers","hard_constraints","required_themes"],"properties":{"status":{"type":"string","enum":["matched","no_match"]},"reason":{"type":"string"},"recommended_next_tool":{"type":"string"},"provider_validation_required":{"type":"boolean"},"source_tiers":{"type":"array","items":{"type":"string"}},"hard_constraints":{"type":"array","items":{"type":"object"}},"required_themes":{"type":"array","items":{"type":"string"}}}},"bookability_status":{"type":"string","enum":["handoff_required","not_bookable"]},"bookability":{"type":"object","required":["status","source_tier","live_airfare","live_booking_inventory","provider_backed_rates","booking_supported","next_step"],"properties":{"status":{"type":"string","enum":["handoff_required","not_bookable"]},"source_tier":{"type":"string","enum":["handoff_required","unsupported"]},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"live_airfare":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false},"next_step":{"type":"string"}}},"selected_candidate":{"type":["object","null"],"description":"Selected in-scope candidate, or null when hard constraints branch to no_match before candidate-bearing work.","properties":{"id":{"type":"string"},"name":{"type":"string"},"source_tiers":{"type":"array","items":{"type":"string"}}}},"live_places":{"type":["object","null"]},"truth_boundaries":{"type":"object","description":"False live/provider-backed truth markers agents must preserve before booking, rate, or fare claims.","required":["live_airfare","live_booking_inventory","provider_backed_rates","booking_supported"],"properties":{"live_airfare":{"type":"boolean","const":false},"live_booking_inventory":{"type":"boolean","const":false},"provider_backed_rates":{"type":"boolean","const":false},"booking_supported":{"type":"boolean","const":false}}},"next_step":{"type":"string","const":"call travel.plan.validate with the selected_candidate and live_places evidence before provider_handoffs.generate"}}}},{"name":"goods.comps.search","description":"Search comparable used-goods listings as an independent comps primitive before deal validation. Returns eligible provider/snapshot comps, price_distribution, comps.summary.source_mix, and branchable truth boundaries: availability_guaranteed: false, seller_identity_verified_by_aico: false, aico_checkout_supported: false, and aico_escrow_supported: false until AICO has those marketplace rails. No deal_validation or seller_handoff payload bloat.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"item_query":{"type":"string","description":"Comparable-listing search query. Required unless user_request/query supplies the same intent."},"query":{"type":"string","description":"Shell-agent alias for item_query; item_query takes precedence."},"user_request":{"type":"string","description":"Natural-language comparable-listing request; used when item_query/query is omitted."},"location":{"type":"string","description":"Marketplace/location scope, e.g. sfbay for authorized Craigslist snapshots."},"radius_miles":{"type":"number","description":"Optional radius constraint where provider/snapshot supports it."},"min_price_usd":{"type":"number","description":"Minimum buyer-relevant comparable price; invalid non-numbers are rejected."},"max_price_usd":{"type":"number","description":"Maximum buyer-relevant comparable price; invalid non-numbers are rejected."},"condition_preferences":{"type":"array","items":{"type":"string"},"description":"Optional preferred conditions."},"must_have":{"type":"array","items":{"type":"string"},"description":"Required title terms for eligible comps."},"avoid":{"type":"array","items":{"type":"string"},"description":"Forbidden title terms for eligible comps."},"providers":{"type":"array","items":{"type":"string","enum":["ebay","craigslist"]},"description":"Provider/snapshot evidence sources. eBay requires configured Browse API access; Craigslist uses authorized snapshots."}},"anyOf":[{"required":["item_query"]},{"required":["query"]},{"required":["user_request"]}],"additionalProperties":false},"outputSchema":{"type":"object","description":"Comps-search primitive output with provider/snapshot comparable listings, price distribution, source mix, and explicit false marketplace trust/checkout rails. It intentionally omits deal_validation and seller_handoff; call goods.deal.validate after selecting a target listing.","required":["product","requested_item","provider_statuses","comps","price_distribution","workflow_next_step","truth_boundaries"],"properties":{"product":{"type":"string","const":"used_goods_comps_search_v0"},"requested_item":{"type":"string"},"provider_statuses":{"type":"array","items":{"type":"object"}},"comps":{"type":"object","properties":{"listings":{"type":"array","items":{"type":"object"}},"summary":{"type":"object","properties":{"target_item":{"type":"string"},"sample_size":{"type":"number"},"median_price_usd":{"type":["number","null"]},"min_price_usd":{"type":["number","null"]},"max_price_usd":{"type":["number","null"]},"source_mix":{"type":"object"}}}}},"price_distribution":{"type":"object"},"workflow_next_step":{"type":"object","properties":{"recommended_primitive":{"type":"string","const":"goods.deal.validate"},"endpoint":{"type":"string","const":"POST /api/v1/goods/deal/validate"},"mcp_tool":{"type":"string","const":"goods.deal.validate"},"reason":{"type":"string"},"required_input_fields":{"type":"array","items":{"type":"string"}},"selected_listing_input_examples":{"type":"array","description":"Up to three returned comparable listings transformed into request bodies an agent can copy into goods.deal.validate after choosing a target listing; examples preserve marketplace truth boundaries and do not imply availability, seller verification, checkout, or escrow.","items":{"type":"object"}},"truth_boundaries":{"type":"object","description":"Marketplace truth boundaries agents must preserve: AICO normalizes provider/snapshot evidence and seller handoffs, but does not guarantee availability, verify sellers, provide checkout, or provide escrow.","required":["availability_guaranteed","seller_identity_verified_by_aico","aico_checkout_supported","aico_escrow_supported"],"properties":{"availability_guaranteed":{"type":"boolean","const":false},"seller_identity_verified_by_aico":{"type":"boolean","const":false},"aico_checkout_supported":{"type":"boolean","const":false},"aico_escrow_supported":{"type":"boolean","const":false}}}},"required":["recommended_primitive","endpoint","mcp_tool","reason","required_input_fields","selected_listing_input_examples","truth_boundaries"]},"truth_boundaries":{"type":"object","description":"Marketplace truth boundaries agents must preserve: AICO normalizes provider/snapshot evidence and seller handoffs, but does not guarantee availability, verify sellers, provide checkout, or provide escrow.","required":["availability_guaranteed","seller_identity_verified_by_aico","aico_checkout_supported","aico_escrow_supported"],"properties":{"availability_guaranteed":{"type":"boolean","const":false},"seller_identity_verified_by_aico":{"type":"boolean","const":false},"aico_checkout_supported":{"type":"boolean","const":false},"aico_escrow_supported":{"type":"boolean","const":false}}}}}},{"name":"goods.deal.validate","description":"Validate a used-goods deal against provider/snapshot comps and return price_vs_market including buyer_total_price_usd when shipping_usd is supplied, scam-risk signals, seller handoff guidance, and branchable truth boundaries: availability_guaranteed: false, seller_identity_verified_by_aico: false, aico_checkout_supported: false, and aico_escrow_supported: false until AICO has those marketplace rails. No listing-search payload bloat.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Target listing title. Required unless item_query is supplied."},"item_query":{"type":"string","description":"Comparable-search query. Used as fallback title when title is omitted."},"listing_url":{"type":"string","description":"Optional target listing URL to exclude from its own comps."},"price_usd":{"type":"number","description":"Target listing item price in USD before optional shipping/fees."},"shipping_usd":{"type":"number","description":"Optional shipping or fee amount in USD; deal validation compares buyer_total_price_usd against eligible comps."},"location":{"type":"string","description":"Marketplace/location scope, e.g. sfbay for authorized Craigslist snapshots."},"condition":{"type":"string","description":"Optional target-listing condition label."},"providers":{"type":"array","items":{"type":"string","enum":["ebay","craigslist"]},"description":"Provider/snapshot evidence sources. eBay requires configured Browse API access; Craigslist uses authorized snapshots."},"must_have":{"type":"array","items":{"type":"string"},"description":"Required title terms for eligible comps."},"avoid":{"type":"array","items":{"type":"string"},"description":"Forbidden title terms for eligible comps."}},"required":["price_usd"],"anyOf":[{"required":["title"]},{"required":["item_query"]}],"additionalProperties":false},"outputSchema":{"type":"object","description":"Deal-validation primitive output with target listing context, provider/snapshot comps, price-vs-market assessment, risk checks, seller handoff guidance, and explicit false marketplace trust/checkout rails.","required":["product","requested_listing","provider_statuses","comps","price_vs_market","deal_validation","scam_risk_signals","missing_checks","seller_questions","seller_handoff","workflow_next_step","truth_boundaries"],"properties":{"product":{"type":"string","const":"used_goods_deal_validation_v0"},"requested_listing":{"type":"object"},"provider_statuses":{"type":"array","items":{"type":"object"}},"comps":{"type":"object","properties":{"listings":{"type":"array","items":{"type":"object"}},"summary":{"type":"object"}}},"price_vs_market":{"type":"object","properties":{"listing_price_usd":{"type":"number"},"shipping_usd":{"type":"number"},"buyer_total_price_usd":{"type":"number"},"median_comp_price_usd":{"type":["number","null"]},"delta_percent_vs_median":{"type":["number","null"]},"position":{"type":"string","enum":["below_market","within_market","above_market","unknown"]}}},"deal_validation":{"type":"object"},"scam_risk_signals":{"type":"array","items":{"type":"string"}},"missing_checks":{"type":"array","items":{"type":"string"}},"seller_questions":{"type":"array","items":{"type":"string"}},"seller_handoff":{"type":"object"},"workflow_next_step":{"type":"object","properties":{"recommended_primitive":{"type":"string","const":"goods.seller_handoff.generate"},"endpoint":{"type":"string","const":"POST /api/v1/goods/seller-handoff/generate"},"mcp_tool":{"type":"string","const":"goods.seller_handoff.generate"},"reason":{"type":"string"},"seller_handoff_input_example":{"type":"object","description":"Validated target listing plus comp median transformed into a request body an agent can copy into goods.seller_handoff.generate; preserves no checkout, escrow, seller verification, or availability guarantee claims."},"prefilled_input":{"type":"object"},"truth_boundaries":{"type":"object","description":"Marketplace truth boundaries agents must preserve: AICO normalizes provider/snapshot evidence and seller handoffs, but does not guarantee availability, verify sellers, provide checkout, or provide escrow.","required":["availability_guaranteed","seller_identity_verified_by_aico","aico_checkout_supported","aico_escrow_supported"],"properties":{"availability_guaranteed":{"type":"boolean","const":false},"seller_identity_verified_by_aico":{"type":"boolean","const":false},"aico_checkout_supported":{"type":"boolean","const":false},"aico_escrow_supported":{"type":"boolean","const":false}}}},"required":["recommended_primitive","endpoint","mcp_tool","reason","seller_handoff_input_example","prefilled_input","truth_boundaries"]},"truth_boundaries":{"type":"object","description":"Marketplace truth boundaries agents must preserve: AICO normalizes provider/snapshot evidence and seller handoffs, but does not guarantee availability, verify sellers, provide checkout, or provide escrow.","required":["availability_guaranteed","seller_identity_verified_by_aico","aico_checkout_supported","aico_escrow_supported"],"properties":{"availability_guaranteed":{"type":"boolean","const":false},"seller_identity_verified_by_aico":{"type":"boolean","const":false},"aico_checkout_supported":{"type":"boolean","const":false},"aico_escrow_supported":{"type":"boolean","const":false}}}}}},{"name":"goods.seller_handoff.generate","description":"Generate an exact seller-contact handoff for a found used-goods listing: message_template, verification questions, negotiation_stance, pickup/shipping checklist, red_flags, next_action, and explicit false marketplace trust/checkout rails. No provider calls and no availability, seller-verification, checkout, or escrow claims.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Found listing title. Required unless item_query is supplied."},"item_query":{"type":"string","description":"Canonical item name; used as fallback title when title is omitted."},"listing_url":{"type":"string"},"price_usd":{"type":"number"},"median_comp_price_usd":{"type":"number","description":"Optional median comparable price from goods.comps.search or goods.deal.validate."},"location":{"type":"string"},"condition":{"type":"string"},"negotiation_style":{"type":"string","enum":["polite","polite_firm","fast_pickup"]}},"anyOf":[{"required":["title"]},{"required":["item_query"]}],"additionalProperties":false},"outputSchema":{"type":"object","required":["product","requested_listing","seller_handoff","negotiation_stance","red_flags","next_action","truth_boundaries"],"properties":{"product":{"type":"string","const":"used_goods_seller_handoff_v0"},"requested_listing":{"type":"object"},"seller_handoff":{"type":"object"},"negotiation_stance":{"type":"object"},"red_flags":{"type":"array","items":{"type":"string"}},"next_action":{"type":"string"},"truth_boundaries":{"type":"object","description":"Marketplace truth boundaries agents must preserve: AICO normalizes provider/snapshot evidence and seller handoffs, but does not guarantee availability, verify sellers, provide checkout, or provide escrow.","required":["availability_guaranteed","seller_identity_verified_by_aico","aico_checkout_supported","aico_escrow_supported"],"properties":{"availability_guaranteed":{"type":"boolean","const":false},"seller_identity_verified_by_aico":{"type":"boolean","const":false},"aico_checkout_supported":{"type":"boolean","const":false},"aico_escrow_supported":{"type":"boolean","const":false}}}}}},{"name":"skill.search","description":"Search skill libraries for agent procedures when an agent asks for the best way to do something or find something out. Returns branchable options with provenance and limitations; does not execute skills, install dependencies, guarantee the globally best option, or perform live web search in v0.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":12,"description":"Agent how-to/procedure discovery query, e.g. best way for an agent to find a skill before coding."},"max_results":{"type":"number","minimum":1,"maximum":10,"default":5},"sources":{"type":"array","items":{"type":"string","enum":["vercel_labs_skills","aico_skill_library","web_search_pattern"]}}},"required":["query"],"additionalProperties":false}},{"name":"feedback.submit","description":"Submit structured agent feedback after a REST/MCP call so Agent Infrastructure Co can map blockers, alternatives, and missing handoffs to roadmap buckets.","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"request_id":{"type":"string","description":"Optional request_id from a prior API response."},"source_request_path":{"type":"string","description":"Optional allowlisted source endpoint copied from a response feedback_prompt.","enum":["/api/v1/travel/search","/api/v1/travel/destinations","/api/v1/travel/intent/parse","/api/v1/travel/destinations/search","/api/v1/travel/places/search","/api/v1/travel/plan/validate","/api/v1/travel/provider_handoffs/generate","/mcp"]},"rating":{"type":"string","enum":["useful","partially_useful","not_useful","blocked"]},"issue_categories":{"type":"array","items":{"type":"string","enum":["off_scope","missing_live_data","unclear_provenance","handoff_incomplete","docs_confusing","activation_blocked","pricing_blocked","competitor_preferred","generic_search_preferred","other"]}},"expected_behavior":{"type":"string"},"actual_behavior":{"type":"string"},"chosen_alternative":{"type":"string","enum":["aico","generic_search","competitor","abandoned","unknown"]},"notes":{"type":"string"},"may_contact":{"type":"boolean"}},"required":["rating","issue_categories"],"additionalProperties":false}}]}