{"schema_version":"border-times.agent-connect.v1","status":"source_contract_only","runtime_scope":"public_read_discovery","powered_by":{"label":"Powered by Dunvale","provider":"Dunvale","provider_url":"https://dunvale.com","role":"border data intelligence layer","attribution":"Powered by Dunvale for USBorderWait.com. Preserve source, timestamp, caveat, and canonical link.","site_url":"https://usborderwait.com"},"site":{"site_key":"usborderwait","brand_name":"USBorderWait.com","locale":"en-US","origin":"https://usborderwait.com"},"discovery":{"agent_connect_page":"https://usborderwait.com/agent-connect","catalog_url":"https://usborderwait.com/api/public/agent/catalog","ai_packet_catalog_url":"https://usborderwait.com/api/public/ai/packets","openapi_url":"https://usborderwait.com/openapi.json","llms_txt":"https://usborderwait.com/llms.txt","data_catalog":"https://usborderwait.com/api/public/datasets/catalog","widget_config":"https://usborderwait.com/api/public/widgets/config?site_key=usborderwait"},"free_access":{"entitlement":"free","limits":{"agentPullsPerCrossingPerHour":1,"apiRequestsPerDay":24,"historyDays":7,"maxCrossingsPerWidget":1,"minRefreshMinutes":240,"widgetKeys":1},"features":["public_current_wait"],"attribution_required":true},"paid_access":[{"entitlement":"agent_pro","label":"Agent Pro","monthly_price_cents":2900,"features":["public_current_wait","public_history","public_nearby","public_widget_config","owned_analytics","owned_leads","ai_ad_drafts","ai_coupon_drafts","ai_seo_drafts"],"limits":{"agentPullsPerCrossingPerHour":60,"apiRequestsPerDay":2000,"historyDays":30,"ownedAnalyticsDays":90}},{"entitlement":"business_bundle","label":"Business Bundle","features":["public_current_wait","public_history","public_nearby","public_widget_config","owned_analytics","owned_leads","ai_ad_drafts","ai_coupon_drafts","ai_seo_drafts","integration_tools"],"limits":{"agentPullsPerCrossingPerHour":120,"apiRequestsPerDay":5000,"historyDays":30,"maxCrossingsPerWidget":"unlimited","minRefreshMinutes":15,"ownedAnalyticsDays":365,"widgetKeys":25}},{"entitlement":"publisher_data","label":"Publisher/Data","features":["public_current_wait","public_history","public_nearby","public_widget_config"],"limits":{"agentPullsPerCrossingPerHour":"unlimited","apiRequestsPerDay":"unlimited","historyDays":"unlimited","maxCrossingsPerWidget":"unlimited","minRefreshMinutes":5,"widgetKeys":"unlimited"}}],"safe_scope":{"public_data_only_without_auth":true,"vendor_tokens_may_read_own_vendor_data_only":true,"write_tools_are_draft_first":true,"private_route_inventory_exposed":false,"live_mcp_runtime_enabled":false,"live_ai_provider_requests_enabled":false,"production_mutation_enabled":false},"coverage_policy":{"required_for_ai_answers":["source","updated_at_or_temporal_coverage","stale_or_caveat_text","canonical_url","license_url","powered_by"],"current_wait_claims_require":["updated_at","is_stale=false","source","coverage.latest_age_minutes"],"historical_claims_require":["range","lane_type","oldest","newest","row_count","caveat","source_currentness.lane_history_count"],"widget_claims_require":["coverage","attribution","backlink_url","license_url"],"packet_claims_require":["source_currentness","claimWarnings","agent_insights","claim_policy","cache_policy","powered_by"],"insight_claims_require":["agent_insights.summary","agent_insights.best_current_options","source_currentness.latest_age_minutes","source_currentness.sample_row_count"],"history_insight_claims_require":["agent_insights.summary","agent_insights.coverage_by_lane_type","agent_insights.coverage_by_crossing","agent_insights.best_history_coverage","agent_insights.missing_history","source_currentness.lane_history_count"],"history_distribution_claims_require":["source_currentness.distribution_ready","source_currentness.distribution_status","source_currentness.distribution_blockers","source_currentness.next_required"],"history_coverage_gap_claims_require":["coverage_gap_schema_version","source_currentness.gap_count","coverage[].distribution_status","gaps[].distribution_blockers","answer_contract.historical_value_rule"],"history_agent_handoff_claims_require":["agent_handoff.read_order","agent_handoff.target_packets","agent_handoff.distribution_gate","agent_handoff.claim_rules"],"history_import_contract_claims_require":["import_contract.expected_coverage","import_contract.crossings[].source_id_candidates","import_contract.accepted_aliases","import_contract.validation_commands","import_contract.strict_success_requirements"],"dunvale_claim_policy":{"source_currentness_required":true,"attribution_required":true,"fail_closed_on":["missing_source","missing_timestamp","no_rows","unknown_crossing","private_route_request"],"stale_no_row_rule":"If data is stale, empty, sample, or missing, say that first and do not state it as current.","required_fields":["source","updated_at_or_temporal_coverage","stale_or_caveat_text","canonical_url","license_url","powered_by"],"insight_fields":["agent_insights.summary","agent_insights.best_current_options","agent_insights.stale_or_sample_rows","agent_insights.coverage_by_lane_type","agent_insights.coverage_by_crossing","agent_insights.best_history_coverage","agent_insights.missing_history"],"current_insight_fields":["agent_insights.summary","agent_insights.best_current_options","agent_insights.high_delay_options","agent_insights.stale_or_sample_rows"],"history_insight_fields":["agent_insights.summary","agent_insights.coverage_by_lane_type","agent_insights.coverage_by_crossing","agent_insights.best_history_coverage","agent_insights.missing_history"],"history_distribution_fields":["source_currentness.distribution_ready","source_currentness.distribution_status","source_currentness.distribution_blockers","source_currentness.next_required"],"no_private_runtime_claim":true,"no_platform_partnership_claim":true},"no_private_runtime_claim":true},"ai_packet_cache":{"status":"public_read_cache","catalog_url":"https://usborderwait.com/api/public/ai/packets","packet_ids":["current-waits","wait-history","wait-history-index","wait-history-coverage-gaps","wait-history-agent-handoff","wait-history-import-contract","crossing-directory","data-catalog","agent-connect","phone-ai","openapi","daily-report","seo-page-registry"],"packets":[{"id":"current-waits","api_url":"https://usborderwait.com/api/public/ai/packets/current-waits","cache_seconds":30,"data_type":"current_waits","agent_insights_ready":true,"all_lane_history_ready":false,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":false},{"id":"wait-history","api_url":"https://usborderwait.com/api/public/ai/packets/wait-history","cache_seconds":300,"data_type":"wait_history_packet","agent_insights_ready":true,"all_lane_history_ready":true,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":false,"history_coverage":"all_range_public_lane_level_history"},{"id":"wait-history-index","api_url":"https://usborderwait.com/api/public/ai/packets/wait-history-index","cache_seconds":3600,"data_type":"wait_history_index_packet","agent_insights_ready":true,"all_lane_history_ready":true,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":false,"history_coverage":"all_range_public_lane_history_url_index"},{"id":"wait-history-coverage-gaps","api_url":"https://usborderwait.com/api/public/ai/packets/wait-history-coverage-gaps","cache_seconds":3600,"data_type":"wait_history_coverage_gaps_packet","agent_insights_ready":true,"all_lane_history_ready":false,"coverage_gaps_ready":true,"agent_handoff_ready":false,"import_contract_ready":false,"history_coverage":"crossing_lane_distribution_status"},{"id":"wait-history-agent-handoff","api_url":"https://usborderwait.com/api/public/ai/packets/wait-history-agent-handoff","cache_seconds":3600,"data_type":"wait_history_agent_handoff_packet","agent_insights_ready":true,"all_lane_history_ready":false,"coverage_gaps_ready":false,"agent_handoff_ready":true,"import_contract_ready":false,"history_coverage":"agent_handoff_read_order"},{"id":"wait-history-import-contract","api_url":"https://usborderwait.com/api/public/ai/packets/wait-history-import-contract","cache_seconds":3600,"data_type":"wait_history_import_contract_packet","agent_insights_ready":true,"all_lane_history_ready":false,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":true,"history_coverage":"approved_dunvale_export_contract"},{"id":"crossing-directory","api_url":"https://usborderwait.com/api/public/ai/packets/crossing-directory","cache_seconds":300,"data_type":"crossing_directory","agent_insights_ready":false,"all_lane_history_ready":false,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":false},{"id":"data-catalog","api_url":"https://usborderwait.com/api/public/ai/packets/data-catalog","cache_seconds":3600,"data_type":"data_catalog","agent_insights_ready":false,"all_lane_history_ready":false,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":false},{"id":"agent-connect","api_url":"https://usborderwait.com/api/public/ai/packets/agent-connect","cache_seconds":3600,"data_type":"agent_connect","agent_insights_ready":false,"all_lane_history_ready":false,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":false},{"id":"phone-ai","api_url":"https://usborderwait.com/api/public/ai/packets/phone-ai","cache_seconds":3600,"data_type":"phone_ai_profiles","agent_insights_ready":false,"all_lane_history_ready":false,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":false},{"id":"openapi","api_url":"https://usborderwait.com/api/public/ai/packets/openapi","cache_seconds":3600,"data_type":"openapi_discovery","agent_insights_ready":false,"all_lane_history_ready":false,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":false},{"id":"daily-report","api_url":"https://usborderwait.com/api/public/ai/packets/daily-report","cache_seconds":300,"data_type":"daily_report_discovery","agent_insights_ready":false,"all_lane_history_ready":false,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":false},{"id":"seo-page-registry","api_url":"https://usborderwait.com/api/public/ai/packets/seo-page-registry","cache_seconds":300,"data_type":"seo_page_registry_discovery","agent_insights_ready":false,"all_lane_history_ready":false,"coverage_gaps_ready":false,"agent_handoff_ready":false,"import_contract_ready":false}]},"client_profiles":[{"id":"apple_siri_shortcuts","label":"Apple Siri and Shortcuts","status":"cached_public_json_ready","transport":"https_json_cached_packet","packet_url":"https://usborderwait.com/api/public/ai/packets/phone-ai","notes":"Use cached public JSON packets and canonical links for app actions, shortcuts, or answer extraction. No Apple partnership or native App Intent runtime is claimed."},{"id":"apple_spotlight","label":"Apple Spotlight and on-device search","status":"cached_public_json_ready","transport":"https_json_cached_packet","packet_url":"https://usborderwait.com/api/public/ai/packets/phone-ai","notes":"Use short, attributed crossing facts with timestamps, source, stale state, and canonical URLs."},{"id":"generic_phone_ai","label":"Phone AI assistant","status":"cached_public_json_ready","transport":"https_json_cached_packet","packet_url":"https://usborderwait.com/api/public/ai/packets/current-waits","notes":"Prefer packet reads over page scraping. Keep Powered by Dunvale attribution, source, timestamp, and caveat beside answers."},{"id":"generic_mcp_client","label":"Generic MCP client","status":"planned_source_contract","transport":"remote_mcp_future","packet_url":"https://usborderwait.com/api/public/agent/catalog","notes":"Use public OpenAPI, Agent Connect, and AI packets until live scoped MCP runtime is enabled."},{"id":"ai_desktop_or_editor","label":"AI desktop or editor","status":"public_api_ready","transport":"https_json","packet_url":"https://usborderwait.com/api/public/ai/packets","notes":"Use public read endpoints with attribution, freshness, and caveat context."},{"id":"publisher_or_rag","label":"Publisher or RAG workflow","status":"public_api_ready","transport":"https_json","packet_url":"https://usborderwait.com/api/public/ai/packets/data-catalog","notes":"Use catalog, latest waits, limited history, and widgets with canonical backlinks."}],"tools":[{"id":"cached_ai_packets","title":"Cached AI packets","description":"Read cached public packets for answer engines, phone assistants, RAG systems, and API clients.","endpoint":"/api/public/ai/packets","method":"GET","entitlement":"free","freshness":"Catalog caches for one hour; current-wait packets cache briefly and carry source-currentness checks.","attribution":"Say Powered by Dunvale and preserve source, update time, caveat, canonical URL, and license URL.","caveat":"Packets are public read cache surfaces only. Do not infer private runtime, live AI provider, or platform partnership.","response_coverage_fields":["powered_by","claim_policy","claimWarnings","source_currentness","agent_insights","cache_policy","canonical_url"],"input_schema":{"type":"object","properties":{"packet_id":{"type":"string","enum":["current-waits","wait-history","wait-history-index","wait-history-coverage-gaps","wait-history-agent-handoff","wait-history-import-contract","crossing-directory","data-catalog","agent-connect","phone-ai","openapi","daily-report","seo-page-registry"]}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/ai/packets"},{"id":"latest_wait","title":"Latest crossing wait","description":"Read current public wait, lane, source, update, and freshness context for one crossing.","endpoint":"/api/public/crossings/san-ysidro/latest","method":"GET","entitlement":"free","freshness":"Refreshes when source wait data refreshes; stale snapshots must be labeled stale.","attribution":"Link to the matching crossing page and preserve source/update fields.","caveat":"Treat waits as current only when updated_at and is_stale support that claim.","response_coverage_fields":["source","updated_at","is_stale","coverage.caveat","coverage.latest_age_minutes"],"input_schema":{"type":"object","required":["crossing_slug"],"properties":{"crossing_slug":{"type":"string","enum":["san-ysidro","otay-mesa","tecate","calexico-west","calexico-east","nogales-deconcini","nogales-mariposa","laredo","colombia-solidarity","hidalgo","pharr","brownsville-veterans","del-rio","eagle-pass-bridge-i","eagle-pass-bridge-ii","bota","paso-del-norte","stanton-dcl","ysleta-zaragoza","peace-bridge","rainbow-bridge","champlain","ambassador-bridge","blue-water-bridge","pacific-highway","sumas","blaine-peace-arch"]}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/crossings/san-ysidro/latest"},{"id":"wait_history","title":"Wait history","description":"Read public wait history for one crossing within plan limits.","endpoint":"/api/public/crossings/san-ysidro/history?range=24h","method":"GET","entitlement":"free","freshness":"History updates as public snapshots are collected; long ranges belong to paid widget or agent plans.","attribution":"Link to the crossing page and preserve range/source coverage.","caveat":"History is planning context, not current wait evidence.","response_coverage_fields":["source","oldest","newest","row_count","latest_age_minutes","caveat"],"input_schema":{"type":"object","required":["crossing_slug"],"properties":{"crossing_slug":{"type":"string","enum":["san-ysidro","otay-mesa","tecate","calexico-west","calexico-east","nogales-deconcini","nogales-mariposa","laredo","colombia-solidarity","hidalgo","pharr","brownsville-veterans","del-rio","eagle-pass-bridge-i","eagle-pass-bridge-ii","bota","paso-del-norte","stanton-dcl","ysleta-zaragoza","peace-bridge","rainbow-bridge","champlain","ambassador-bridge","blue-water-bridge","pacific-highway","sumas","blaine-peace-arch"]},"range":{"type":"string","enum":["24h","7d","30d","1y","5y","all"],"default":"24h"},"lane_type":{"type":"string","enum":["general","ready","sentri","nexus","commercial","pedestrian"],"default":"general"}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/crossings/san-ysidro/history?range=24h"},{"id":"nearby_crossings","title":"Nearby crossings","description":"Read nearby public crossing alternatives for one crossing.","endpoint":"/api/public/crossings/san-ysidro/nearby","method":"GET","entitlement":"free","freshness":"Uses current crossing registry plus latest public wait snapshots.","attribution":"Link to each returned crossing page.","caveat":"Nearby comparisons can be stale by crossing; preserve each is_stale and updated_at field.","response_coverage_fields":["source","updated_at","coverage.caveat","nearby.source","nearby.updated_at","nearby.is_stale"],"input_schema":{"type":"object","required":["crossing_slug"],"properties":{"crossing_slug":{"type":"string","enum":["san-ysidro","otay-mesa","tecate","calexico-west","calexico-east","nogales-deconcini","nogales-mariposa","laredo","colombia-solidarity","hidalgo","pharr","brownsville-veterans","del-rio","eagle-pass-bridge-i","eagle-pass-bridge-ii","bota","paso-del-norte","stanton-dcl","ysleta-zaragoza","peace-bridge","rainbow-bridge","champlain","ambassador-bridge","blue-water-bridge","pacific-highway","sumas","blaine-peace-arch"]}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/crossings/san-ysidro/nearby"},{"id":"smart_routing_coverage","title":"Smart routing coverage","description":"Read cached Dunvale smart-routing coverage, route-profile readiness, Mapbox budget fields, missing crossing list, and disabled port-time estimate consumer semantics.","endpoint":"/api/public/routing/coverage","method":"GET","entitlement":"free","freshness":"Border Times server proxy caches Dunvale public routing coverage; browsers must not fan out to Mapbox. Port-time estimate feature flag defaults off.","attribution":"Say Powered by Dunvale and preserve coverage counts, budget fields, source path, estimate-state caveat, and caveat.","caveat":"Readiness metadata only. Port-time estimate consumer exposes published-only and approach-context-only fallback semantics only; detailed route snapshots, DB peering, live route profile imports, combined estimates, and lane-specific estimate claims stay blocked.","response_coverage_fields":["crossings","route_profiles","missing_crossings","mapbox_planned_monthly_calls","mapbox_reserve_calls","current_only","acceptance.ready","port_time_estimate_consumer.enabled","port_time_estimate_consumer.supportedFallbackStates","port_time_estimate_consumer.laneSpecificEstimateClaimAllowed"],"input_schema":{"type":"object","properties":{"site_key":{"type":"string","enum":["usborderwait","tiemposdegarita"],"default":"usborderwait"}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/routing/coverage"},{"id":"routing_historical_statistics","title":"Historical routing statistics","description":"Read normalized historical wait distributions and weekday-hour patterns for one Border Times crossing and lane.","endpoint":"/api/public/routing/statistics?crossing=san-ysidro&lane_type=general&days=90","method":"GET","entitlement":"free","freshness":"Border Times server proxy uses a five-minute private cache over scoped Dunvale access.","attribution":"Say Powered by Dunvale and preserve crossing, lane, sample size, completeness, coverage dates, and caveat.","caveat":"Historical pattern, not live forecast. Do not present values as current wait, prediction, route advice, or causality.","response_coverage_fields":["schemaVersion","crossing","laneFilter","lookbackDays","coverage","lanes[].p50WaitMinutes","lanes[].p80WaitMinutes","lanes[].p90WaitMinutes","lanes[].patterns","caveat"],"input_schema":{"type":"object","required":["crossing"],"properties":{"crossing":{"type":"string","enum":["san-ysidro","otay-mesa","tecate","calexico-west","calexico-east","nogales-deconcini","nogales-mariposa","laredo","colombia-solidarity","hidalgo","pharr","brownsville-veterans","del-rio","eagle-pass-bridge-i","eagle-pass-bridge-ii","bota","paso-del-norte","stanton-dcl","ysleta-zaragoza","peace-bridge","rainbow-bridge","champlain","ambassador-bridge","blue-water-bridge","pacific-highway","sumas","blaine-peace-arch"]},"lane_type":{"type":"string","enum":["general","ready","sentri","nexus","pedestrian","commercial"],"default":"general"},"days":{"type":"integer","minimum":7,"maximum":120,"default":90}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/routing/statistics?crossing=san-ysidro&lane_type=general&days=90"},{"id":"crossing_list","title":"Crossing list","description":"Read public crossing registry for the current site.","endpoint":"/api/public/sites/usborderwait/crossings","method":"GET","entitlement":"free","freshness":"Static registry updated with site releases.","attribution":"Link to matching crossing pages.","caveat":"Crossing list is static registry data. Use latest wait feeds for current conditions.","response_coverage_fields":["source","updated_at","coverage.caveat"],"input_schema":{"type":"object","properties":{"site_key":{"type":"string","enum":["usborderwait","tiemposdegarita"],"default":"usborderwait"}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/sites/usborderwait/crossings"},{"id":"widget_config","title":"Widget configuration","description":"Read public widget controls, free limits, paid entitlement names, sites, and crossing slugs.","endpoint":"/api/public/widgets/config?site_key=usborderwait","method":"GET","entitlement":"free","freshness":"Static options update with site releases.","attribution":"Use when building attributed widgets that keep canonical backlinks.","caveat":"Widget configuration is static; widget responses carry current source/freshness separately.","response_coverage_fields":["attribution","limits","entitlements"],"input_schema":{"type":"object","properties":{"site_key":{"type":"string","enum":["usborderwait","tiemposdegarita"],"default":"usborderwait"}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/widgets/config?site_key=usborderwait"},{"id":"wait_card_widget","title":"Wait card widget","description":"Generate public current-wait widget HTML with required attribution.","endpoint":"/api/public/widgets/wait-card?crossing_slug=san-ysidro&site_key=usborderwait","method":"GET","entitlement":"free","freshness":"Generated from latest public wait snapshot and widget entitlement cache rules.","attribution":"Visible attribution and crossing backlink required.","caveat":"Wait-card HTML can become stale; preserve coverage, source, updated_at, and attribution.","response_coverage_fields":["source","updated_at","is_stale","coverage.caveat","coverage.latest_age_minutes"],"input_schema":{"type":"object","required":["crossing_slug","site_key"],"properties":{"crossing_slug":{"type":"string","enum":["san-ysidro","otay-mesa","tecate","calexico-west","calexico-east","nogales-deconcini","nogales-mariposa","laredo","colombia-solidarity","hidalgo","pharr","brownsville-veterans","del-rio","eagle-pass-bridge-i","eagle-pass-bridge-ii","bota","paso-del-norte","stanton-dcl","ysleta-zaragoza","peace-bridge","rainbow-bridge","champlain","ambassador-bridge","blue-water-bridge","pacific-highway","sumas","blaine-peace-arch"]},"site_key":{"type":"string","enum":["usborderwait","tiemposdegarita"],"default":"usborderwait"},"appearance":{"type":"string","enum":["light","dark","auto"],"default":"light"}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/widgets/wait-card?crossing_slug=san-ysidro&site_key=usborderwait"},{"id":"wait_board_widget","title":"Multi-crossing wait board","description":"Generate a paid, responsive board for 2 to 4 current crossing summaries.","endpoint":"/api/public/widgets/wait-board?crossing_slugs=san-ysidro,otay-mesa,tecate&site_key=usborderwait&layout=grid","method":"GET","entitlement":"paid","freshness":"Generated from latest public wait snapshots and widget entitlement cache rules.","attribution":"Visible attribution and every crossing backlink are required.","caveat":"Requires a valid entitlement with multi_crossing and preserves per-crossing availability and update context.","response_coverage_fields":["board.availability","board.rows[].availability","board.rows[].updated_at","coverage.verified_count","coverage.unavailable_count"],"input_schema":{"type":"object","required":["crossing_slugs","site_key","widget_key"],"properties":{"crossing_slugs":{"type":"string","description":"Comma-separated list of 2 to 4 unique public crossing slugs."},"site_key":{"type":"string","enum":["usborderwait","tiemposdegarita"],"default":"usborderwait"},"layout":{"type":"string","enum":["grid","list"],"default":"grid"},"appearance":{"type":"string","enum":["light","dark","auto"],"default":"light"},"widget_key":{"type":"string"}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/widgets/wait-board?crossing_slugs=san-ysidro,otay-mesa,tecate&site_key=usborderwait&layout=grid"},{"id":"history_chart_widget","title":"Historical chart widget","description":"Generate historical chart widget JSON or HTML within free or paid plan limits.","endpoint":"/api/public/widgets/history-chart?crossing_slug=san-ysidro&site_key=usborderwait&range=7d&lane_type=general","method":"GET","entitlement":"paid","freshness":"Generated from public history aggregates and widget entitlement cache rules.","attribution":"Visible attribution and crossing backlink required; CSV and long ranges require paid entitlement.","caveat":"History-chart output is planning context and may have empty verified-history ranges.","response_coverage_fields":["source","coverage.oldest_timestamp","coverage.newest_timestamp","coverage.row_count","coverage.caveat"],"input_schema":{"type":"object","required":["crossing_slug","site_key"],"properties":{"crossing_slug":{"type":"string","enum":["san-ysidro","otay-mesa","tecate","calexico-west","calexico-east","nogales-deconcini","nogales-mariposa","laredo","colombia-solidarity","hidalgo","pharr","brownsville-veterans","del-rio","eagle-pass-bridge-i","eagle-pass-bridge-ii","bota","paso-del-norte","stanton-dcl","ysleta-zaragoza","peace-bridge","rainbow-bridge","champlain","ambassador-bridge","blue-water-bridge","pacific-highway","sumas","blaine-peace-arch"]},"site_key":{"type":"string","enum":["usborderwait","tiemposdegarita"],"default":"usborderwait"},"range":{"type":"string","enum":["24h","7d","30d","1y","5y","all"],"default":"7d"},"lane_type":{"type":"string","enum":["general","ready","sentri","nexus","commercial","pedestrian"],"default":"general"},"format":{"type":"string","enum":["json","html","csv"],"default":"json"}},"additionalProperties":false},"url":"https://usborderwait.com/api/public/widgets/history-chart?crossing_slug=san-ysidro&site_key=usborderwait&range=7d&lane_type=general"}],"attribution":{"required":true,"include":["brand_name","canonical_url","source","updated_at","freshness_or_stale_context","Powered by Dunvale"],"policy_url":"https://usborderwait.com/ai-policy","license_url":"https://usborderwait.com/copyright"}}