Koskamo

GreenlandAI MCP

An MCP server providing access to GreenlandAI's physical world data, including companies, resource deposits, infrastructure, projects, and commodities. It supports graph traversal across supply chains and ownership, allowing agents to query real-world entities and relationships with per-call metering.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

GreenlandAI MCP logo, by Greenland AI LimitedVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Greenland AI Limited
You need:an ENYAL eyl_ bearer or a product API key
MCP endpoint (Streamable HTTP)
https://mcp.greenlandai.ai/mcp
Vendor documentation

What its tools do

50 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

50 of 50 have a description · 50 of 50 declare behavior hints · 43 of 43 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to greenlandai.ai ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Query real-world data on companies and infrastructure
  • Traverse supply chains and ownership graphs
  • Access commodity and project information
  • Execute agent actions in the physical economy

Source and maintenance

Vendor evidenceRegistry 0.8.0

Protocol and capabilities

Server
GreenlandAI 0.8.0+531f321
MCP protocol negotiated in check
2025-11-25
Tools
50 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "experimental": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

GreenlandAI — the command centre for the machine economy: ONE keyless MCP endpoint over the live GreenlandAI / JoulePAI / RAREEAI / ENYAL surface (the world graph — companies, resource deposits, infrastructure, projects and commodities, with the relationships between them — and the map; the RAREEAI marketplace + oracle network; wallets; on-chain verification). ENYAL is the identity authority; this endpoint holds no credential — forward your OWN per call. An ENYAL OAuth access token (`eyl_` followed by a JWT, sent as Bearer) works across ALL products; an API key is product-specific (an ENYAL `eyl_` API key is an ENYAL key, a JoulePAI key does not reach the graph, a GreenlandAI key does not reach wallet/marketplace). Send it as Authorization (Bearer `eyl_...`) or X-API-Key; the backend applies auth, scope, ownership and metering. Reads are metered against the CALLING agent's OWN wallet (not the owner's) — read it FREE with the `joules_balance` tool (a GreenlandAI agent key `gai_`/`gqa_` reads its own balance; a `jlp_`/`eyl_` credential reads by wallet_id). CHARGING (one place for every tool that says "Metered"): PRICES come from the API, never from this text — call `billing_quote` (free) with the path for YOUR exact price; it returns `joules` (base), `rail_fee_joules` and `joules_all_in`, the true debit. The bands (greenlandai-api joule_metering.QUERY_PRICING / PER_HOP_JOULES / TX_FEE_RATE): a list, search, nearby, look_from, map_viewport, entity_history or place_index call is the basic class; one entity's record (company, deposit) is the standard class; relationships is priced PER HOP; look_at is its own still price; look_through is that still price per frame; entity_change is two stills; entity_state is its three parts' prices; site_reconstruction is per tier (look/reconstruct_build.RECONSTRUCTION_PRICE_JOULES). The debit is the base plus a 0.5% rail surcharge rounded up (a 100 J call debits 101 J). Metering RESERVES before the call runs and SETTLES after for what was delivered: an empty result settles to zero; a partial traversal settles for the hops delivered; a look_through settles for the frames delivered; a 4xx, 5xx or server exception RELEASES the reservation (nothing charged). A call the backend has already answered SETTLES even if you disconnect or time out — the work was done. Every tool call through THIS server carries its own fresh idempotency key, so calling a tool again is a NEW charge (a cached free replay needs the same credential + key + request within 15 minutes, which only a direct API caller sending its own key gets). WHAT YOU PAID: every metered JSON response carries a top-level `charged_joules` (the all-in PRICE) and a `metering` block written after the settle — {attempt_id, settlement, settled_joules, check}; `metering.settlement` is whether you PAID: settled · settled_zero (empty, nothing moved) · settle_failed (delivered but unpaid — the wallet is locked and the next metered call 402s naming the attempt and what clears it) · released (nothing moved) · unknown; `settled_joules` is what left your wallet. Check every charge yourself with `billing_attempts` (own wallet: reserved vs settled per attempt). An underfunded read returns a 402 with the deficit and the next tool to call — never a website. A GreenlandAI agent funds its OWN wallet with USDC on Base at its own address (GET /api/v1/agent/me/deposit-address with the agent key; `funding_prepare` gives it, `funding_status` tracks it) or is funded by its OWNER (POST /api/v1/agents/{agent_id}/fund with the owner's session). Starting from no account: one email verification done by API (no browser), at least 5 USDC on Base, then unattended — the seven steps are in greenlandai.ai/llms.txt (Cold start). A read past the daily cap your OWNER set for you returns a 402 `owner_cap_reached` (or `owner_allowance_required`) instead: not a shortfall, funding does not lift it, nothing is charged; it clears at 00:00 UTC or when the owner acts. ANNOTATIONS: read-only tools change nothing but your own metered debit; the 8 write tools (market_provide, market_request, market_accept, wallet_transfer, oracle_register, oracle_assess, oracle_deregister, contribute_relations) are marked readOnlyHint false, and those that move money or cast a verdict are destructive. Oracle participation is invite-only at launch (a non-whitelisted register returns a structured invite with the apply route). A verify result is ENYAL's index answer, not itself an on-chain proof. Each tool's description is its short contract; `tool_guide` (free, with the tool's name) returns its full guide: every rule and edge case, every parameter in full and the fields it returns.

