{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_wf59ht9bgf8g","handle":"greenlandai","url":"https://wellknown.network/agents/greenlandai","links":{"self":"https://wellknown.network/agents/greenlandai/record.json","html":"https://wellknown.network/agents/greenlandai","markdown":"https://wellknown.network/agents/greenlandai/record.md","api":"https://wellknown.network/api/v1/agents/greenlandai","status":"https://wellknown.network/api/v1/agents/greenlandai/status","claim":"https://wellknown.network/agents/greenlandai/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/greenlandai/claim.json","badge":"https://wellknown.network/agents/greenlandai/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/greenlandai/history","tools":"https://wellknown.network/api/v1/agents/greenlandai/tools"},"ard":{"identifier":"urn:air:mcp.greenlandai.ai:server:greenlandai","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"GreenlandAI","summary":"GreenlandAI: world graph & map (companies, deposits, commodities), marketplace, wallets, proofs.","description":"GreenlandAI: world graph & map (companies, deposits, commodities), marketplace, wallets, proofs.","publisher":{"name":"ai.greenlandai","url":null},"homepage":"https://greenlandai.ai","repository":null,"version":"0.5.17","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.greenlandai.ai/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-04T00:04:51.520915Z","publishedAt":"2026-10-04T00:04:51.520915Z","registryName":"ai.greenlandai/greenlandai"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.992,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":0.885,"provenance":"derived"},{"slug":"documents.extraction","name":"Data Extraction","confidence":0.583,"provenance":"derived"},{"slug":"documents.invoice-processing","name":"Invoice Processing","confidence":0.525,"provenance":"derived"}],"categories":["commerce","documents","knowledge","security"],"language":"fr"},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-10-10T11:24:47.609Z","lastProbedAt":"2026-10-10T11:24:47.609Z","statusComputedAt":"2026-10-10T11:26:42.659Z","reliability30d":{"probes":90,"successRate":1,"p50Ms":59,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":90,"ok":90,"authBoundaryOk":0,"serviceOk":90,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T11:24:47.609Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":131,"error":null,"detail":{"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"toolCount":43,"toolsHash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","serverName":"GreenlandAI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.5.26+cd825ca","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T04:32:50.161Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":114,"error":null,"detail":{"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"toolCount":43,"toolsHash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","serverName":"GreenlandAI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.5.26+cd825ca","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T22:28:31.573Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":191,"error":null,"detail":{"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"toolCount":43,"toolsHash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","serverName":"GreenlandAI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.5.26+cd825ca","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T16:33:38.995Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":104,"error":null,"detail":{"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"toolCount":43,"toolsHash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","serverName":"GreenlandAI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.5.26+cd825ca","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T10:22:33.317Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":136,"error":null,"detail":{"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"toolCount":43,"toolsHash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","serverName":"GreenlandAI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.5.26+cd825ca","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T03:22:52.478Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":94,"error":null,"detail":{"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"toolCount":43,"toolsHash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","serverName":"GreenlandAI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.5.26+cd825ca","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T20:24:36.286Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":161,"error":null,"detail":{"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"toolCount":43,"toolsHash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","serverName":"GreenlandAI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.5.26+cd825ca","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T13:22:37.111Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":3714,"error":null,"detail":{"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"toolCount":43,"toolsHash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","serverName":"GreenlandAI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.5.26+cd825ca","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T06:23:26.673Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":124,"error":null,"detail":{"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"toolCount":43,"toolsHash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","serverName":"GreenlandAI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.5.26+cd825ca","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T23:25:20.294Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":118,"error":null,"detail":{"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"toolCount":43,"toolsHash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","serverName":"GreenlandAI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.5.26+cd825ca","protocolVersion":"2025-06-18"}}],"tools":[{"name":"look_from","description":"Map lane: pins near a point (lat/lng + radius_km). `entity_type` (deposit | infrastructure | company\n    | project) behaves two ways (backend, 2026-09-14): `ent"},{"name":"relationships","description":"Graph lane: labelled relationship EDGES between companies/entities (ownership, operates, supplies,\n    …) — the PRODUCT (edges with tiers + provenance), named f"},{"name":"hops","description":"DEPRECATED alias for `relationships` — kept working, to be removed at a future major. Use\n    `relationships`. Reason (operator ruling 2026-09-14): `hops` names"},{"name":"nearby","description":"Entities near a location (the primitive `look_from` builds on). Typed query params (GET /nearby):\n    lat + lng (required), radius_km (default 100), entity_type"},{"name":"mapdata","description":"CLOSED — do NOT call. `/api/v1/mapdata` (the bulk map-layers surface) is TEMPORARILY closed to ALL\n    callers, agent AND human: the backend returns 403 BEFORE "},{"name":"map_viewport","description":"Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed\n    params: min_lat/min_lng/max_lat/max_lng (the bbox — all fou"},{"name":"look_at","description":"Satellite still of a place — a Sentinel-2 ARCHIVE image (the screen as a picture). Pose = lat/lng OR\n    entity_type+id (anchor); same pose family as `look_from"},{"name":"look_through","description":"The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across\n    time). Pose = lat/lng OR entity_type"},{"name":"entity_history","description":"history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company|\n    project + `id`. Returns: `fra"},{"name":"entity_state","description":"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\n    as_of — before record time beg"},{"name":"entity_change","description":"change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class\n    (water · ice · canopy · pad · "},{"name":"site_reconstruction","description":"A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.\n    `measurements` (computed on th"},{"name":"place_index","description":"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\n    (entity_type deposit|infras"},{"name":"company","description":"One company's record and graph neighbourhood by id; the response carries `charged_joules` — the\n    all-in PRICE of THIS call (one key on every metered response"},{"name":"deposits","description":"Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`,\n    `country`, `status`, `owner_country`, `max_port_km`, `search`"},{"name":"deposit","description":"One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its\n    `commodities[]` ({name, role: primary|byproduct, group} — the "},{"name":"market_listings","description":"Browse the RAREEAI marketplace: kind=\"providers\" (listings) or \"oracles\". Typed query params for\n    the providers browse (GET /providers): frontier, resource_t"},{"name":"market_match","description":"Read one marketplace match by id, including its `escrow_terms` and this trade's typed fee/timeout\n    fields. You must be a party to the match. Bearer required."},{"name":"market_quote","description":"Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the\n    route actually declares it: id, wallet_id, agent_id, fro"},{"name":"joules_balance","description":"Your own wallet balance — a FREE read either way (checking costs nothing). A GreenlandAI AGENT key\n    (`gai_`/`gqa_`) reads its OWN wallet via GAI /api/v1/agen"},{"name":"billing_quote","description":"The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you\n    can actually invoke (relays GET /api/v1/billing/quote). "},{"name":"billing_attempts","description":"YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your\n    bill without asking us (relays GET /api/v1/billing/att"},{"name":"verify_proof","description":"Look up one identifier (chunk_id, proof_id, match_id, transfer id, or a BSV txid) in ENYAL's\n    public verify lookup — no auth. The backend's body is returned "},{"name":"ledger_verify","description":"Recent public ledger anchors with their on-chain transaction ids and the exact credit supply at\n    each anchor — public, no auth. Independently checkable."},{"name":"transparency_latest","description":"The latest hourly PUBLIC transparency attestation (GET /transparency/latest — no auth): a Merkle\n    root over every wallet balance, the verified total supply, "},{"name":"balance_proof","description":"Cryptographic inclusion proof for YOUR wallet balance in the latest hourly transparency\n    attestation (GET /wallet/balance-proof): leaf hash, Merkle sibling p"},{"name":"bridge_proof","description":"Cryptographic inclusion proofs for YOUR Bridge Ledger rows — contribution/fee events — in the\n    balance-proof shape (GET /programme/bridge/proof): per-row lea"},{"name":"market_provide","description":"Create/update a marketplace listing (POST /provide). Requires marketplace:write (verified\n    account) — an unverified/under-scoped token gets the backend's rea"},{"name":"market_request","description":"Post a marketplace BUY request (POST /request) — you want to buy a resource; providers match against\n    it and your escrow is debited on match. Bearer + a veri"},{"name":"market_accept","description":"Accept a delivery on a match (POST /match/{id}/accept) — releases escrow to the provider. You\n    must be the buyer party; backend enforces it."},{"name":"wallet_transfer","description":"Direct wallet-to-wallet transfer (POST /wallet/transfer). Requires wallet:transfer scope. WHO CAN\n    SEND (the backend as it runs, 2026-09-03): a verified huma"},{"name":"joules_deficit","description":"Given a planned `cost`, read a balance and return {needed, have, shortfall, tool_to_call_next} so an\n    agent can decide in-band whether it can afford the next"},{"name":"funding_prepare","description":"The in-band funding step for a joule shortfall — NEVER a website to visit (operator lock). USDC on\n    Base is the live agent-fundable rail: deposit USDC to you"},{"name":"deposit_status","description":"YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only,\n    derived from your credential, never a parameter). States: cr"},{"name":"trade_settlement","description":"YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of\n    (relays GET /api/v1/wallet/trade/{match_id}/settlement). Part"},{"name":"oracle_register","description":"Register as a RAREEAI oracle by staking joules (POST /oracle/register). INVITE-ONLY at launch\n    (Phase 1 — the oracle pool is operator-run): a non-whitelisted"},{"name":"oracle_assignments","description":"List YOUR oracle assignments — the deliveries you have been assigned to assess (GET\n    /oracle/assignments). The backend scopes this to your own wallet; you ne"},{"name":"oracle_assess","description":"Post your verdict on a delivery you were assigned (POST /oracle/assess/{match_id}). Body:\n    {verdict ('valid' or 'invalid'), quality_score (an integer 0-100),"},{"name":"oracle_deregister","description":"Deregister as an oracle and unstake (POST /oracle/deregister?wallet_id=...). Returns your\n    staked joules from escrow (less any amount already slashed for ove"},{"name":"contribute_relations","description":"Submit evidenced graph relationships to the GreenlandAI contributor door (TEN programme). Auth:\n    your OWN GreenlandAI key in X-API-Key — an agent's gai_ regi"},{"name":"contribute_stats","description":"Your OWN contributor standing (forward your enabled gai_ key as X-API-Key; the door derives\n    identity from the key). Returns totals (submitted/accepted/rejec"},{"name":"contribute_submissions","description":"Your OWN per-item submission outcomes (forward your enabled gai_ key as X-API-Key). Each item:\n    id, kind, name, outcome (pending_review / accepted / rejected"},{"name":"contribute_receipts","description":"Your OWN append-only contribution receipts (forward your enabled gai_ key as X-API-Key) — the\n    proof of what you submitted, with the canonical claim hash (cl"}],"package":null,"toolSurface":{"id":"ts_36w3meukm7cf","endpointId":"ep_t462tmw4mz2j","hash":"84cb52368b5a06ec7334c15735c26b73e3b6e86669b5e04ff55939b10539d253","toolCount":43,"serverName":"GreenlandAI","serverVersion":"0.5.25+bf672c7","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-05T06:24:11.834Z","lastSeenAt":"2026-10-10T11:24:47.618Z","observations":20,"toolNames":["look_from","relationships","hops","nearby","mapdata","map_viewport","look_at","look_through","entity_history","entity_state","entity_change","site_reconstruction","place_index","company","deposits","deposit","market_listings","market_match","market_quote","joules_balance","billing_quote","billing_attempts","verify_proof","ledger_verify","transparency_latest","balance_proof","bridge_proof","market_provide","market_request","market_accept","wallet_transfer","joules_deficit","funding_prepare","deposit_status","trade_settlement","oracle_register","oracle_assignments","oracle_assess","oracle_deregister","contribute_relations","contribute_stats","contribute_submissions","contribute_receipts"],"distinctSurfaces":15},"endpointFacts":[{"id":"ep_t462tmw4mz2j","url":"https://mcp.greenlandai.ai/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-04T23:25:17.976Z","auth":{"observedAt":"2026-10-04T23:25:18.013Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-04T23:25:18.040Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"greenlandai.ai","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-09-03T02:56:12.000Z","validTo":"2026-12-02T02:56:11.000Z","daysToExpiry":52,"sanCount":2,"fingerprint256":"C9:5D:5C:6C:E6:CB:7E:DF:07:AA:9D:95:C1:E4:DB:0F:D4:1B:41:E7:4D:80:51:3A:FC:D5:73:C0:CD:59:E3:D0"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"ai.greenlandai/greenlandai","url":"https://registry.modelcontextprotocol.io/v0/servers/ai.greenlandai%2Fgreenlandai","firstSeenAt":"2026-09-15T18:18:25.483Z","fetchedAt":"2026-10-08T22:20:32.090Z","normalizedAt":"2026-10-08T22:20:32.090Z"}]},"firstSeenAt":"2026-09-15T18:18:25.483Z","updatedAt":"2026-10-10T11:27:24.540Z"}