{"tools":[{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Search the TerraFabric meta-catalog of free and commercial Earth observation collections (raw sensor data, pre-processed ARD and data products). Supports free text with operational synonyms (e.g. 'radar', 'ship', 'methane'), facets and spatial/temporal filters. Returns ranked collections with facet counts.","input_schema":{"properties":{"access":{"enum":["free","commercial"],"type":"string"},"all_weather":{"type":"boolean"},"bbox":{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},"datetime":{"description":"ISO interval 'start/end'; '..' for open ends.","type":"string"},"limit":{"default":10,"maximum":100,"minimum":1,"type":"integer"},"max_gsd":{"description":"Max ground sample distance in metres.","type":"number"},"modality":{"items":{"enum":["optical","multispectral","hyperspectral","thermal","sar","lidar","elevation","atmospheric","landcover","rf","ais","video","3d","vector"],"type":"string"},"type":"array"},"night":{"type":"boolean"},"provider":{"items":{"type":"string"},"type":"array"},"q":{"description":"Free text query.","type":"string"},"sort":{"enum":["relevance","gsd","revisit","latency","price","start"],"type":"string"},"tasking":{"description":"Only taskable sources.","type":"boolean"},"tier":{"items":{"enum":["raw","preprocessed","product"],"type":"string"},"type":"array"}},"type":"object"},"invoke":{"href":"/v1/agent/tools/search_collections","method":"POST"},"name":"search_collections","parameters":{"properties":{"access":{"enum":["free","commercial"],"type":"string"},"all_weather":{"type":"boolean"},"bbox":{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},"datetime":{"description":"ISO interval 'start/end'; '..' for open ends.","type":"string"},"limit":{"default":10,"maximum":100,"minimum":1,"type":"integer"},"max_gsd":{"description":"Max ground sample distance in metres.","type":"number"},"modality":{"items":{"enum":["optical","multispectral","hyperspectral","thermal","sar","lidar","elevation","atmospheric","landcover","rf","ais","video","3d","vector"],"type":"string"},"type":"array"},"night":{"type":"boolean"},"provider":{"items":{"type":"string"},"type":"array"},"q":{"description":"Free text query.","type":"string"},"sort":{"enum":["relevance","gsd","revisit","latency","price","start"],"type":"string"},"tasking":{"description":"Only taskable sources.","type":"boolean"},"tier":{"items":{"enum":["raw","preprocessed","product"],"type":"string"},"type":"array"}},"type":"object"},"title":"Search EO collections","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Full record for one collection including specs, licence, access endpoints (STAC APIs, S3 buckets, broker), pricing offer and JSON-LD.","input_schema":{"properties":{"id":{"type":"string"}},"required":["id"],"type":"object"},"invoke":{"href":"/v1/agent/tools/get_collection","method":"POST"},"name":"get_collection","parameters":{"properties":{"id":{"type":"string"}},"required":["id"],"type":"object"},"title":"Get collection detail","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Find STAC items (scenes/granules) for a collection over a bbox and time interval. Open collections are searched live against their upstream STAC APIs (tf:source.kind = live, each item links to its upstream record); commercial collections, or open ones whose upstream is unavailable, return simulated items flagged tf:synthetic.","input_schema":{"properties":{"bbox":{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},"collection":{"type":"string"},"datetime":{"type":"string"},"limit":{"default":10,"maximum":100,"minimum":1,"type":"integer"},"max_cloud":{"maximum":100,"minimum":0,"type":"number"}},"required":["collection"],"type":"object"},"invoke":{"href":"/v1/agent/tools/search_items","method":"POST"},"name":"search_items","parameters":{"properties":{"bbox":{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},"collection":{"type":"string"},"datetime":{"type":"string"},"limit":{"default":10,"maximum":100,"minimum":1,"type":"integer"},"max_cloud":{"maximum":100,"minimum":0,"type":"number"}},"required":["collection"],"type":"object"},"title":"Search items (scenes)","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"All data providers (space agencies, commercial operators, academic producers) with their collection counts.","input_schema":{"properties":{},"type":"object"},"invoke":{"href":"/v1/agent/tools/list_providers","method":"POST"},"name":"list_providers","parameters":{"properties":{},"type":"object"},"title":"List providers","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Overview of the TerraFabric Ontology: modules, classes, properties and counts. Use this first to learn the vocabulary for query_graph.","input_schema":{"properties":{"module":{"enum":["actors","observation","data","commerce","agentic","c2"],"type":"string"}},"type":"object"},"invoke":{"href":"/v1/agent/tools/describe_ontology","method":"POST"},"name":"describe_ontology","parameters":{"properties":{"module":{"enum":["actors","observation","data","commerce","agentic","c2"],"type":"string"}},"type":"object"},"title":"Describe the TerraFabric ontology","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"All triples about a class, property, vocabulary term or catalog entity, e.g. 'tf:Collection', 'tf:gsdMeters', 'tf:modality-sar', 'tfr:collection/sentinel-2-l2a'.","input_schema":{"properties":{"term":{"type":"string"}},"required":["term"],"type":"object"},"invoke":{"href":"/v1/agent/tools/describe_term","method":"POST"},"name":"describe_term","parameters":{"properties":{"term":{"type":"string"}},"required":["term"],"type":"object"},"title":"Describe an ontology term or entity","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Linked-data-fragments style triple pattern query over the full knowledge graph (ontology + catalog). Any of s/p/o may be omitted as a wildcard. Use CURIEs (tf:, tfr:, dct:, ...). Literal objects match by value.","input_schema":{"properties":{"limit":{"default":100,"maximum":1000,"type":"integer"},"o":{"type":"string"},"p":{"type":"string"},"s":{"type":"string"}},"type":"object"},"invoke":{"href":"/v1/agent/tools/query_graph","method":"POST"},"name":"query_graph","parameters":{"properties":{"limit":{"default":100,"maximum":1000,"type":"integer"},"o":{"type":"string"},"p":{"type":"string"},"s":{"type":"string"}},"type":"object"},"title":"Triple-pattern query","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Price a data acquisition. Open data returns a $0 quote. Commercial data is priced by area × rate with minimum area, licence tier uplift and (for tasking) priority uplift. Quotes are valid for 24h.","input_schema":{"properties":{"aoi":{"description":"Area of interest: a GeoJSON Polygon/MultiPolygon/Feature, or a [west, south, east, north] bbox in WGS84 degrees.","oneOf":[{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},{"type":"object"}]},"collection":{"type":"string"},"datetime":{"type":"string"},"license_tier":{"enum":["single-org","multi-org","government-wide","public-release"],"type":"string"},"mode":{"enum":["archive","tasking","subscription"],"type":"string"},"months":{"maximum":36,"minimum":1,"type":"integer"},"priority":{"enum":["standard","priority","urgent","flash"],"type":"string"}},"required":["collection","aoi"],"type":"object"},"invoke":{"href":"/v1/agent/tools/get_quote","method":"POST"},"name":"get_quote","parameters":{"properties":{"aoi":{"description":"Area of interest: a GeoJSON Polygon/MultiPolygon/Feature, or a [west, south, east, north] bbox in WGS84 degrees.","oneOf":[{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},{"type":"object"}]},"collection":{"type":"string"},"datetime":{"type":"string"},"license_tier":{"enum":["single-org","multi-org","government-wide","public-release"],"type":"string"},"mode":{"enum":["archive","tasking","subscription"],"type":"string"},"months":{"maximum":36,"minimum":1,"type":"integer"},"priority":{"enum":["standard","priority","urgent","flash"],"type":"string"}},"required":["collection","aoi"],"type":"object"},"title":"Get a price quote","type":"function"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"readOnlyHint":false},"description":"Principal-issued spending policy for an agent: per-order limit, total budget and permitted licence tiers. Orders outside the mandate wait for approval. Issuing returns a principal_token once; changing an existing mandate requires it. An agent cannot issue its own mandate.","input_schema":{"properties":{"agent_id":{"type":"string"},"allowed_license_tiers":{"items":{"enum":["single-org","multi-org","government-wide","public-release"],"type":"string"},"type":"array"},"budget_usd":{"minimum":0,"type":"number"},"max_order_usd":{"minimum":0,"type":"number"},"principal":{"type":"string"},"principal_token":{"description":"Required to change an existing mandate.","type":"string"}},"required":["agent_id","principal","max_order_usd","budget_usd"],"type":"object"},"invoke":{"href":"/v1/agent/tools/set_mandate","method":"POST"},"name":"set_mandate","parameters":{"properties":{"agent_id":{"type":"string"},"allowed_license_tiers":{"items":{"enum":["single-org","multi-org","government-wide","public-release"],"type":"string"},"type":"array"},"budget_usd":{"minimum":0,"type":"number"},"max_order_usd":{"minimum":0,"type":"number"},"principal":{"type":"string"},"principal_token":{"description":"Required to change an existing mandate.","type":"string"}},"required":["agent_id","principal","max_order_usd","budget_usd"],"type":"object"},"title":"Set agent spending mandate","type":"function"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Order from a quote on behalf of the calling agent. Within mandate → confirmed; otherwise 'awaiting_approval' with an approve action for the principal. Commits spend.","input_schema":{"properties":{"agent_id":{"description":"Calling agent id (or send x-agent-id header).","type":"string"},"quote_id":{"type":"string"},"reference":{"type":"string"}},"required":["quote_id"],"type":"object"},"invoke":{"href":"/v1/agent/tools/place_order","method":"POST"},"name":"place_order","parameters":{"properties":{"agent_id":{"description":"Calling agent id (or send x-agent-id header).","type":"string"},"quote_id":{"type":"string"},"reference":{"type":"string"}},"required":["quote_id"],"type":"object"},"title":"Place an order","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Order status, history, delivery links and next actions.","input_schema":{"properties":{"id":{"type":"string"}},"required":["id"],"type":"object"},"invoke":{"href":"/v1/agent/tools/get_order","method":"POST"},"name":"get_order","parameters":{"properties":{"id":{"type":"string"}},"required":["id"],"type":"object"},"title":"Get order status","type":"function"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Approve an order that exceeded an agent's mandate. Requires the principal token issued with that agent's mandate (or the operator key). Must only be invoked on explicit instruction from the human principal; an agent never holds its own principal's token.","input_schema":{"properties":{"approver":{"type":"string"},"id":{"type":"string"},"principal_token":{"type":"string"}},"required":["id","approver","principal_token"],"type":"object"},"invoke":{"href":"/v1/agent/tools/approve_order","method":"POST"},"name":"approve_order","parameters":{"properties":{"approver":{"type":"string"},"id":{"type":"string"},"principal_token":{"type":"string"}},"required":["id","approver","principal_token"],"type":"object"},"title":"Approve an order (principal)","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Given an AOI, time window and constraints, rank every source (free archive, commercial archive, tasking) by expected collections, time-to-first-data, resolution and cost, and propose a layered collection plan.","input_schema":{"properties":{"all_weather":{"description":"Require collection through cloud.","type":"boolean"},"aoi":{"description":"Area of interest: a GeoJSON Polygon/MultiPolygon/Feature, or a [west, south, east, north] bbox in WGS84 degrees.","oneOf":[{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},{"type":"object"}]},"budget_usd":{"type":"number"},"end":{"description":"Window end (default start + 72h).","format":"date-time","type":"string"},"include_commercial":{"default":true,"type":"boolean"},"include_free":{"default":true,"type":"boolean"},"intent":{"description":"Plain-language information need.","type":"string"},"license_tier":{"enum":["single-org","multi-org","government-wide","public-release"],"type":"string"},"max_gsd_m":{"description":"Maximum acceptable ground sample distance (m).","type":"number"},"max_latency_hours":{"type":"number"},"modalities":{"items":{"enum":["optical","multispectral","hyperspectral","thermal","sar","lidar","elevation","atmospheric","landcover","rf","ais","video","3d","vector"],"type":"string"},"type":"array"},"night":{"description":"Require night capability.","type":"boolean"},"start":{"description":"Window start (default now).","format":"date-time","type":"string"}},"required":["aoi"],"type":"object"},"invoke":{"href":"/v1/agent/tools/assess_coverage","method":"POST"},"name":"assess_coverage","parameters":{"properties":{"all_weather":{"description":"Require collection through cloud.","type":"boolean"},"aoi":{"description":"Area of interest: a GeoJSON Polygon/MultiPolygon/Feature, or a [west, south, east, north] bbox in WGS84 degrees.","oneOf":[{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},{"type":"object"}]},"budget_usd":{"type":"number"},"end":{"description":"Window end (default start + 72h).","format":"date-time","type":"string"},"include_commercial":{"default":true,"type":"boolean"},"include_free":{"default":true,"type":"boolean"},"intent":{"description":"Plain-language information need.","type":"string"},"license_tier":{"enum":["single-org","multi-org","government-wide","public-release"],"type":"string"},"max_gsd_m":{"description":"Maximum acceptable ground sample distance (m).","type":"number"},"max_latency_hours":{"type":"number"},"modalities":{"items":{"enum":["optical","multispectral","hyperspectral","thermal","sar","lidar","elevation","atmospheric","landcover","rf","ais","video","3d","vector"],"type":"string"},"type":"array"},"night":{"description":"Require night capability.","type":"boolean"},"start":{"description":"Window start (default now).","format":"date-time","type":"string"}},"required":["aoi"],"type":"object"},"title":"Assess coverage for a requirement (C2)","type":"function"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Task a sensor to satisfy a collection requirement. If no collection is given the best taskable option is chosen. Creates a quote and a tracked tasking request.","input_schema":{"properties":{"collection":{"type":"string"},"marking":{"type":"string"},"priority":{"enum":["standard","priority","urgent","flash"],"type":"string"},"requester":{"type":"string"},"requirement":{"properties":{"all_weather":{"description":"Require collection through cloud.","type":"boolean"},"aoi":{"description":"Area of interest: a GeoJSON Polygon/MultiPolygon/Feature, or a [west, south, east, north] bbox in WGS84 degrees.","oneOf":[{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},{"type":"object"}]},"budget_usd":{"type":"number"},"end":{"description":"Window end (default start + 72h).","format":"date-time","type":"string"},"include_commercial":{"default":true,"type":"boolean"},"include_free":{"default":true,"type":"boolean"},"intent":{"description":"Plain-language information need.","type":"string"},"license_tier":{"enum":["single-org","multi-org","government-wide","public-release"],"type":"string"},"max_gsd_m":{"description":"Maximum acceptable ground sample distance (m).","type":"number"},"max_latency_hours":{"type":"number"},"modalities":{"items":{"enum":["optical","multispectral","hyperspectral","thermal","sar","lidar","elevation","atmospheric","landcover","rf","ais","video","3d","vector"],"type":"string"},"type":"array"},"night":{"description":"Require night capability.","type":"boolean"},"start":{"description":"Window start (default now).","format":"date-time","type":"string"}},"required":["aoi"],"type":"object"}},"required":["requirement"],"type":"object"},"invoke":{"href":"/v1/agent/tools/submit_tasking","method":"POST"},"name":"submit_tasking","parameters":{"properties":{"collection":{"type":"string"},"marking":{"type":"string"},"priority":{"enum":["standard","priority","urgent","flash"],"type":"string"},"requester":{"type":"string"},"requirement":{"properties":{"all_weather":{"description":"Require collection through cloud.","type":"boolean"},"aoi":{"description":"Area of interest: a GeoJSON Polygon/MultiPolygon/Feature, or a [west, south, east, north] bbox in WGS84 degrees.","oneOf":[{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},{"type":"object"}]},"budget_usd":{"type":"number"},"end":{"description":"Window end (default start + 72h).","format":"date-time","type":"string"},"include_commercial":{"default":true,"type":"boolean"},"include_free":{"default":true,"type":"boolean"},"intent":{"description":"Plain-language information need.","type":"string"},"license_tier":{"enum":["single-org","multi-org","government-wide","public-release"],"type":"string"},"max_gsd_m":{"description":"Maximum acceptable ground sample distance (m).","type":"number"},"max_latency_hours":{"type":"number"},"modalities":{"items":{"enum":["optical","multispectral","hyperspectral","thermal","sar","lidar","elevation","atmospheric","landcover","rf","ais","video","3d","vector"],"type":"string"},"type":"array"},"night":{"description":"Require night capability.","type":"boolean"},"start":{"description":"Window start (default now).","format":"date-time","type":"string"}},"required":["aoi"],"type":"object"}},"required":["requirement"],"type":"object"},"title":"Submit a tasking request (C2)","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Status and timeline of a tasking request.","input_schema":{"properties":{"id":{"type":"string"}},"required":["id"],"type":"object"},"invoke":{"href":"/v1/agent/tools/get_tasking","method":"POST"},"name":"get_tasking","parameters":{"properties":{"id":{"type":"string"}},"required":["id"],"type":"object"},"title":"Get tasking status (C2)","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Every open-licence, non-restricted source in the fabric with its licence, required attribution and direct access endpoints (STAC APIs, S3 buckets). No commercial data.","input_schema":{"properties":{},"type":"object"},"invoke":{"href":"/v1/agent/tools/osint_sources","method":"POST"},"name":"osint_sources","parameters":{"properties":{},"type":"object"},"title":"List open (OSINT) sources","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Rank open-licence sources for an AOI and time window (past windows use open archives), with licence, attribution, access endpoints and sample scenes. Never returns commercial data or costs.","input_schema":{"properties":{"all_weather":{"type":"boolean"},"aoi":{"description":"Area of interest: a GeoJSON Polygon/MultiPolygon/Feature, or a [west, south, east, north] bbox in WGS84 degrees.","oneOf":[{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},{"type":"object"}]},"end":{"format":"date-time","type":"string"},"intent":{"type":"string"},"max_gsd_m":{"type":"number"},"modalities":{"items":{"enum":["optical","multispectral","hyperspectral","thermal","sar","lidar","elevation","atmospheric","landcover","rf","ais","video","3d","vector"],"type":"string"},"type":"array"},"night":{"type":"boolean"},"start":{"format":"date-time","type":"string"}},"required":["aoi"],"type":"object"},"invoke":{"href":"/v1/agent/tools/osint_assess","method":"POST"},"name":"osint_assess","parameters":{"properties":{"all_weather":{"type":"boolean"},"aoi":{"description":"Area of interest: a GeoJSON Polygon/MultiPolygon/Feature, or a [west, south, east, north] bbox in WGS84 degrees.","oneOf":[{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},{"type":"object"}]},"end":{"format":"date-time","type":"string"},"intent":{"type":"string"},"max_gsd_m":{"type":"number"},"modalities":{"items":{"enum":["optical","multispectral","hyperspectral","thermal","sar","lidar","elevation","atmospheric","landcover","rf","ais","video","3d","vector"],"type":"string"},"type":"array"},"night":{"type":"boolean"},"start":{"format":"date-time","type":"string"}},"required":["aoi"],"type":"object"},"title":"Assess open-data coverage (OSINT)","type":"function"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"readOnlyHint":false},"description":"Create a private watch that records new open-data acquisitions over an AOI. The returned id is the only way to read it; keep it.","input_schema":{"properties":{"aoi":{"description":"Area of interest: a GeoJSON Polygon/MultiPolygon/Feature, or a [west, south, east, north] bbox in WGS84 degrees.","oneOf":[{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},{"type":"object"}]},"max_gsd_m":{"type":"number"},"modalities":{"items":{"enum":["optical","multispectral","hyperspectral","thermal","sar","lidar","elevation","atmospheric","landcover","rf","ais","video","3d","vector"],"type":"string"},"type":"array"},"name":{"type":"string"}},"required":["aoi"],"type":"object"},"invoke":{"href":"/v1/agent/tools/create_watch","method":"POST"},"name":"create_watch","parameters":{"properties":{"aoi":{"description":"Area of interest: a GeoJSON Polygon/MultiPolygon/Feature, or a [west, south, east, north] bbox in WGS84 degrees.","oneOf":[{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},{"type":"object"}]},"max_gsd_m":{"type":"number"},"modalities":{"items":{"enum":["optical","multispectral","hyperspectral","thermal","sar","lidar","elevation","atmospheric","landcover","rf","ais","video","3d","vector"],"type":"string"},"type":"array"},"name":{"type":"string"}},"required":["aoi"],"type":"object"},"title":"Watch an AOI for new open data (OSINT)","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"A watch with its most recent open-data matches (newest first).","input_schema":{"properties":{"id":{"type":"string"}},"required":["id"],"type":"object"},"invoke":{"href":"/v1/agent/tools/get_watch","method":"POST"},"name":"get_watch","parameters":{"properties":{"id":{"type":"string"}},"required":["id"],"type":"object"},"title":"Get watch matches (OSINT)","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"Read-only SPARQL 1.1 over the full TerraFabric graph (ontology + catalog). Use PREFIX tf: <https://terrafabric.world/ont#> and tfr: <https://terrafabric.world/id/>. SELECT/ASK return SPARQL JSON results (capped at 10,000 rows, flagged truncated); CONSTRUCT/DESCRIBE return Turtle. Updates and SERVICE are refused.","input_schema":{"properties":{"query":{"maxLength":10240,"type":"string"}},"required":["query"],"type":"object"},"invoke":{"href":"/v1/agent/tools/sparql_query","method":"POST"},"name":"sparql_query","parameters":{"properties":{"query":{"maxLength":10240,"type":"string"}},"required":["query"],"type":"object"},"title":"SPARQL query over the knowledge graph","type":"function"},{"annotations":{"openWorldHint":false,"readOnlyHint":true},"description":"When will this collection's satellites next pass over an area? SGP4 propagation of public orbital elements for the open constellations (Sentinel-1/2/3/5P, Landsat, MODIS, VIIRS, ICESat-2, ISS instruments, NISAR). Optical collections mark night passes unusable. Geometry only: not every pass is imaged and cloud is not modelled. Window defaults to the next 7 days, max 14.","input_schema":{"properties":{"bbox":{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},"collection":{"type":"string"},"end":{"format":"date-time","type":"string"},"start":{"format":"date-time","type":"string"}},"required":["collection","bbox"],"type":"object"},"invoke":{"href":"/v1/agent/tools/predict_passes","method":"POST"},"name":"predict_passes","parameters":{"properties":{"bbox":{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},"collection":{"type":"string"},"end":{"format":"date-time","type":"string"},"start":{"format":"date-time","type":"string"}},"required":["collection","bbox"],"type":"object"},"title":"Predict satellite passes over an AOI","type":"function"}]}