Tools

50 advertised

look_from
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

look_from input schema
{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity id to anchor the pose on (with entity_type)."
    },
    "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)."
    },
    "energy": {
      "type": "boolean",
      "default": false,
      "description": "Include energy-fleet infrastructure (power plants and grid assets). Default false."
    },
    "fields": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Only these keys in each row (plus id). Omit for all."
    },
    "radius_km": {
      "type": "number",
      "default": 100,
      "description": "Search radius around the pose, in km. Default 100."
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity kind: deposit | infrastructure | company | project."
    },
    "include_country_centroids": {
      "type": "boolean",
      "default": false,
      "description": "Also return country-centre placeholder pins (entities known only by country). Default false."
    }
  }
}
look_from output schema
{
  "type": "object",
  "additionalProperties": true
}
look_from annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
signals
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

signals input schema
{
  "type": "object",
  "properties": {
    "kind": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "One signal family: lead_lag | network | signature. Default all three."
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "description": "Cards per answer, 1-50. Default 20."
    },
    "country": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Two-letter ISO country code (e.g. DE); cards about entities in that country."
    }
  }
}
signals output schema
{
  "type": "object",
  "additionalProperties": true
}
signals annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
relationships
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

relationships input schema
{
  "type": "object",
  "properties": {
    "hops": {
      "type": "integer",
      "default": 1,
      "description": "Traversal depth, 1-10 (agent keys). Default 1. The billing unit: priced per hop."
    },
    "as_of": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Answer for a past date: YYYY-MM-DD or a UTC datetime."
    },
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Maximum edges to return, up to 100. Default 50."
    },
    "entity": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Start entity by NAME: an exact (case-insensitive) match, else a name that contains it."
    },
    "fields": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Only these keys in each row (plus id). Omit for all."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "Rows to skip, for paging. Default 0."
    },
    "search": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Free-text filter over edge text."
    },
    "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."
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity kind: deposit | infrastructure | company | project. Pins the start node with entity_id."
    },
    "relation_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Only edges with this relation label, e.g. OPERATES, CONTAINS, MEMBER_OF."
    }
  }
}
relationships output schema
{
  "type": "object",
  "additionalProperties": true
}
relationships annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
nearby
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

nearby input schema
{
  "type": "object",
  "required": [
    "lat",
    "lng"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "description": "Latitude in decimal degrees, -90 to 90 (WGS84). Required."
    },
    "lng": {
      "type": "number",
      "description": "Longitude in decimal degrees, -180 to 180 (WGS84). Required."
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "description": "Maximum rows to return. Up to 100. Default 20."
    },
    "fields": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Only these keys in each row (plus id). Omit for all."
    },
    "radius_km": {
      "type": "number",
      "default": 100,
      "description": "Search radius in km. Default 100."
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity kind: deposit | infrastructure | company | project. Optional filter; default all four."
    },
    "include_country_centroids": {
      "type": "boolean",
      "default": false,
      "description": "Also return country-centre placeholder pins (entities known only by country). Default false."
    }
  }
}
nearby output schema
{
  "type": "object",
  "additionalProperties": true
}
nearby annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
map_viewport
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

map_viewport input schema
{
  "type": "object",
  "properties": {
    "energy": {
      "type": "boolean",
      "default": false,
      "description": "Include energy-fleet infrastructure and projects. Default false."
    },
    "fields": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Only these keys in each row (plus id). Omit for all."
    },
    "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)."
    },
    "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)."
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity kind: deposit | infrastructure | company | project. Default all four."
    },
    "include_country_centroids": {
      "type": "boolean",
      "default": false,
      "description": "Also return country-centre placeholder pins (entities known only by country). Default false."
    }
  }
}
map_viewport output schema
{
  "type": "object",
  "additionalProperties": true
}
map_viewport annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
look_at
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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`.

look_at input schema
{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity id to anchor on (with entity_type)."
    },
    "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)."
    },
    "as_of": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Newest scene on or before this date, YYYY-MM-DD. Default: the newest scene."
    },
    "max_cloud": {
      "type": "number",
      "default": 20,
      "description": "Maximum cloud cover of a scene, 0-100 percent. Default 20."
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity kind: deposit | infrastructure | company | project. With `id`, anchors the still on that entity."
    }
  }
}
look_at output schema
{
  "type": "object",
  "additionalProperties": true
}
look_at annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
look_through
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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`.

