{"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"},"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.","properties":{"destination_region":{"type":"string"},"destination_city":{"type":"string"},"hard_destination_constraints":{"type":"array","items":{"type":"object","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","properties":{"field":{"type":"string"},"provided_value":{},"interpreted_value":{},"resolution":{"type":"string"}}}},"match_status":{"type":"object","description":"Branchable match/no_match contract for hard constraints before provider fanout.","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, parsed_intent.effective_input, interpreted_constraints, constraint_conflicts, and false live/provider-backed truth boundaries; no ranked_destinations payload.","required":["beta_warnings","parsed_intent","truth_boundaries"],"properties":{"beta_caveat":{"type":"string"},"beta_warnings":{"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}}},"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.","properties":{"destination_region":{"type":"string"},"destination_city":{"type":"string"},"hard_destination_constraints":{"type":"array","items":{"type":"object","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","properties":{"field":{"type":"string"},"provided_value":{},"interpreted_value":{},"resolution":{"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."}},"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","provider_handoffs","required_external_checks","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.","properties":{"destination_region":{"type":"string"},"destination_city":{"type":"string"},"hard_destination_constraints":{"type":"array","items":{"type":"object","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","properties":{"field":{"type":"string"},"provided_value":{},"interpreted_value":{},"resolution":{"type":"string"}}}},"match_status":{"type":"object","description":"Branchable match/no_match contract for hard constraints before provider fanout.","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"]},"provider_handoffs":{"type":["object","null"],"required":["provider_status","capabilities","bookability","fare_status","rate_status","lowest_price_selection","provider_adapters","flight_handoff","hotel_handoff","place_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"}}}},"flight_handoff":{"type":"object"},"hotel_handoff":{"type":"object"},"place_handoff":{"type":"object"},"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"}},"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.","properties":{"destination_region":{"type":"string"},"destination_city":{"type":"string"},"hard_destination_constraints":{"type":"array","items":{"type":"object","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","properties":{"field":{"type":"string"},"provided_value":{},"interpreted_value":{},"resolution":{"type":"string"}}}},"match_status":{"type":"object","description":"Branchable match/no_match contract for hard constraints before provider fanout.","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","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"}}},"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":["beta_warnings","interpreted_constraints","constraint_conflicts","plan_validation","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.","properties":{"destination_region":{"type":"string"},"destination_city":{"type":"string"},"hard_destination_constraints":{"type":"array","items":{"type":"object","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","properties":{"field":{"type":"string"},"provided_value":{},"interpreted_value":{},"resolution":{"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},"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, selected candidate, category coverage, and false booking/rate/fare truth markers; no ranked_destinations payload.","required":["beta_warnings","interpreted_constraints","constraint_conflicts","match_status","selected_candidate","live_places","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.","properties":{"destination_region":{"type":"string"},"destination_city":{"type":"string"},"hard_destination_constraints":{"type":"array","items":{"type":"object","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","properties":{"field":{"type":"string"},"provided_value":{},"interpreted_value":{},"resolution":{"type":"string"}}}},"match_status":{"type":"object","description":"Branchable match/no_match contract for hard constraints before provider fanout.","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"}}}},"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"}}}},{"name":"goods.deal.validate","description":"Validate a used-goods deal against provider/snapshot comps and return price_vs_market, 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 price in USD."},"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","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"},"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"},"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."},"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}}]}