ai.greenlandai/greenlandai · v0.5.17 · crypto-web3
GreenlandAI is healthy: it completed an MCP handshake in 1830 ms and exposes 43 tools. It scores 59/100.
GreenlandAI: world graph & map (companies, deposits, commodities), marketplace, wallets, proofs.
Add to my toolfindr inventory →
Healthy · last checked 2026-10-14T09:00:33.276Z UTC
| Checked (UTC) | Status | Latency |
|---|---|---|
| 2026-10-14T09:00:33.276Z | ok | 1830 ms |
| health | 18.7 / 25 |
| authEase | 15 / 15 |
| toolQuality | 13.5 / 15 |
| maintenance | 7 / 15 |
| adoption | 0 / 10 |
| usage | 0 / 10 |
| security | 5 / 10 |
look_from Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company
| project) behaves two ways (backend, 2026-09-14): `entity_type` ALONE (with lat/lng) FILTERS the frame
to that type only; `entity_type` + `id` ANCHORS the pose at that entity and keeps ALL trelationships Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,
…) — the PRODUCT (edges with tiers + provenance), named for the capability, not the meter. Typed query
params (GET /relationships): the answer is about ONE entity (GreenlandAI 2026-10-01). entihops DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use
`relationships`. Reason (operator ruling 2026-09-14): `hops` names the tool after the BILLING UNIT
(traversal depth is what we meter, and `billing_quote` takes hops= for that reason), but the
capabinearby Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):
lat + lng (required), radius_km (default 100), entity_type (optional filter), limit (<=100, default
20), include_country_centroids (default False). Metered — debited from the CALLING agent's ownmapdata CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL
callers, agent AND human: the backend returns 403 BEFORE the meter, so NOTHING is charged (GR-109
operator ruling 2026-09-08, gated on AGENT_MAPDATA_ENABLED / HUMAN_MAPDATA_ENABLED — both defaumap_viewport Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed
params: min_lat/min_lng/max_lat/max_lng (the bbox — all four together), entity_type
(deposit | infrastructure | company | project — default all four), energy (default False; omits energy
fleelook_at Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR
entity_type+id (anchor); same pose family as `look_from`. Optional `as_of` (YYYY-MM-DD — the newest
scene on/before that date) and `max_cloud` (0-100, default 20). AGENT KEYS ONLY (a browser look_through The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across
time). Pose = lat/lng OR entity_type+id (anchor), the same pose rule as `look_at`. `t0` (YYYY-MM-DD, on or after 2015-06-23)
and optional `t1` (default today) bound the ranentity_history history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|
project + `id`. Returns: `frames` — the imagery index over its coordinates (scene dates, cloud cover, scene ids, counts by year; NO
images — fetch stills with `look_entity_state state(entity, as_of) — ONE packet for one entity at a date (YYYY-MM-DD, default today): `target` (the entity as WE held it at
as_of — before record time began, as held now, labelled), `pins` (look_from's frame, only pins we held by as_of; later additions
counted), `graph` (its 1-hop relationentity_change change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class
(water · ice · canopy · pad · stockpile · unknown) the area in m², by_sensor_m2 {optical, radar}, `said` (what each instrument saw:
an area, "saw no change", "makes nsite_reconstruction A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.
`measurements` (computed on the elevation source's own grid, every block with `source` and `accuracy`): site_extent (side, area,
bbox, CRS); elevation (min, max, meanplace_index place.index — WHAT EXISTS AT A PLACE, AND WHEN. Rows within `radius_km` (default 2, max 50) of lat + lng, or of an entity's site
(entity_type deposit|infrastructure|company|project + id; a country-centre anchor is refused 409, not charged), newest first:
`still` = a satellite still a route dcompany One company's record and graph neighbourhood by id; the response carries `charged_joules` — the
all-in PRICE of THIS call (one key on every metered response — the companies/deposits/infrastructure/
projects reads, relationships, and look_from / map_viewport / look_at). Metered — debited fromdeposits Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,
`country`, `status`, `owner_country`, `max_port_km`, `search` (name substring), `limit` (<=100),
`offset`.
⚠ READ THIS BEFORE USING `commodity`: it filters by the commodity GRAPH, not by the dedeposit One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its
`commodities[]` ({name, role: primary|byproduct, group} — the commodity graph, with `resource_type`
as the primary label) and operators. Pair with `deposits(commodity=...)`: search by commodity,
market_listings Browse the RAREEAI marketplace: kind="providers" (listings) or "oracles". Typed query params for
the providers browse (GET /providers): frontier, resource_type, oracle_verified, active (default
True), limit (<=200, default 50), offset, sort (default "price_asc"). Needs a bearer; no write scomarket_match Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout
fields. You must be a party to the match. Bearer required. `dispute_window_end` is populated on
oracle-path trades (a real timestamp, not null) — it is the deadline to open a dispute after
dmarket_quote Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the
route actually declares it: id, wallet_id, agent_id, frontier, resource_type, unit_type, speed,
privacy_mode, contract_escrow, units_needed, max_price_per_unit, priority, requirements, status,joules_balance Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key
(`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agent/me/balance — NO wallet_id needed; returns
{agent_id, agent_name, wallet_id, balance_joules, balance}. A JoulePAI (`jlp_`) or ENYAL (`ebilling_quote The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you
can actually invoke (relays GET /api/v1/billing/quote). `path` = the API path the call would hit — e.g.
"/api/v1/relationships" (the `relationships` tool), "/api/v1/look.from" (`look_from`), "billing_attempts YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your
bill without asking us (relays GET /api/v1/billing/attempts; own wallet only — derived from your credential,
never a parameter). Distinct from `joules_balance` (how much I have): this answerverify_proof Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's
public verify lookup — no auth. The backend's body is returned UNCHANGED; read these fields, in this
order, and claim nothing stronger than they say:
- `found:true` = at least one of our systems ledger_verify Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at
each anchor — public, no auth. Independently checkable.transparency_latest The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle
root over every wallet balance, the verified total supply, a transaction attestation, the state root,
and the Bridge Ledger root, plus the BSV transaction that anchors the batch. ANCHORING IS BATbalance_proof Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency
attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling path, root, the anchoring BSV
txid, and `verification` (the steps to recompute the root and check it on chain). Bearer required;
the bridge_proof Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the
balance-proof shape (GET /programme/bridge/proof): per-row leaf hash, sibling path, the `bridge_root`,
and the anchoring BSV txid, plus `verification`. Bearer required; scoped to the holder your tokmarket_provide Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified
account) — an unverified/under-scoped token gets the backend's real 403. First-time provider
registration charges a 1,000-joule fee that is SPENT (not a refundable stake — contrast an oracle
stake, market_request Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against
it and your escrow is debited on match. Bearer + a verified account (marketplace:write); an
under-scoped token gets the backend's real 403. Body (TYPED — extra fields refused here):
{wallmarket_accept Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You
must be the buyer party; backend enforces it.wallet_transfer Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN
SEND (the backend as it runs, 2026-09-03): a verified human wallet to any wallet; an AGENT-class
wallet (agent_customer / agent_citizen) ONLY to a REGISTERED destination — either a pending servijoules_deficit Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an
agent can decide in-band whether it can afford the next call — no website, no guessing, FREE. A
GreenlandAI AGENT key (`gai_`/`gqa_`) reads its OWN balance via GAI /api/v1/agent/me/balance (nfunding_prepare The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on
Base is the live agent-fundable rail: deposit USDC to your own Base address (derived from your
credential), at or above the live minimum (`minimum_usdc`, read per call from deposit-status), credeposit_status YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,
derived from your credential, never a parameter). States: credited (joules in your wallet) ·
held_below_min (under `minimum_usdc` — held and accumulated, credits as one entry once your total
rtrade_settlement YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of
(relays GET /api/v1/wallet/trade/{match_id}/settlement). Party-gated on the backend: a 404 means you
were not a party to this match (it also hides whether the match exists at all — never a wallet ioracle_register Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch
(Phase 1 — the oracle pool is operator-run): a non-whitelisted wallet gets a STRUCTURED invite-only
response saying how to apply (a verified account, a linked wallet holding the stake, then email
oracle_assignments List YOUR oracle assignments — the deliveries you have been assigned to assess (GET
/oracle/assignments). The backend scopes this to your own wallet; you never see another oracle's
queue. Optional query: status (filter) and limit (1-200, default 50). Each assignment carries
match_id, deaoracle_assess Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:
{verdict ('valid' or 'invalid'), quality_score (an integer 0-100), notes (<= 2000 chars), and
optionally execution_trace (a dict describing how you verified)}. A quality_score below 40
auto-opens a oracle_deregister Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your
staked joules from escrow (less any amount already slashed for overturned calls). Fails if you
have pending assessments. wallet_id (the UUID of your oracle wallet) is REQUIRED and is sent as a
QUERYcontribute_relations Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:
your OWN GreenlandAI key in X-API-Key — an agent's gai_ registration key or the owner's gai_ key,
the SAME key you use on the graph reads; the agent ID (gqa_) is NOT sent here, the door derives yocontribute_stats Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives
identity from the key). Returns totals (submitted/accepted/rejected), acceptance_rate,
pending_review, refused_at_door, standing (good / warning / suspended / revoked) and the thresholds
that applcontribute_submissions Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:
id, kind, name, outcome (pending_review / accepted / rejected), the judge's reason verbatim in
review_note (a pending item reads 'awaiting the judge (nightly, 21:15 UTC)'; a HELD item carries
tcontribute_receipts Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the
proof of what you submitted, with the canonical claim hash (claim_sha256) so you can verify what the
door holds matches what you sent. Own rows only, no staff fields. Read-only.
GET /api/v1/contNo repository listed · website