look_through input schema
{
  "type": "object",
  "required": [
    "t0"
  ],
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity id to anchor on (with entity_type)."
    },
    "t0": {
      "type": "string",
      "description": "Start of the date range, YYYY-MM-DD, on or after 2015-06-23. Required."
    },
    "t1": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "End of the date range, YYYY-MM-DD. Default today."
    },
    "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)."
    },
    "max_cloud": {
      "type": "number",
      "default": 20,
      "description": "Maximum cloud cover of a scene, 0-100 percent. Default 20."
    },
    "max_frames": {
      "type": "integer",
      "default": 6,
      "description": "How many equal windows to cut the range into, 1-12; one still per window. Default 6."
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity kind: deposit | infrastructure | company | project."
    }
  }
}
look_through output schema
{
  "type": "object",
  "additionalProperties": true
}
look_through annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
entity_history
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

entity_history input schema
{
  "type": "object",
  "required": [
    "entity_type",
    "id"
  ],
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "The entity's numeric id. Required."
    },
    "entity_type": {
      "type": "string",
      "description": "Entity kind: deposit | infrastructure | company | project. Required."
    }
  }
}
entity_history output schema
{
  "type": "object",
  "additionalProperties": true
}
entity_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
entity_state
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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`.

entity_state input schema
{
  "type": "object",
  "required": [
    "entity_type",
    "id"
  ],
  "properties": {
    "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."
    },
    "max_cloud": {
      "type": "number",
      "default": 20,
      "description": "Maximum cloud cover of a scene, 0-100 percent. For the still. Default 20."
    },
    "radius_km": {
      "type": "number",
      "default": 25,
      "description": "Radius for the nearby pins, in km. Default 25."
    },
    "entity_type": {
      "type": "string",
      "description": "Entity kind: deposit | infrastructure | company | project. Required."
    }
  }
}
entity_state output schema
{
  "type": "object",
  "additionalProperties": true
}
entity_state annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
entity_change
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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`.

entity_change input schema
{
  "type": "object",
  "required": [
    "t0"
  ],
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "The entity's numeric id (with entity_type)."
    },
    "t0": {
      "type": "string",
      "description": "The earlier date, YYYY-MM-DD, on or after 1984-03-16. Required."
    },
    "t1": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "The later date, YYYY-MM-DD. Default today."
    },
    "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)."
    },
    "start": {
      "type": "boolean",
      "default": false,
      "description": "true: answer at once with a job_id (the same reservation, settled when the measurement is done)"
    },
    "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": {
      "type": "number",
      "default": 40,
      "description": "Maximum cloud cover of a scene, 0-100 percent. Default 40."
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity kind: deposit | infrastructure | company | project. With id; or pass lat + lng."
    },
    "same_season": {
      "type": "boolean",
      "default": true,
      "description": "For spans of 300+ days, take the t0 frame at t1's day of year. Default true."
    }
  }
}
entity_change output schema
{
  "type": "object",
  "additionalProperties": true
}
entity_change annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
job_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

