[ / ] Agent Infrastructure Co.

Shell surface

# CLI

A small standalone Node CLI for shell agents and builders who want no browser signup: activate, smoke-test, and compose Travel API primitives before wiring REST or hosted MCP.

[ download script ][ /docs ][ /mcp ]
## Shell-only activation

Run this first if you do not already have a bearer key. Store the returned key in AICO_TRAVEL_KEY.

POST /api/v1/activation
curl https://agentinfrastructureco.com/api/v1/activation \
  -H "Content-Type: application/json" \
  -d '{"agent_name":"cli-buyer-agent","intended_use":"Evaluate AICO from a shell."}'
## Install and run
curl -fsSL https://agentinfrastructureco.com/cli/aico-travel.mjs -o aico-travel.mjs
chmod +x aico-travel.mjs
export AICO_TRAVEL_KEY="paste-key-here"
node aico-travel.mjs search '{"user_request":"SFO October hiking and food trip","origin":"SFO","trip_length_days":10,"budget_usd":9000}'
## Validated primitive chain

The copy-paste proof path is to run the validated primitive chain: activation → travel.intent.parse → travel.destinations.search → travel.places.search → travel.plan.validate → travel.provider_handoffs.generate. It checks Point Reyes + Sonoma Coast candidate_intent_coherence, destination gate, live_places evidence, plan validation, then provider handoffs. Preserve not live booking inventory, provider-backed hotel rates, or live airfare; also keep no booking support. Mark live_booking_inventory: false, provider_backed_rates: false, live_flight_fares: false, booking_supported: false, bookability_status, bookability: not_bookable, handoff_required, execute_provider_handoffs, commercial_next_step, POST /api/v1/commercial/intent, commercial_intent_requested, and requires_browser_billing_account. The mcp-chain output also surfaces provider_capability_readiness with branchable claim_graduation booleans (all false in current beta) and claim_readiness.required_evidence so shell agents can avoid pre-graduation provider spend. If a missing primitive blocks adoption, use api-request to POST /api/v1/api-requests and branch on agent_requested_api.

Hobby: $5 minimum usage/month with $5 credits included; pricing_model: "usage_token_minimum". Paid access raises testing limits and continuity after first value; it is minimum usage with included credits and does not add booking, live airfare, provider-backed hotel rates, checkout, escrow, or seller verification.

Used Goods shell proof: run goods-deal-validate to POST /api/v1/goods/deal/validate, matching hosted MCP goods.deal.validate for comps, price_vs_market, deal_validation, scam_risk_signals, missing_checks, seller_questions, seller_handoff, and truth_boundaries. Marketplace truth markers stay branchable: availability_guaranteed: false, seller_identity_verified_by_aico: false, aico_checkout_supported: false, aico_escrow_supported: false.

node aico-travel.mjs mcp-chain
node aico-travel.mjs commercial-intent REQUEST_ID
node aico-travel.mjs api-request '{"requested_api_name":"live rail disruption API","problem":"Need branchable current rail disruption evidence before booking handoffs.","urgency":"high","agent_context":"cli"}'
node aico-travel.mjs goods-deal-validate '{"title":"Sony FE 24-105mm f/4 G OSS Lens","price_usd":320,"location":"Oakland, CA"}'
## Commands
mcp-chain

Run intent parse, destination gate, live_places evidence, plan validation, then provider handoffs.

commercial-intent REQUEST_ID

Record commercial_intent_requested from a matched response before browser billing.

api-request '{...}'

Submit a missing primitive request to /api/v1/api-requests; accepted responses return agent_requested_api.

goods-deal-validate '{...}'

Call /api/v1/goods/deal/validate / hosted MCP goods.deal.validate shape for used-goods comps, price_vs_market, risk checks, and seller handoff truth boundaries.

search '{...}'

Call the Travel API search endpoint from shell JSON.

destinations

list source-tiered destination baselines with curated_baseline for provider-search scoping.

me

Inspect the active key and rate-limit state.

## Related surfaces

OpenAPI · llms.txt · schema.json