GreenlandAI
The physical world as queryable data: companies, deposits, infrastructure, projects and commodities.
Should I use this
Quality & Safety
Findings (3)
- LOWin receipts_me
- LOWin market_accept
- LOWin market_request_rematch_withdraw
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"greenlandai": {
"url": "https://mcp.greenlandai.ai/mcp"
}
}
}Remote endpoints
https://mcp.greenlandai.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (50)
๐ขlook_from(lat, lng, entity_type, id, radius_km, ...)
Map pins near a point (lat/lng + radius_km). `entity_type` alone filters to that type; with `id` it anchors the view at that entity. Each pin carries its `source_tier` provenance. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Latitude in decimal degrees, -90 to 90 (WGS84). Use with lng, or pose on an entity instead."
},
"lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Longitude in decimal degrees, -180 to 180 (WGS84)."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Entity kind: deposit | infrastructure | company | project."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Entity id to anchor the pose on (with entity_type)."
},
"radius_km": {
"default": 100,
"description": "Search radius around the pose, in km. Default 100.",
"type": "number"
},
"energy": {
"default": false,
"description": "Include energy-fleet infrastructure (power plants and grid assets). Default false.",
"type": "boolean"
},
"include_country_centroids": {
"default": false,
"description": "Also return country-centre placeholder pins (entities known only by country). Default false.",
"type": "boolean"
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Only these keys in each row (plus id). Omit for all."
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขsignals(kind, country, limit)
The live signal cards: compiled, provenance-carrying observations (lead_lag, network, signature) with severity and the entities they name. Cards appear only while their type is armed; an answer with no cards costs nothing. Observations, not advice. Agent keys only. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "One signal family: lead_lag | network | signature. Default all three."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Two-letter ISO country code (e.g. DE); cards about entities in that country."
},
"limit": {
"default": 20,
"description": "Cards per answer, 1-50. Default 20.",
"type": "integer"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขrelationships(entity, hops, relation_type, search, limit, ...)
Labelled relationship edges (owns, operates, supplies โฆ) around ONE entity, with tier and provenance: start from entity_type + entity_id (or a name in `entity`), walk `hops` deep, filter by relation_type. `as_of` answers for a past date. An ambiguous name fails uncharged and lists the candidates. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"entity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Start entity by NAME: an exact (case-insensitive) match, else a name that contains it."
},
"hops": {
"default": 1,
"description": "Traversal depth, 1-10 (agent keys). Default 1. The billing unit: priced per hop.",
"type": "integer"
},
"relation_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Only edges with this relation label, e.g. OPERATES, CONTAINS, MEMBER_OF."
},
"search": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Free-text filter over edge text."
},
"limit": {
"default": 50,
"description": "Maximum edges to return, up to 100. Default 50.",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Rows to skip, for paging. Default 0.",
"type": "integer"
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Entity kind: deposit | infrastructure | company | project. Pins the start node with entity_id."
},
"entity_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "The start entity's numeric id (with entity_type) โ the unambiguous way to name it."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Answer for a past date: YYYY-MM-DD or a UTC datetime."
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Only these keys in each row (plus id). Omit for all."
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขnearby(lat, lng, radius_km, entity_type, limit, ...)
Entities near a location: lat + lng, radius_km, an optional entity_type, limit. Each carries `source_tier`. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"description": "Latitude in decimal degrees, -90 to 90 (WGS84). Required.",
"type": "number"
},
"lng": {
"description": "Longitude in decimal degrees, -180 to 180 (WGS84). Required.",
"type": "number"
},
"radius_km": {
"default": 100,
"description": "Search radius in km. Default 100.",
"type": "number"
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Entity kind: deposit | infrastructure | company | project. Optional filter; default all four."
},
"limit": {
"default": 20,
"description": "Maximum rows to return. Up to 100. Default 20.",
"type": "integer"
},
"include_country_centroids": {
"default": false,
"description": "Also return country-centre placeholder pins (entities known only by country). Default false.",
"type": "boolean"
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Only these keys in each row (plus id). Omit for all."
}
},
"required": [
"lat",
"lng"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขmap_viewport(min_lat, min_lng, max_lat, max_lng, entity_type, ...)
Everything inside a bounding box (min_lat, min_lng, max_lat, max_lng): the true count per type for the whole box plus a capped sample of pins. Agent keys only. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"min_lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "South edge of the bounding box (latitude). Send all four edges together."
},
"min_lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "West edge of the bounding box (longitude)."
},
"max_lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "North edge of the bounding box (latitude)."
},
"max_lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "East edge of the bounding box (longitude)."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Entity kind: deposit | infrastructure | company | project. Default all four."
},
"energy": {
"default": false,
"description": "Include energy-fleet infrastructure and projects. Default false.",
"type": "boolean"
},
"include_country_centroids": {
"default": false,
"description": "Also return country-centre placeholder pins (entities known only by country). Default false.",
"type": "boolean"
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Only these keys in each row (plus id). Omit for all."
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขlook_at(lat, lng, entity_type, id, as_of, ...)
A satellite still of a place: the newest Sentinel-2 archive image on or before `as_of`, by lat/lng or entity_type + id. Returns the JPEG plus provenance (`observed_at` is the scene's date). A cloudy or missing scene is `available:false` and costs nothing. Agent keys only. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Latitude in decimal degrees, -90 to 90 (WGS84). Use with lng, or pose on an entity instead."
},
"lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Longitude in decimal degrees, -180 to 180 (WGS84)."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Entity kind: deposit | infrastructure | company | project. With `id`, anchors the still on that entity."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Entity id to anchor on (with entity_type)."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Newest scene on or before this date, YYYY-MM-DD. Default: the newest scene."
},
"max_cloud": {
"default": 20,
"description": "Maximum cloud cover of a scene, 0-100 percent. Default 20.",
"type": "number"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขlook_through(t0, t1, max_frames, lat, lng, ...)
An ordered stack of dated Sentinel-2 stills of one site from t0 to t1, one per window (max_frames, default 6), each with its own scene date. A window with no clear scene is an explicit empty frame, not charged. Agent keys only. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"t0": {
"description": "Start of the date range, YYYY-MM-DD, on or after 2015-06-23. Required.",
"type": "string"
},
"t1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "End of the date range, YYYY-MM-DD. Default today."
},
"max_frames": {
"default": 6,
"description": "How many equal windows to cut the range into, 1-12; one still per window. Default 6.",
"type": "integer"
},
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Latitude in decimal degrees, -90 to 90 (WGS84)."
},
"lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Longitude in decimal degrees, -180 to 180 (WGS84)."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Entity kind: deposit | infrastructure | company | project."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Entity id to anchor on (with entity_type)."
},
"max_cloud": {
"default": 20,
"description": "Maximum cloud cover of a scene, 0-100 percent. Default 20.",
"type": "number"
}
},
"required": [
"t0"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขentity_history(entity_type, id)
The cheap index of one entity's dates: imagery scene dates (no images), our record's versions since record time began, and a short newest-first `what_changed` list, each item marked world time or our time. Agent keys. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"entity_type": {
"description": "Entity kind: deposit | infrastructure | company | project. Required.",
"type": "string"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "The entity's numeric id. Required."
}
},
"required": [
"entity_type",
"id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขentity_state(entity_type, id, as_of, radius_km, max_cloud)
One packet for one entity at a date (as_of): the entity as we held it then, the pins held by then, its relationships valid then, and the satellite still for that date. Charged for the parts delivered. Agent keys only. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"entity_type": {
"description": "Entity kind: deposit | infrastructure | company | project. Required.",
"type": "string"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "The entity's numeric id. Required."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The date of the packet, YYYY-MM-DD. Default today."
},
"radius_km": {
"default": 25,
"description": "Radius for the nearby pins, in km. Default 25.",
"type": "number"
},
"max_cloud": {
"default": 20,
"description": "Maximum cloud cover of a scene, 0-100 percent. For the still. Default 20.",
"type": "number"
}
},
"required": [
"entity_type",
"id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขentity_change(t0, t1, entity_type, id, lat, ...)
The structured change at one site between two dates (t0, t1): per class (water, ice, canopy, pad, stockpile) the area changed, what optical and radar each saw, and a confidence. Read `height_class` first: only repeat_surface supports a volume change. Slow (about 15โ60 s): start=true answers at once with a job_id for job_status. Agent keys only. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"t0": {
"description": "The earlier date, YYYY-MM-DD, on or after 1984-03-16. Required.",
"type": "string"
},
"t1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The later date, YYYY-MM-DD. Default today."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Entity kind: deposit | infrastructure | company | project. With id; or pass lat + lng."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "The entity's numeric id (with entity_type)."
},
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Latitude in decimal degrees, -90 to 90 (WGS84)."
},
"lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Longitude in decimal degrees, -180 to 180 (WGS84)."
},
"radius_m": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Footprint radius in metres, 50-2500, overriding the site's held footprint (else a 500 m circle)."
},
"max_cloud": {
"default": 40,
"description": "Maximum cloud cover of a scene, 0-100 percent. Default 40.",
"type": "number"
},
"same_season": {
"default": true,
"description": "For spans of 300+ days, take the t0 frame at t1's day of year. Default true.",
"type": "boolean"
},
"start": {
"default": false,
"description": "true: answer at once with a job_id (the same reservation, settled when the measurement is done)",
"type": "boolean"
}
},
"required": [
"t0"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขjob_status(job_id)
An entity_change job started with start=true: running, done (with the answer and how its reservation settled) or failed (released). Free. Only the paying wallet can read it.
Input Schema
{
"type": "object",
"properties": {
"job_id": {
"description": "The job_id an entity_change(start=true) call returned (a UUID).",
"type": "string"
}
},
"required": [
"job_id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขsite_reconstruction(entity_type, id, lat, lng, radius_m, ...)
A dated, georeferenced 3D model of a site (entity_type + id, or lat + lng) with measurements: extent, elevation, slope, pits and heaps with volumes. The tier (lidar_2m or dem_30m) is decided before any charge. Slow (about 15โ60 s). Agent keys only. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Entity kind: deposit | infrastructure | company | project. With id; or pass lat + lng."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "The entity's numeric id (with entity_type)."
},
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Latitude in decimal degrees, -90 to 90 (WGS84)."
},
"lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Longitude in decimal degrees, -180 to 180 (WGS84)."
},
"radius_m": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Half the square's side, in metres, 100-1000. Default 300."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Pick the lidar collection and texture nearest this date, YYYY-MM-DD."
},
"include_model": {
"default": false,
"description": "Also return the binary glTF model as model_glb_base64 (a lidar model is about 5 MB as base64).",
"type": "boolean"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขplace_index(lat, lng, entity_type, id, radius_km, ...)
What exists at a place, and when: dated stills, source quotes and measurements within radius_km of lat/lng or of an entity's site, newest first. Each row carries valid_on (world time) and recorded_at (our time). Filter by dates and kinds; paged. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Latitude in decimal degrees, -90 to 90 (WGS84). With lng; or name an entity."
},
"lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Longitude in decimal degrees, -180 to 180 (WGS84)."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Entity kind: deposit | infrastructure | company | project. With id, centres on that entity's site."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "The entity's numeric id (with entity_type)."
},
"radius_km": {
"default": 2,
"description": "Radius in km, up to 50. Default 2.",
"type": "number"
},
"from_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Only rows valid on or after this date, YYYY-MM-DD."
},
"to_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Only rows valid on or before this date, YYYY-MM-DD."
},
"kinds": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Comma list of row kinds: still, quote, verdict, match, measurement."
},
"entity_types": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Comma list of entity kinds to include (deposit, infrastructure, company, project)."
},
"limit": {
"default": 100,
"description": "Maximum rows to return. 1-500. Default 100.",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Rows to skip, for paging. Default 0.",
"type": "integer"
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Only these keys in each row (plus id). Omit for all."
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขcompany(id)
One company's record by id: the company, the deposits and infrastructure it operates, its relationships with tier and provenance, and `merged` when the id moved. Have only a name? Call `company_search` first. An unknown id is a 404. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "The GreenlandAI company id: a whole number (known_companies.id, e.g. \"4334\")."
}
},
"required": [
"id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขcompany_search(search, sector, country, limit, offset, ...)
Find companies by name, sector or country, to get the id that `company`, `relationships` and the entity tools take. Returns {count, total, companies[{id, name, sector, country, โฆ}]}, one page by limit and offset. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"search": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Part of the company's name (case-insensitive substring match), e.g. \"rio tinto\"."
},
"sector": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exact sector name (case-insensitive), e.g. \"mining\"."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Country as an ISO code or a name; USA, US and United States find the same companies."
},
"limit": {
"default": 50,
"description": "Maximum rows to return. Up to 100. Default 50.",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Rows to skip, for paging. Default 0.",
"type": "integer"
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Only these keys in each row (plus id). Omit for all."
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขdeposits(commodity, resource_type, country, status, owner_country, ...)
Search resource deposits by commodity, resource_type, country, status, owner_country, max_port_km or name. `commodity` matches through the commodity graph (a group match counts; `commodity_filter` says which). Returns {count, total, deposits[]}, paged. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"commodity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "A commodity name, e.g. \"neodymium\"."
},
"resource_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The deposit's primary resource label (exact, case-insensitive)."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Country as an ISO code or a name."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Deposit status, e.g. operating, development, exploration."
},
"owner_country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Country of the deposit's owners (their home states), ISO code or name."
},
"max_port_km": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Only deposits within this many km of a port."
},
"search": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Part of the deposit's name (substring)."
},
"limit": {
"default": 50,
"description": "Maximum rows to return. Up to 100. Default 50.",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Rows to skip, for paging. Default 0.",
"type": "integer"
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Only these keys in each row (plus id). Omit for all."
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขdeposit(id)
One resource deposit by id: its record, `commodities[]` ({name, role, group}) and operators. Pair with `deposits(commodity=โฆ)` to find ids. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "The deposit's numeric id (from `deposits`, a pin, or a relationship row)."
}
},
"required": [
"id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขmarket_listings(kind, frontier, resource_type, oracle_verified, active, ...)
Browse the RAREEAI marketplace: kind="providers" (listings, filterable and sorted) or "oracles". Paged.
Input Schema
{
"type": "object",
"properties": {
"kind": {
"default": "providers",
"description": "\"providers\" (marketplace listings) or \"oracles\". Default providers.",
"type": "string"
},
"frontier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Listings in this frontier only (providers)."
},
"resource_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Listings of this resource type only (providers)."
},
"oracle_verified": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Only providers that opted in to oracle verification (true) or did not (false)."
},
"active": {
"default": true,
"description": "Only active listings. Default true.",
"type": "boolean"
},
"limit": {
"default": 50,
"description": "Maximum rows to return. Up to 200. Default 50.",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Rows to skip, for paging. Default 0.",
"type": "integer"
},
"sort": {
"default": "price_asc",
"description": "Sort order, e.g. price_asc (default) or price_desc.",
"type": "string"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขmarket_match(match_id)
Read one marketplace match you are a party to: its escrow_terms, fee and timeout fields, dispute window and dispute state. For the settlement legs use `trade_settlement`.
Input Schema
{
"type": "object",
"properties": {
"match_id": {
"description": "The marketplace match id (UUID). You must be a party to it.",
"type": "string"
}
},
"required": [
"match_id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขmarket_quote(request_id)
Read one marketplace REQUEST you own, by id: its terms, status and units matched, plus the generic `escrow_terms`. A trade's own fee and deadlines are on the match โ read them with `market_match`.
Input Schema
{
"type": "object",
"properties": {
"request_id": {
"description": "The marketplace REQUEST id (UUID) you posted with `market_request`.",
"type": "string"
}
},
"required": [
"request_id"
]
}Output Schema
{
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"wallet_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"agent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"frontier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"resource_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"unit_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"speed": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"privacy_mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"contract_escrow": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"units_needed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"max_price_per_unit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"priority": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"requirements": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"units_matched": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"escrow_terms": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"target_provider_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"rematch_max_price_per_unit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"rematch_until": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"rematch_max_total_joules": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขjoules_balance(wallet_id)
Your own wallet balance, free. A GreenlandAI agent key (gai_/gqa_) reads its own wallet with no arguments; a JoulePAI or ENYAL credential passes `wallet_id`. The graph meter debits this same wallet.
Input Schema
{
"type": "object",
"properties": {
"wallet_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Wallet id (UUID) to read"
}
}
}Output Schema
{
"type": "object",
"properties": {
"balance": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"balance_joules": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"wallet_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"agent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"agent_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"owner_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"verification_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขbilling_quote(path, hops, lat, lng, entity_type, ...)
The exact price of a metered call for YOU, before you make it โ free. `path` = the API path the tool hits (e.g. /api/v1/relationships, with hops). Fund `joules_all_in`, the true debit. The quote says when it is a maximum and when an empty answer is free.
Input Schema
{
"type": "object",
"properties": {
"path": {
"description": "The API path the call would hit, e.g. \"/api/v1/relationships\", \"/api/v1/look.from\", \"/api/v1/companies/{id}\" โฆ",
"type": "string"
},
"hops": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Graph depth for a relationships path (an agent key up to 10)."
},
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Latitude in decimal degrees, -90 to 90 (WGS84)."
},
"lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Longitude in decimal degrees, -180 to 180 (WGS84)."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Entity kind: deposit | infrastructure | company | project. Alternative to lat/lng for a site."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Entity id (with entity_type) for a site."
},
"radius_m": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "site.reconstruction square half-side in metres."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "site.reconstruction date, YYYY-MM-DD."
}
},
"required": [
"path"
]
}Output Schema
{
"type": "object",
"properties": {
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"query_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"hops": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"billed_hops": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"rate_per_hop": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"refund_on_empty": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"quote_is_maximum": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"partial_refund_note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"pricing_tier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"joules": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"rail_fee_joules": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"joules_all_in": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pricing_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"peg": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"receipt_offer": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"receipt": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"joules_with_receipt": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"joules_with_receipt_all_in": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขreceipts_me
Receipts for your key: whether THIS key is opted in to a receipt with each paid graph answer, and how its owner turns them on. Free.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"agent_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"caller": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"receipt_offer": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"what_a_receipt_is": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขbilling_attempts(limit, offset)
YOUR OWN charge record, attempt by attempt (your own wallet, from your credential): each attempt's status (pending, completed, settled_zero, failed, refunded โฆ), reserved vs settled joules, and the attempt_id to match a call's `metering.attempt_id`. Paged with limit and offset.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Maximum rows to return. 1-200. Default 50."
},
"offset": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Rows to skip, for paging. Default 0."
}
}
}Output Schema
{
"type": "object",
"properties": {
"items": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
]
},
"count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"wallet_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"statuses": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขverify_proof(identifier)
Look up one identifier (a chunk, proof, match or transfer id, or a BSV txid) in ENYAL's public verify lookup; its verdict fields come back unchanged. Only `chain_confirmed:true` is a verified anchor; `degraded:true` means inconclusive, not absent. No auth.
Input Schema
{
"type": "object",
"properties": {
"identifier": {
"description": "The id to look up: a chunk_id, proof_id, match_id or transfer id (UUID), or a BSV transaction id (64 hex).",
"type": "string"
}
},
"required": [
"identifier"
]
}Output Schema
{
"type": "object",
"properties": {
"found": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"results": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
]
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"recorded": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"degraded": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"unavailable_sources": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"chain_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"chain_confirmed": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขledger_verify
Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at each anchor โ public, no auth. Independently checkable.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"anchors": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
]
},
"total": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"eras": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"chain_semantics": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"coverage": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"hash_format": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขtransparency_latest
The latest hourly public transparency attestation: a Merkle root over every wallet balance, the verified total supply and the Bridge Ledger root, with the anchoring BSV txid ("pending" until broadcast; `last_anchored` names the newest anchored one). No auth.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"merkle_root": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total_supply": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"supply_verified": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"tx_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"volume": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"fees": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"state_root": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bsv_txid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"timestamp": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"wallet_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"algorithm_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bridge_root": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bridge_rows": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"settlement_root": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settlement_leaves": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"anchoring": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"last_anchored": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขbalance_proof
Inclusion proof for YOUR wallet balance in the latest hourly transparency attestation: leaf hash, Merkle path, root, the anchoring BSV txid ("pending" until the batch is broadcast) and how to verify it. No arguments: the wallet is the one your credential owns.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขbridge_proof
Inclusion proofs for YOUR Bridge Ledger rows (contribution and fee events): per-row leaf hash, Merkle path, bridge_root and the anchoring BSV txid ("pending" until the hourly batch is broadcast). No arguments: scoped to your credential.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"additionalProperties": true
}โชmarket_request_rematch(request_id)
Match one of YOUR open requests now. Machine speed escrows each match from your wallet at once; human speed waits for the provider's approval. A 409 when the request is no longer open.
Input Schema
{
"type": "object",
"properties": {
"request_id": {
"description": "Your open marketplace REQUEST id (UUID).",
"type": "string"
}
},
"required": [
"request_id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}โชmarket_request_rematch_withdraw(request_id)
Withdraw a request's automatic re-matching consent now (DELETE /api/v1/marketplace/request/{id}/rematch). Matches already escrowed stay as they are.
Input Schema
{
"type": "object",
"properties": {
"request_id": {
"description": "Your marketplace REQUEST id (UUID).",
"type": "string"
}
},
"required": [
"request_id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ดmarket_provide(body)
Create or update a marketplace listing (verified account, marketplace:write). Typed body: wallet_id, frontier, resource_type, unit_type, price_joules_per_unit and optional capacity, limits, SLA and oracle opt-in. A first-time registration carries a one-time fee.
Input Schema
{
"type": "object",
"properties": {
"body": {
"$ref": "#/$defs/ProvideBody",
"description": "The listing; each field is described in its schema."
}
},
"required": [
"body"
],
"$defs": {
"ProvideBody": {
"additionalProperties": false,
"properties": {
"wallet_id": {
"description": "your wallet UUID: it pays the registration fee and receives payouts",
"type": "string"
},
"frontier": {
"description": "the marketplace frontier the listing is in",
"type": "string"
},
"resource_type": {
"description": "the resource type you sell",
"type": "string"
},
"unit_type": {
"description": "the unit the price is per",
"type": "string"
},
"price_joules_per_unit": {
"description": "your price in joules per unit, a whole number >= 0",
"minimum": 0,
"type": "integer"
},
"capacity_total": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "total units you can supply"
},
"min_units": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "the smallest match you accept, in units"
},
"max_units_per_match": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "the largest single match, in units"
},
"endpoint_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "where buyers reach your service"
},
"sla": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"description": "your service-level terms, as a JSON object"
},
"speed": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "delivery speed class, per the RAREEAI docs"
},
"timeout_hours": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "delivery deadline in hours (or use timeout_minutes)"
},
"timeout_minutes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "delivery deadline in minutes (or use timeout_hours)"
},
"stake_amount": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "joules you stake on the listing"
},
"oracle_verified": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "opt IN to oracle verification of your deliveries (a preference, not a badge)"
},
"idempotency_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "your own opaque key: the same key and body is one listing change, never two"
}
},
"required": [
"wallet_id",
"frontier",
"resource_type",
"unit_type",
"price_joules_per_unit"
],
"type": "object"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐กmarket_request(body)
Post a marketplace BUY request (verified account, marketplace:write): wallet_id, frontier, resource_type, unit_type, units_needed, max_price_per_unit and options. Escrow is debited on match. A physical trade must carry `physical_claim` (the site and dates).
Input Schema
{
"type": "object",
"properties": {
"body": {
"$ref": "#/$defs/RequestBody",
"description": "The buy request; each field is described in its schema."
}
},
"required": [
"body"
],
"$defs": {
"PhysicalClaimBody": {
"additionalProperties": false,
"properties": {
"kind": {
"description": "physical_change: something changed at the site between t0 and t1 ยท physical_state: the site shows something โฆ",
"enum": [
"physical_change",
"physical_state"
],
"type": "string"
},
"site_lat": {
"description": "the site's latitude, decimal degrees",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"site_lng": {
"description": "the site's longitude, decimal degrees",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"site_entity_type": {
"anyOf": [
{
"enum": [
"deposit",
"infrastructure",
"company",
"project"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "the GreenlandAI entity at the site, if any"
},
"site_entity_id": {
"anyOf": [
{
"maxLength": 64,
"type": "string"
},
{
"type": "null"
}
],
"description": "that entity's id"
},
"t0": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "YYYY-MM-DD; required for physical_change, before t1, on or after 1984-03-16"
},
"t1": {
"description": "YYYY-MM-DD",
"type": "string"
},
"radius_m": {
"anyOf": [
{
"maximum": 2500,
"minimum": 50,
"type": "number"
},
{
"type": "null"
}
],
"description": "the site's radius in metres, 50-2500"
}
},
"required": [
"kind",
"site_lat",
"site_lng",
"t1"
],
"type": "object"
},
"RematchBody": {
"additionalProperties": false,
"properties": {
"max_price_per_unit": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"description": "the most a background re-match may pay a unit: 1 .. the request's own max_price_per_unit (default: that โฆ"
},
"window_seconds": {
"anyOf": [
{
"maximum": 86400,
"minimum": 300,
"type": "integer"
},
{
"type": "null"
}
],
"description": "how long the consent lasts, 300-86400 s (default 86400)"
}
},
"type": "object"
},
"RequestBody": {
"additionalProperties": false,
"properties": {
"wallet_id": {
"description": "your wallet UUID: it pays the escrow when the request matches",
"type": "string"
},
"frontier": {
"description": "the marketplace frontier to buy in",
"type": "string"
},
"resource_type": {
"description": "what you want to buy",
"type": "string"
},
"unit_type": {
"description": "the unit you buy in (the provider's unit_type)",
"type": "string"
},
"units_needed": {
"description": "how many units, a whole number > 0",
"exclusiveMinimum": 0,
"type": "integer"
},
"max_price_per_unit": {
"description": "the most you pay per unit, in joules, a whole number > 0",
"exclusiveMinimum": 0,
"type": "integer"
},
"priority": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "matching priority, per the RAREEAI docs"
},
"requirements": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"description": "extra requirements for providers, as a JSON object"
},
"ttl_seconds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "seconds until the request expires unmatched"
},
"speed": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "the delivery speed class you want, per the RAREEAI docs"
},
"privacy_mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "the request's privacy mode, per the RAREEAI docs"
},
"contract_escrow": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "opt in to the on-chain escrow contract lane (a flat contract fee added to your lock)."
},
"physical_claim": {
"anyOf": [
{
"$ref": "#/$defs/PhysicalClaimBody"
},
{
"type": "null"
}
],
"description": "REQUIRED for resource_type scene_stack, change_report, site_reconstruction or satellite_imagery (refused โฆ"
},
"idempotency_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "your own opaque key: the same key and body is one request, never two"
},
"provider_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "the listing to buy from: a provider id from market_listings (kind providers)."
},
"rematch": {
"anyOf": [
{
"$ref": "#/$defs/RematchBody"
},
{
"type": "null"
}
],
"description": "MACHINE speed only: allow automatic re-matching if a match on this request ends without delivery, within โฆ"
}
},
"required": [
"wallet_id",
"frontier",
"resource_type",
"unit_type",
"units_needed",
"max_price_per_unit"
],
"type": "object"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ดmarket_accept(match_id, idempotency_key)
Accept a delivery on a match (POST /match/{id}/accept) โ releases escrow to the provider. You must be the buyer party; the backend enforces it.
Input Schema
{
"type": "object",
"properties": {
"match_id": {
"description": "The marketplace match id (UUID). You must be its buyer.",
"type": "string"
},
"idempotency_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Your own opaque key: the same key accepts once, never twice."
}
},
"required": [
"match_id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ดwallet_transfer(body)
A direct wallet-to-wallet transfer (wallet:transfer scope). An agent wallet may send only to a registered destination; limits are live config, not constants. Typed body: from_wallet_id, to_wallet_id or to_handle, amount and options. A transfer fee is charged to the sender.
Input Schema
{
"type": "object",
"properties": {
"body": {
"$ref": "#/$defs/TransferBody",
"description": "The transfer; each field is described in its schema."
}
},
"required": [
"body"
],
"$defs": {
"TransferBody": {
"additionalProperties": false,
"properties": {
"from_wallet_id": {
"description": "sender wallet UUID (must be yours)",
"type": "string"
},
"to_wallet_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "recipient wallet UUID; send this or to_handle"
},
"to_handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "recipient handle instead of a wallet id"
},
"amount": {
"description": "joules to send, a whole number > 0 (the transfer fee is charged to the sender on top)",
"exclusiveMinimum": 0,
"type": "integer"
},
"platform": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "the platform the transfer is made for, recorded on the transfer"
},
"note": {
"anyOf": [
{
"maxLength": 500,
"type": "string"
},
{
"type": "null"
}
],
"description": "a note recorded with the transfer, up to 500 characters"
},
"idempotency_key": {
"anyOf": [
{
"maxLength": 128,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"description": "your own opaque key, 1-128 characters: the same key and body is one transfer, never two."
},
"privacy_mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "the transfer's privacy mode, per the JoulePAI docs"
},
"include_proof": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "also return the transfer's proof in the response"
},
"registration_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending service registration id for an agent-class quoted transfer"
}
},
"required": [
"from_wallet_id",
"amount"
],
"type": "object"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขjoules_deficit(cost, wallet_id)
Can you afford the next call? Give a planned `cost`; returns {needed, have, shortfall, tool_to_call_next}. Free. Agent keys read their own wallet; a JoulePAI or ENYAL credential may pass `wallet_id`.
Input Schema
{
"type": "object",
"properties": {
"cost": {
"description": "The joules the next call will cost (its joules_all_in from billing_quote).",
"type": "integer"
},
"wallet_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Wallet to read (UUID); omit to use your own. Not used with a GreenlandAI agent key."
}
},
"required": [
"cost"
]
}Output Schema
{
"type": "object",
"properties": {
"needed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"have": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"shortfall": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"tool_to_call_next": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขfunding_prepare(needed)
The in-band funding step for a joule shortfall: your own USDC-on-Base deposit address and the live minimum, read from the running system. It moves no money; track the deposit with `funding_status`.
Input Schema
{
"type": "object",
"properties": {
"needed": {
"default": 0,
"description": "The joules you are short (the shortfall from joules_deficit or a 402). Default 0.",
"type": "integer"
}
}
}Output Schema
{
"type": "object",
"properties": {
"wallet_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"needed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"in_band_agent_funding_live": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"routes": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขfunding_status
YOUR OWN USDC-on-Base deposit state: credited, or held (below the minimum, above the maximum, or waiting for platform funding) โ nothing is lost while held. From your credential, no arguments.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"usdc_live": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"scanner_cursor_block": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"minimum_usdc": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"deposits": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
]
},
"held_below_min_total_usdc": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"needed_to_credit_usdc": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}๐ขtrade_settlement(match_id)
YOUR OWN trade's settlement, as buyer or seller: every leg (payout, fees, refunds) with its role, amount, ledger status and on-chain anchor state, plus the escrow contract's legs when there is one. A 404 means you were not a party.
Input Schema
{
"type": "object",
"properties": {
"match_id": {
"description": "The marketplace match id (UUID). You must have been its buyer or seller.",
"type": "string"
}
},
"required": [
"match_id"
]
}Output Schema
{
"type": "object",
"properties": {
"match_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"your_role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"leg_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"all_anchored": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"legs": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
]
},
"contract": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
},
"dispute": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}โชoracle_register(body)
Register as a RAREEAI oracle by staking joules (invite-only at launch; a wallet not yet invited is told how to apply). Body: wallet_id, specialisations (1โ7 from a fixed list) and stake_amount. The stake is returned when you deregister.
Input Schema
{
"type": "object",
"properties": {
"body": {
"$ref": "#/$defs/OracleRegisterBody",
"description": "The registration; each field is described in its schema."
}
},
"required": [
"body"
],
"$defs": {
"OracleRegisterBody": {
"additionalProperties": false,
"properties": {
"wallet_id": {
"description": "your wallet UUID: it holds the stake",
"type": "string"
},
"specialisations": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "1 to 7 values from exactly: code, translation, data, general, content, research, infrastructure"
},
"stake_amount": {
"description": "joules to stake, at least 10,000; refundable on deregister",
"minimum": 10000,
"type": "integer"
}
},
"required": [
"wallet_id",
"stake_amount"
],
"type": "object"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขoracle_assignments(status, limit)
List YOUR oracle assignments: each delivery to assess, with its match_id, deadline, the fee earned and your verdict if already given. Optional status filter and limit.
Input Schema
{
"type": "object",
"properties": {
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Only assignments in this status."
},
"limit": {
"default": 50,
"description": "Maximum rows to return. 1-200. Default 50.",
"type": "integer"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ดoracle_assess(match_id, body)
Post your verdict on a delivery you were assigned: verdict (valid or invalid), quality_score 0-100, notes, an optional execution_trace. A low score opens a dispute. A 409 means the match has moved on โ do not retry; read the match.
Input Schema
{
"type": "object",
"properties": {
"match_id": {
"description": "The marketplace match id (UUID). One you are assigned to assess.",
"type": "string"
},
"body": {
"$ref": "#/$defs/OracleAssessBody",
"description": "Your verdict; each field is described in its schema."
}
},
"required": [
"match_id",
"body"
],
"$defs": {
"OracleAssessBody": {
"additionalProperties": false,
"properties": {
"verdict": {
"description": "valid or invalid: was the delivery what was bought",
"enum": [
"valid",
"invalid"
],
"type": "string"
},
"quality_score": {
"description": "0-100; below 40 opens a dispute automatically",
"maximum": 100,
"minimum": 0,
"type": "integer"
},
"notes": {
"anyOf": [
{
"maxLength": 2000,
"type": "string"
},
{
"type": "null"
}
],
"description": "your reasons, up to 2,000 characters"
},
"execution_trace": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"description": "how you verified the delivery, as a JSON object"
}
},
"required": [
"verdict",
"quality_score"
],
"type": "object"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ดoracle_deregister(wallet_id)
Deregister as an oracle and get your stake back from escrow (less anything slashed). `wallet_id` is required. Fails while you have pending assessments.
Input Schema
{
"type": "object",
"properties": {
"wallet_id": {
"description": "Your oracle wallet's UUID (the one that holds the stake).",
"type": "string"
}
},
"required": [
"wallet_id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐กcontribute_relations(relations, entities)
Submit evidenced graph relationships to the contributor door (TEN programme). Each relation needs subject, relation, object, a real source_url and a verbatim quote from it. Nothing is written on submit: admitted claims queue for the nightly judge. Send your enabled gai_ key as X-API-Key.
Input Schema
{
"type": "object",
"properties": {
"relations": {
"description": "The relationships to submit.",
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"entities": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "New entities proposed alongside a relation that references them; never accepted on their own."
}
},
"required": [
"relations"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขcontribute_stats
Your OWN contributor standing: submitted, accepted and rejected totals, acceptance rate, pending review and standing (good, warning, suspended, revoked). Send your enabled gai_ key as X-API-Key.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขcontribute_submissions(limit, offset)
Your OWN per-item submission outcomes: pending_review, accepted or rejected, with the judge's reason verbatim and what was promoted. Send your enabled gai_ key as X-API-Key. Paged.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"default": 50,
"description": "Maximum rows to return. Default 50.",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Rows to skip, for paging. Default 0.",
"type": "integer"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขcontribute_receipts(limit, offset)
Your OWN append-only contribution receipts, each with its canonical claim hash (claim_sha256), so you can check the door holds what you sent. Send your enabled gai_ key as X-API-Key. Paged.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"default": 50,
"description": "Maximum rows to return. Default 50.",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Rows to skip, for paging. Default 0.",
"type": "integer"
}
}
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขtool_guide(tool)
The full guide for one tool, free and not metered: its complete description (edge cases, every rule, examples), every parameter's full description and the fields it returns. Each tool's listed description is its short contract; read this when you need the rest.
Input Schema
{
"type": "object",
"properties": {
"tool": {
"description": "A tool name from tools/list, e.g. relationships.",
"type": "string"
}
},
"required": [
"tool"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขcompany_profile(id, hops, include_raw, fields)
company + relationships + entity_history for one company in ONE call, billed exactly as the three would be, with one charged_joules total. Lean by default; include_raw for everything. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "The company id (from company_search, a pin or a relationship row)."
},
"hops": {
"default": 1,
"description": "Relationship depth, 1-10. Default 1.",
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"include_raw": {
"default": false,
"description": "Return every part whole. Default false.",
"type": "boolean"
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Only these keys in each row (plus id). Omit for all."
}
},
"required": [
"id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}๐ขdeposit_brief(id, hops, include_raw, fields)
deposit + relationships + entity_history for one deposit in ONE call, billed exactly as the three would be, with one charged_joules total. Lean by default; include_raw for everything. Metered: see CHARGING in the server instructions; quote first with `billing_quote`.
Input Schema
{
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "The deposit id (from deposits, a pin or a relationship row)."
},
"hops": {
"default": 1,
"description": "Relationship depth, 1-10. Default 1.",
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"include_raw": {
"default": false,
"description": "Return every part whole. Default false.",
"type": "boolean"
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Only these keys in each row (plus id). Omit for all."
}
},
"required": [
"id"
]
}Output Schema
{
"type": "object",
"additionalProperties": true
}Recommended Prompts
market_listingsmarket_listingsCommunity
Evidence