job_status input schema
{
  "type": "object",
  "required": [
    "job_id"
  ],
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job_id an entity_change(start=true) call returned (a UUID)."
    }
  }
}
job_status output schema
{
  "type": "object",
  "additionalProperties": true
}
job_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
site_reconstruction
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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`.

site_reconstruction input schema
{
  "type": "object",
  "properties": {
    "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)."
    },
    "as_of": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Pick the lidar collection and texture nearest this date, YYYY-MM-DD."
    },
    "radius_m": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "Half the square's side, in metres, 100-1000. Default 300."
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity kind: deposit | infrastructure | company | project. With id; or pass lat + lng."
    },
    "include_model": {
      "type": "boolean",
      "default": false,
      "description": "Also return the binary glTF model as model_glb_base64 (a lidar model is about 5 MB as base64)."
    }
  }
}
site_reconstruction output schema
{
  "type": "object",
  "additionalProperties": true
}
site_reconstruction annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
place_index
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

place_index input schema
{
  "type": "object",
  "properties": {
    "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). With lng; or name an entity."
    },
    "lng": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "Longitude in decimal degrees, -180 to 180 (WGS84)."
    },
    "kinds": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Comma list of row kinds: still, quote, verdict, match, measurement."
    },
    "limit": {
      "type": "integer",
      "default": 100,
      "description": "Maximum rows to return. 1-500. Default 100."
    },
    "fields": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Only these keys in each row (plus id). Omit for all."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "Rows to skip, for paging. Default 0."
    },
    "to_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Only rows valid on or before this date, YYYY-MM-DD."
    },
    "from_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Only rows valid on or after this date, YYYY-MM-DD."
    },
    "radius_km": {
      "type": "number",
      "default": 2,
      "description": "Radius in km, up to 50. Default 2."
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity kind: deposit | infrastructure | company | project. With id, centres on that entity's site."
    },
    "entity_types": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Comma list of entity kinds to include (deposit, infrastructure, company, project)."
    }
  }
}
place_index output schema
{
  "type": "object",
  "additionalProperties": true
}
place_index annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
company
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

company input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "The GreenlandAI company id: a whole number (known_companies.id, e.g. \"4334\")."
    }
  }
}
company output schema
{
  "type": "object",
  "additionalProperties": true
}
company annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
company_search
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

company_search input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Maximum rows to return. Up to 100. Default 50."
    },
    "fields": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Only these keys in each row (plus id). Omit for all."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "Rows to skip, for paging. Default 0."
    },
    "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."
    }
  }
}
company_search output schema
{
  "type": "object",
  "additionalProperties": true
}
company_search annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
deposits
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

deposits input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Maximum rows to return. Up to 100. Default 50."
    },
    "fields": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Only these keys in each row (plus id). Omit for all."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "Rows to skip, for paging. Default 0."
    },
    "search": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Part of the deposit's name (substring)."
    },
    "status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Deposit status, e.g. operating, development, exploration."
    },
    "country": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Country as an ISO code or a name."
    },
    "commodity": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "A commodity name, e.g. \"neodymium\"."
    },
    "max_port_km": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "Only deposits within this many km of a port."
    },
    "owner_country": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Country of the deposit's owners (their home states), ISO code or name."
    },
    "resource_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "The deposit's primary resource label (exact, case-insensitive)."
    }
  }
}
deposits output schema
{
  "type": "object",
  "additionalProperties": true
}
deposits annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
deposit
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

deposit input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "The deposit's numeric id (from `deposits`, a pin, or a relationship row)."
    }
  }
}
deposit output schema
{
  "type": "object",
  "additionalProperties": true
}
deposit annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
market_listings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Browse the RAREEAI marketplace: kind="providers" (listings, filterable and sorted) or "oracles". Paged.

market_listings input schema
{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "default": "providers",
      "description": "\"providers\" (marketplace listings) or \"oracles\". Default providers."
    },
    "sort": {
      "type": "string",
      "default": "price_asc",
      "description": "Sort order, e.g. price_asc (default) or price_desc."
    },
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Maximum rows to return. Up to 200. Default 50."
    },
    "active": {
      "type": "boolean",
      "default": true,
      "description": "Only active listings. Default true."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "Rows to skip, for paging. Default 0."
    },
    "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)."
    }
  }
}
market_listings output schema
{
  "type": "object",
  "additionalProperties": true
}
market_listings annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
market_match
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

market_match input schema
{
  "type": "object",
  "required": [
    "match_id"
  ],
  "properties": {
    "match_id": {
      "type": "string",
      "description": "The marketplace match id (UUID). You must be a party to it."
    }
  }
}
market_match output schema
{
  "type": "object",
  "additionalProperties": true
}
market_match annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
market_quote
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

market_quote input schema
{
  "type": "object",
  "required": [
    "request_id"
  ],
  "properties": {
    "request_id": {
      "type": "string",
      "description": "The marketplace REQUEST id (UUID) you posted with `market_request`."
    }
  }
}
market_quote output schema
{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "speed": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "agent_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "frontier": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "priority": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "unit_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "wallet_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "created_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "expires_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "escrow_terms": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "privacy_mode": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "requirements": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "units_needed": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "rematch_until": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "resource_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "units_matched": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "contract_escrow": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "max_price_per_unit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "target_provider_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "rematch_max_total_joules": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "rematch_max_price_per_unit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
market_quote annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
joules_balance
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

joules_balance input schema
{
  "type": "object",
  "properties": {
    "wallet_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Wallet id (UUID) to read"
    }
  }
}
joules_balance output schema
{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "handle": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "balance": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "agent_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "wallet_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "agent_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "owner_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "balance_joules": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "verification_status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
joules_balance annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
billing_quote
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

billing_quote input schema
{
  "type": "object",
  "required": [
    "path"
  ],
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity id (with entity_type) for a site."
    },
    "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)."
    },
    "hops": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Graph depth for a relationships path (an agent key up to 10)."
    },
    "path": {
      "type": "string",
      "description": "The API path the call would hit, e.g. \"/api/v1/relationships\", \"/api/v1/look.from\", \"/api/v1/companies/{id}\" …"
    },
    "as_of": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "site.reconstruction date, YYYY-MM-DD."
    },
    "radius_m": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "site.reconstruction square half-side in metres."
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Entity kind: deposit | infrastructure | company | project. Alternative to lat/lng for a site."
    }
  }
}
billing_quote output schema
{
  "type": "object",
  "properties": {
    "peg": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "usd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "hops": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "tier": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "joules": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "receipt": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "query_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "billed_hops": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "pricing_tier": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "rate_per_hop": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "joules_all_in": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "pricing_model": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "receipt_offer": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "rail_fee_joules": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "refund_on_empty": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "quote_is_maximum": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "joules_with_receipt": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "partial_refund_note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "joules_with_receipt_all_in": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
billing_quote annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
receipts_me
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

receipts_me input schema
{
  "type": "object",
  "properties": {}
}
receipts_me output schema
{
  "type": "object",
  "properties": {
    "caller": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "agent_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "receipt_offer": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "what_a_receipt_is": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
receipts_me annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
billing_attempts
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

billing_attempts 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."
    }
  }
}
billing_attempts output schema
{
  "type": "object",
  "properties": {
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "items": {
      "anyOf": [
        {
          "type": "array",
          "items": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "statuses": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "wallet_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
billing_attempts annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
verify_proof
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

verify_proof input schema
{
  "type": "object",
  "required": [
    "identifier"
  ],
  "properties": {
    "identifier": {
      "type": "string",
      "description": "The id to look up: a chunk_id, proof_id, match_id or transfer id (UUID), or a BSV transaction id (64 hex)."
    }
  }
}
verify_proof output schema
{
  "type": "object",
  "properties": {
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "found": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "results": {
      "anyOf": [
        {
          "type": "array",
          "items": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "degraded": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "recorded": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "identifier": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "chain_status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "chain_confirmed": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "unavailable_sources": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
verify_proof annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
ledger_verify
Advertised by the server during the last successful anonymous check.
Advertised read-only

Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at each anchor — public, no auth. Independently checkable.

ledger_verify input schema
{
  "type": "object",
  "properties": {}
}
ledger_verify output schema
{
  "type": "object",
  "properties": {
    "eras": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "total": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "anchors": {
      "anyOf": [
        {
          "type": "array",
          "items": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "coverage": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "hash_format": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "chain_semantics": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
ledger_verify annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
transparency_latest
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

transparency_latest input schema
{
  "type": "object",
  "properties": {}
}
transparency_latest output schema
{
  "type": "object",
  "properties": {
    "fees": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "volume": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "bsv_txid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "tx_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "anchoring": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "timestamp": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "state_root": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "bridge_root": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "bridge_rows": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "merkle_root": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "total_supply": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "wallet_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "last_anchored": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "settlement_root": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "supply_verified": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "algorithm_version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "settlement_leaves": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
transparency_latest annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
balance_proof
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

balance_proof input schema
{
  "type": "object",
  "properties": {}
}
balance_proof output schema
{
  "type": "object",
  "additionalProperties": true
}
balance_proof annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
bridge_proof
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

bridge_proof input schema
{
  "type": "object",
  "properties": {}
}
bridge_proof output schema
{
  "type": "object",
  "additionalProperties": true
}
bridge_proof annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
market_request_rematch
Advertised by the server during the last successful anonymous check.

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.

market_request_rematch input schema
{
  "type": "object",
  "required": [
    "request_id"
  ],
  "properties": {
    "request_id": {
      "type": "string",
      "description": "Your open marketplace REQUEST id (UUID)."
    }
  }
}
market_request_rematch output schema
{
  "type": "object",
  "additionalProperties": true
}
market_request_rematch annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
market_request_rematch_withdraw
Advertised by the server during the last successful anonymous check.

Withdraw a request's automatic re-matching consent now (DELETE /api/v1/marketplace/request/{id}/rematch). Matches already escrowed stay as they are.

market_request_rematch_withdraw input schema
{
  "type": "object",
  "required": [
    "request_id"
  ],
  "properties": {
    "request_id": {
      "type": "string",
      "description": "Your marketplace REQUEST id (UUID)."
    }
  }
}
market_request_rematch_withdraw output schema
{
  "type": "object",
  "additionalProperties": true
}
market_request_rematch_withdraw annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
market_provide
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

market_provide input schema
{
  "type": "object",
  "$defs": {
    "ProvideBody": {
      "type": "object",
      "required": [
        "wallet_id",
        "frontier",
        "resource_type",
        "unit_type",
        "price_joules_per_unit"
      ],
      "properties": {
        "sla": {
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": true
            },
            {
              "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"
        },
        "frontier": {
          "type": "string",
          "description": "the marketplace frontier the listing is in"
        },
        "min_units": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "the smallest match you accept, in units"
        },
        "unit_type": {
          "type": "string",
          "description": "the unit the price is per"
        },
        "wallet_id": {
          "type": "string",
          "description": "your wallet UUID: it pays the registration fee and receives payouts"
        },
        "endpoint_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "where buyers reach your service"
        },
        "stake_amount": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "joules you stake on the listing"
        },
        "resource_type": {
          "type": "string",
          "description": "the resource type you sell"
        },
        "timeout_hours": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "delivery deadline in hours (or use timeout_minutes)"
        },
        "capacity_total": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "total units you can supply"
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "your own opaque key: the same key and body is one listing change, never two"
        },
        "oracle_verified": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "description": "opt IN to oracle verification of your deliveries (a preference, not a badge)"
        },
        "timeout_minutes": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "delivery deadline in minutes (or use timeout_hours)"
        },
        "max_units_per_match": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "the largest single match, in units"
        },
        "price_joules_per_unit": {
          "type": "integer",
          "minimum": 0,
          "description": "your price in joules per unit, a whole number >= 0"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "body"
  ],
  "properties": {
    "body": {
      "$ref": "#/$defs/ProvideBody",
      "description": "The listing; each field is described in its schema."
    }
  }
}
market_provide output schema
{
  "type": "object",
  "additionalProperties": true
}
market_provide annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
market_request
Advertised by the server during the last successful anonymous check.

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).

market_request input schema
{
  "type": "object",
  "$defs": {
    "RematchBody": {
      "type": "object",
      "properties": {
        "window_seconds": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 86400,
              "minimum": 300
            },
            {
              "type": "null"
            }
          ],
          "description": "how long the consent lasts, 300-86400 s (default 86400)"
        },
        "max_price_per_unit": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1
            },
            {
              "type": "null"
            }
          ],
          "description": "the most a background re-match may pay a unit: 1 .. the request's own max_price_per_unit (default: that …"
        }
      },
      "additionalProperties": false
    },
    "RequestBody": {
      "type": "object",
      "required": [
        "wallet_id",
        "frontier",
        "resource_type",
        "unit_type",
        "units_needed",
        "max_price_per_unit"
      ],
      "properties": {
        "speed": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "the delivery speed class you want, per the RAREEAI docs"
        },
        "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 …"
        },
        "frontier": {
          "type": "string",
          "description": "the marketplace frontier to buy in"
        },
        "priority": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "matching priority, per the RAREEAI docs"
        },
        "unit_type": {
          "type": "string",
          "description": "the unit you buy in (the provider's unit_type)"
        },
        "wallet_id": {
          "type": "string",
          "description": "your wallet UUID: it pays the escrow when the request matches"
        },
        "provider_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "the listing to buy from: a provider id from market_listings (kind providers)."
        },
        "ttl_seconds": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "seconds until the request expires unmatched"
        },
        "privacy_mode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "the request's privacy mode, per the RAREEAI docs"
        },
        "requirements": {
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": true
            },
            {
              "type": "null"
            }
          ],
          "description": "extra requirements for providers, as a JSON object"
        },
        "units_needed": {
          "type": "integer",
          "description": "how many units, a whole number > 0",
          "exclusiveMinimum": 0
        },
        "resource_type": {
          "type": "string",
          "description": "what you want to buy"
        },
        "physical_claim": {
          "anyOf": [
            {
              "$ref": "#/$defs/PhysicalClaimBody"
            },
            {
              "type": "null"
            }
          ],
          "description": "REQUIRED for resource_type scene_stack, change_report, site_reconstruction or satellite_imagery (refused …"
        },
        "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)."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "your own opaque key: the same key and body is one request, never two"
        },
        "max_price_per_unit": {
          "type": "integer",
          "description": "the most you pay per unit, in joules, a whole number > 0",
          "exclusiveMinimum": 0
        }
      },
      "additionalProperties": false
    },
    "PhysicalClaimBody": {
      "type": "object",
      "required": [
        "kind",
        "site_lat",
        "site_lng",
        "t1"
      ],
      "properties": {
        "t0": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "YYYY-MM-DD; required for physical_change, before t1, on or after 1984-03-16"
        },
        "t1": {
          "type": "string",
          "description": "YYYY-MM-DD"
        },
        "kind": {
          "enum": [
            "physical_change",
            "physical_state"
          ],
          "type": "string",
          "description": "physical_change: something changed at the site between t0 and t1 · physical_state: the site shows something …"
        },
        "radius_m": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 2500,
              "minimum": 50
            },
            {
              "type": "null"
            }
          ],
          "description": "the site's radius in metres, 50-2500"
        },
        "site_lat": {
          "type": "number",
          "maximum": 90,
          "minimum": -90,
          "description": "the site's latitude, decimal degrees"
        },
        "site_lng": {
          "type": "number",
          "maximum": 180,
          "minimum": -180,
          "description": "the site's longitude, decimal degrees"
        },
        "site_entity_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 64
            },
            {
              "type": "null"
            }
          ],
          "description": "that entity's id"
        },
        "site_entity_type": {
          "anyOf": [
            {
              "enum": [
                "deposit",
                "infrastructure",
                "company",
                "project"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "the GreenlandAI entity at the site, if any"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "body"
  ],
  "properties": {
    "body": {
      "$ref": "#/$defs/RequestBody",
      "description": "The buy request; each field is described in its schema."
    }
  }
}
market_request output schema
{
  "type": "object",
  "additionalProperties": true
}
market_request annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
market_accept
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

market_accept input schema
{
  "type": "object",
  "required": [
    "match_id"
  ],
  "properties": {
    "match_id": {
      "type": "string",
      "description": "The marketplace match id (UUID). You must be its buyer."
    },
    "idempotency_key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Your own opaque key: the same key accepts once, never twice."
    }
  }
}
market_accept output schema
{
  "type": "object",
  "additionalProperties": true
}
market_accept annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
wallet_transfer
Advertised by the server during the last successful anonymous check.
Advertised destructive

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. privacy_mode: only 'transparent' (or omit it) — the other modes are temporarily unavailable and refused.

wallet_transfer input schema
{
  "type": "object",
  "$defs": {
    "TransferBody": {
      "type": "object",
      "required": [
        "from_wallet_id",
        "amount"
      ],
      "properties": {
        "note": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 500
            },
            {
              "type": "null"
            }
          ],
          "description": "a note recorded with the transfer, up to 500 characters"
        },
        "amount": {
          "type": "integer",
          "description": "joules to send, a whole number > 0 (the transfer fee is charged to the sender on top)",
          "exclusiveMinimum": 0
        },
        "platform": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "the platform the transfer is made for, recorded on the transfer"
        },
        "to_handle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "recipient handle instead of a wallet id"
        },
        "privacy_mode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "only 'transparent' is accepted for now (or omit it): 'confidential', 'private' and 'stark_wrapped' are …"
        },
        "to_wallet_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "recipient wallet UUID; send this or to_handle"
        },
        "from_wallet_id": {
          "type": "string",
          "description": "sender wallet UUID (must be yours)"
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 128,
              "minLength": 1
            },
            {
              "type": "null"
            }
          ],
          "description": "your own opaque key, 1-128 characters: the same key and body is one transfer, never two."
        },
        "registration_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "pending service registration id for an agent-class quoted transfer"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "body"
  ],
  "properties": {
    "body": {
      "$ref": "#/$defs/TransferBody",
      "description": "The transfer; each field is described in its schema."
    }
  }
}
wallet_transfer output schema
{
  "type": "object",
  "additionalProperties": true
}
wallet_transfer annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
joules_deficit
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

joules_deficit input schema
{
  "type": "object",
  "required": [
    "cost"
  ],
  "properties": {
    "cost": {
      "type": "integer",
      "description": "The joules the next call will cost (its joules_all_in from billing_quote)."
    },
    "wallet_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Wallet to read (UUID); omit to use your own. Not used with a GreenlandAI agent key."
    }
  }
}
joules_deficit output schema
{
  "type": "object",
  "properties": {
    "have": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "needed": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "shortfall": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "tool_to_call_next": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
joules_deficit annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
funding_prepare
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

funding_prepare input schema
{
  "type": "object",
  "properties": {
    "needed": {
      "type": "integer",
      "default": 0,
      "description": "The joules you are short (the shortfall from joules_deficit or a 402). Default 0."
    }
  }
}
funding_prepare output schema
{
  "type": "object",
  "properties": {
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "needed": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "routes": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "wallet_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "in_band_agent_funding_live": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
funding_prepare annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
funding_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

funding_status input schema
{
  "type": "object",
  "properties": {}
}
funding_status output schema
{
  "type": "object",
  "properties": {
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "deposits": {
      "anyOf": [
        {
          "type": "array",
          "items": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "usdc_live": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "minimum_usdc": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "scanner_cursor_block": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "needed_to_credit_usdc": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "held_below_min_total_usdc": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
funding_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
trade_settlement
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

trade_settlement input schema
{
  "type": "object",
  "required": [
    "match_id"
  ],
  "properties": {
    "match_id": {
      "type": "string",
      "description": "The marketplace match id (UUID). You must have been its buyer or seller."
    }
  }
}
trade_settlement output schema
{
  "type": "object",
  "properties": {
    "legs": {
      "anyOf": [
        {
          "type": "array",
          "items": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "dispute": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "settled": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "contract": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "match_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "leg_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "your_role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "all_anchored": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
trade_settlement annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
oracle_register
Advertised by the server during the last successful anonymous check.

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.

oracle_register input schema
{
  "type": "object",
  "$defs": {
    "OracleRegisterBody": {
      "type": "object",
      "required": [
        "wallet_id",
        "stake_amount"
      ],
      "properties": {
        "wallet_id": {
          "type": "string",
          "description": "your wallet UUID: it holds the stake"
        },
        "stake_amount": {
          "type": "integer",
          "minimum": 10000,
          "description": "joules to stake, at least 10,000; refundable on deregister"
        },
        "specialisations": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "1 to 7 values from exactly: code, translation, data, general, content, research, infrastructure"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "body"
  ],
  "properties": {
    "body": {
      "$ref": "#/$defs/OracleRegisterBody",
      "description": "The registration; each field is described in its schema."
    }
  }
}
oracle_register output schema
{
  "type": "object",
  "additionalProperties": true
}
oracle_register annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
oracle_assignments
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

oracle_assignments input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Maximum rows to return. 1-200. Default 50."
    },
    "status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Only assignments in this status."
    }
  }
}
oracle_assignments output schema
{
  "type": "object",
  "additionalProperties": true
}
oracle_assignments annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
oracle_assess
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

oracle_assess input schema
{
  "type": "object",
  "$defs": {
    "OracleAssessBody": {
      "type": "object",
      "required": [
        "verdict",
        "quality_score"
      ],
      "properties": {
        "notes": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2000
            },
            {
              "type": "null"
            }
          ],
          "description": "your reasons, up to 2,000 characters"
        },
        "verdict": {
          "enum": [
            "valid",
            "invalid"
          ],
          "type": "string",
          "description": "valid or invalid: was the delivery what was bought"
        },
        "quality_score": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "description": "0-100; below 40 opens a dispute automatically"
        },
        "execution_trace": {
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": true
            },
            {
              "type": "null"
            }
          ],
          "description": "how you verified the delivery, as a JSON object"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "match_id",
    "body"
  ],
  "properties": {
    "body": {
      "$ref": "#/$defs/OracleAssessBody",
      "description": "Your verdict; each field is described in its schema."
    },
    "match_id": {
      "type": "string",
      "description": "The marketplace match id (UUID). One you are assigned to assess."
    }
  }
}
oracle_assess output schema
{
  "type": "object",
  "additionalProperties": true
}
oracle_assess annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
oracle_deregister
Advertised by the server during the last successful anonymous check.
Advertised destructive

Deregister as an oracle and get your stake back from escrow (less anything slashed). `wallet_id` is required. Fails while you have pending assessments.

oracle_deregister input schema
{
  "type": "object",
  "required": [
    "wallet_id"
  ],
  "properties": {
    "wallet_id": {
      "type": "string",
      "description": "Your oracle wallet's UUID (the one that holds the stake)."
    }
  }
}
oracle_deregister output schema
{
  "type": "object",
  "additionalProperties": true
}
oracle_deregister annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
contribute_relations
Advertised by the server during the last successful anonymous check.

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.

contribute_relations input schema
{
  "type": "object",
  "required": [
    "relations"
  ],
  "properties": {
    "entities": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "New entities proposed alongside a relation that references them; never accepted on their own."
    },
    "relations": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "description": "The relationships to submit."
    }
  }
}
contribute_relations output schema
{
  "type": "object",
  "additionalProperties": true
}
contribute_relations annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
contribute_stats
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

contribute_stats input schema
{
  "type": "object",
  "properties": {}
}
contribute_stats output schema
{
  "type": "object",
  "additionalProperties": true
}
contribute_stats annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
contribute_submissions
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

contribute_submissions input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Maximum rows to return. Default 50."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "Rows to skip, for paging. Default 0."
    }
  }
}
contribute_submissions output schema
{
  "type": "object",
  "additionalProperties": true
}
contribute_submissions annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
contribute_receipts
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

contribute_receipts input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Maximum rows to return. Default 50."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "Rows to skip, for paging. Default 0."
    }
  }
}
contribute_receipts output schema
{
  "type": "object",
  "additionalProperties": true
}
contribute_receipts annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
tool_guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

tool_guide input schema
{
  "type": "object",
  "required": [
    "tool"
  ],
  "properties": {
    "tool": {
      "type": "string",
      "description": "A tool name from tools/list, e.g. relationships."
    }
  }
}
tool_guide output schema
{
  "type": "object",
  "additionalProperties": true
}
tool_guide annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
company_profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

company_profile input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "The company id (from company_search, a pin or a relationship row)."
    },
    "hops": {
      "type": "integer",
      "default": 1,
      "maximum": 10,
      "minimum": 1,
      "description": "Relationship depth, 1-10. Default 1."
    },
    "fields": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Only these keys in each row (plus id). Omit for all."
    },
    "include_raw": {
      "type": "boolean",
      "default": false,
      "description": "Return every part whole. Default false."
    }
  }
}
company_profile output schema
{
  "type": "object",
  "additionalProperties": true
}
company_profile annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
deposit_brief
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

deposit_brief input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "The deposit id (from deposits, a pin or a relationship row)."
    },
    "hops": {
      "type": "integer",
      "default": 1,
      "maximum": 10,
      "minimum": 1,
      "description": "Relationship depth, 1-10. Default 1."
    },
    "fields": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Only these keys in each row (plus id). Omit for all."
    },
    "include_raw": {
      "type": "boolean",
      "default": false,
      "description": "Return every part whole. Default false."
    }
  }
}
deposit_brief output schema
{
  "type": "object",
  "additionalProperties": true
}
deposit_brief annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1904 ms
95th percentile latency
1904 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1904 ms · metadata changed · 50 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http greenlandai-mcp https://mcp.greenlandai.ai/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add greenlandai-mcp --url https://mcp.greenlandai.ai/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable greenlandai-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "greenlandai-mcp": {
      "url": "https://mcp.greenlandai.ai/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "greenlandai-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.greenlandai.ai/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start greenlandai-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "greenlandai-mcp": {
      "type": "http",
      "url": "https://mcp.greenlandai.ai/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http greenlandai-mcp https://mcp.greenlandai.ai/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.greenlandai.ai/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "greenlandai-mcp": {
      "serverUrl": "https://mcp.greenlandai.ai/mcp"
    }
  }
}

Let your agent find its tools

Find servers like GreenlandAI MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run GreenlandAI MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing