Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "site_reconstruction"; changed the definition of "billing_quote" and "entity_change" (42 tools before, 43 now)
⟨127 unchanged words⟩ an unverified caller may still price a call. For "/api/v1/site.reconstruction" pass the site (lat + lng, or entity_type + id; optional radius_m, as_of): the quote returns the `tier` that site gets (decided now, before any charge) and THAT tier's price — without a site it lists both tier prices.
{"properties":{"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"As Of"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Entity Type"},"hops":{"anyOf":[{"type":"integer ⟨2 unchanged words⟩ "default":null,"title":"Hops"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Id"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lng"},"path":{"title":"Path","type":"string"},"radius_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Radius M"}},"required":["path"],"title ⟨3 unchanged words⟩
⟨203 unchanged words⟩ null,"title":"Refund On Empty"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"site.reconstruction: the model tier this site gets (lidar_2m | dem_30m), decided before any charge","title":"Tier"},"usd":{"anyOf":[{"type":"number ⟨10 unchanged words⟩
⟨183 unchanged words⟩ a dated height source (USGS 3DEP lidarwhereinittheexistsUS, Canada's HRDEM lidar by acquisition project in Canada, else NASA ICESat-2 profiles via SlideRule), bias-corrected on stable ground, volume = mean height × area ± itsuncertainty,uncertainty; when BOTH dates are lidar surfaces the changebetweenisdatestheir DIRECT DIFFERENCE, so the 2011–2015 reference and its error cancel (`change_method` says which; `change_beyond_uncertainty` = |change| > 2σ), and a confidence — or untestable with what ⟨163 unchanged words⟩
A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data. `measurements` (computed on the elevation source's own grid, every block with `source` and `accuracy`): site_extent (side, area, bbox, CRS); elevation (min, max, mean, relief, vertical datum); slope_deg (p10/p50/p90/max/mean + share per class 0–5/5–15/15–30/ 30–45/45–90°); pits (closed depressions filled to their spill level: area_m2, depth_max_m, depth_mean_m, volume_m3 ± volume_uncertainty_m3, spill and floor elevation, centre); heaps (closed mounds: …
Certificate changed, valid to 2026-12-02
Changed the definition of "market_request"
⟨68 unchanged words⟩ ttl_seconds? (expiry), speed?, privacy_mode?, contract_escrow?, physical_claim?, idempotency_key?}. Quote a specific request with `market_quote` before accepting a match. PHYSICAL TRADES: resource_type scene_stack, change_report, site_reconstruction or satellite_imagery MUST carry physical_claim {kind: physical_change|physical_state, site_lat, site_lng, t1, t0 (for a change), radius_m?} — the backend refuses the request without it; the trade is judged against a satellite frame at that site and date. ESCROW LANE: every trade's joules are held ⟨154 unchanged words⟩
{"$defs":{"PhysicalClaimBody":{"additionalProperties":false,"properties":{"kind":{"description":"physical_change: something changed at the site between t0 and t1 · physical_state: the site shows something at t1","enum":["physical_change","physical_state"],"title":"Kind","type":"string"},"radius_m":{"anyOf":[{"maximum":2500,"minimum":50,"type":"number"},{"type":"null"}],"default":null,"title":"Radius M"},"site_entity_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"title":"Site Entity Id"},"site_entity_type":{"anyOf":[{"enum":["deposit","infrastructure","company","project"],"type":"string"},{"type":"null"}],"default":null,"title":"Site Entity Type"},"site_lat":{"maximum":90,"minimum":-90,"title":"Site Lat","type":"number"},"site_lng":{"maximum":180,"minimum":-180,"title":"Site Lng","type":"number"},"t0":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"YYYY-MM-DD; required for physical_change, before t1, on or after 1984-03-16","title":"T0"},"t1":{"description":"YYYY-MM-DD","title":"T1","type":"string"}},"required":["kind","site_lat","site_lng","t1"],"title":"PhysicalClaimBody","type":"object"},"Added "entity_change" and "place_index"; changed the definition of "hops" and "relationships" (40 tools before, 42 now)
{"properties":{"as_of":{"default":null,"title":"As Of","type":"string"},"entity":{"default":null,"title":"Entity ⟨58 unchanged words⟩
⟨383 unchanged words⟩ wallet: reserved vs settled, per attempt). AS OF A DATE (GR-126-5): `as_of` = YYYY-MM-DD or a UTC datetime (needs one entity) answers TWICE, labelled — `true_at`: the edges true then in VALID time (every hop: a source dates its start on/before as_of, or — start unknown — a source stated it by then, and it had not ended), with the excluded edges counted by reason (began after / ended by / first stated after / undated); and `served_at`: the edges GreenlandAI SERVED then in RECORD time, each with the observation it rests on (a dated archive snapshot, the record-time epoch, or a recorded version); before 2026-07-30 what we served is not recorded by id and the answer says so. One request, one price; nothing in either answer costs nothing; a bad or future as_of is a 400, not charged.
Added "entity_history", "entity_state" and "look_through"; changed the definition of "deposit_status", "funding_prepare" and "look_at" (37 tools before, 40 now)
⟨194 unchanged words⟩ own wallet's deposits (greenlandai.ai/api/v1/agent/me/deposit-status); an owner'sdeveloperownkeycredential is told where its own address and status are.
⟨109 unchanged words⟩ ) plus its owner's funding route; an owner'sdeveloperownkey
Changed the definition of "hops" and "relationships"
⟨73 unchanged words⟩ = 400 on both paths, before anychargecharge; entity_type + entity_id pin one entity, and a name matching several is a 409 listing the candidates, nothing charged); also the SDK helper name. ⚠ CHARGING ⟨209 unchanged words⟩
⟨5 unchanged words⟩ ":"Entity","type":"string"},"entity_id":{"default":null,"title":"Entity Id","type":"string"},"entity_type":{"default":null,"title":"Entity Type","type":"string"},"hops":{"default":1,"title":"Hops ⟨35 unchanged words⟩
Changed the definition of "deposit_status" and "funding_prepare"
⟨146 unchanged words⟩ held_no_fund have not yet occurred on real funds. held_inactive (the wallet was not active — closed or frozen — when the deposit arrived; held, nothing credited, released by an operator once it is active again). Bearer or agent key required. A GreenlandAIkeyAGENT key (gai_)hasreadsnoitsUSDCown wallet's depositson(greenlandai.ai/api/v1/agent/me/deposit-status);theanpayment
Changed the definition of "deposit_status" and "funding_prepare"
⟨151 unchanged words⟩ on real funds. Bearer or agent key required. A GreenlandAI key (gai_) has no USDC deposits on the payment rail: the answer says so and names the funding route instead.
⟨84 unchanged words⟩ stale state; it does not itself move money. A GreenlandAI key (gai_) is not a payment-rail credential: an AGENT key is told how its owner funds it (an agent key has no USDC address of its own yet); an owner's developer key is told where its own address is.
Changed the definition of "market_request" and "trade_settlement"
⟨67 unchanged words⟩ (dict), ttl_seconds? (expiry), speed?, privacy_mode?, contract_escrow?, idempotency_key?}. Quote a specific request with `market_quote` beforeaccepting a match. ESCROW LANE: every trade's joules are held in escrow either way. The DEFAULT is the LEDGER LANE — escrow held in a system wallet and settled on the ledger (each settlement leg anchored on chain), NO on-chain contract and no contract fee; the match reads `escrow_bsv_state: "NO_CONTRACT"`, which is the normal, terminal state of that lane, not a failure. Set `contract_escrow: true` to opt in to the on-chain escrow contract lane for a flat contract fee added to your lock; the contract is mandatory for large trades. It takes effect ONLY where an oracle backs the trade (large enough to attract oracle verification, or an oracle-verified provider): a non-oracle opt-in falls back to the ledger lane with no contract and no fee, and the match returns `contract_escrow: false` plus a `contract_note` saying why. Fee and thresholds: https://raree.ai/llms.txt (not restated here). After settlement, `trade_settlement` shows the contract's own legs in its `contract` section (null on a ledger-lane trade).
Changed the definition of "billing_quote", "deposit_status", "funding_prepare" and 1 more
⟨54 unchanged words⟩ /api/v1/nearby" (`nearby`); `hops` = graph depth(1-10for—ayourrelationships pathtier(ancapsagentit:keyPioneer/FCgoes3,toTEN/Pro10
Changed the definition of "billing_attempts", "company", "deposit" and 9 more
⟨132 unchanged words⟩ hops, empty results). Match `attempt_id` to `metering.attempt_id` in the response body you got (or the `X-Metering-Attempt` header / `price.attempt_id`;`price.attempt_id``look_at`'sonimagetheresultresponsecarriesyouitgot.as `metering_attempt`). `limit` 1-200 (default 50), `offset` for ⟨6 unchanged words⟩
Added "deposit" and "deposits"; changed the definition of "billing_quote", "company", "market_match" and 3 more (35 tools before, 37 now)
⟨46 unchanged words⟩ ), "/api/v1/companies/{id}" (`company`), "/api/v1/deposits" (`deposits`), "/api/v1/deposits/{id}" (`deposit`), "/api/v1/nearby" (`nearby`); `hops` = graphdepth (1-201-10 — your tier caps it: Pioneer/FC 3, TEN/Pro 5, Enterprise 10) for a relationships path. Priced at YOUR ⟨46 unchanged words⟩
One company's record and graph neighbourhood byid.
Added "deposit_status" and "trade_settlement"; changed the definition of "funding_prepare" (33 tools before, 35 now)
⟨10 unchanged words⟩ a website to visit (operator lock).States the code-true funding routes and whetherUSDCeachon Base islive,thesoliveanagent-fundableagentrail:knowsdepositwhatUSDCitto
Added "billing_attempts"; changed the definition of "company", "hops", "look_at" and 4 more (32 tools before, 33 now)
⟨65 unchanged words⟩ 100 J call debits 101 J) = `joules_all_in`. ⚠ CHARGING: the meter RESERVES before the query runs and SETTLES after delivery for what was actually delivered (an empty result settles to 0; a partial traversal settles for the hops delivered; a 4xx releases the reservation). An abandoned or timed-out call still settles once the backend delivers. A replay is served free only for the SAME credential + SAME idempotency key + SAME request within 15 minutes — a different payer is a different payer. Every call through this relay carries a fresh key, so a retry here is always a new charge. Price with `billing_quote` first; verify any charge with the `billing_attempts` tool (own wallet: reserved vs settled, per attempt).
⟨66 unchanged words⟩ params to `relationships`; also the SDK helper name.
Changed the definition of "balance_proof", "billing_quote", "bridge_proof" and 29 more
before
—after
{"additionalProperties":true,"title":"balance_proofDictOutput","type":"object"}before
—after
{"additionalProperties":true,"description":"billing_quote — covers BOTH backend shapes (pricing_model 'per_hop' carries billed_hops /\nrate_per_hop / refund_on_empty / quote_is_maximum; 'flat_query_type' omits them). All optional,\nso neither shape errors.","properties":{"billed_hops":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Billed Hops"},"hops":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Hops"},"joules":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"BASE price, before the rail surcharge","title":"Joules"},"joules_all_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"THE TRUE DEBIT — fund this, not `joules`","title":"Joules All In"},"partial_refund_note":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Partial Refund Note"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Path"},"peg":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Peg"},"pricing_model":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pricing Model"},"pricing_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pricing Tier"},"query_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Query Type"},"quote_is_maximum":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Quote Is Maximum"},"rail_fee_joules":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the ~0.5% rail surcharge, rounded up","title":"Rail Fee Joules"},"rate_per_hop":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Rate Per Hop"},"refund_on_empty":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Refund On Empty"},"usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Usd"}},"title":"QuoteOut","type":"object"}Certificate recorded, valid to 2026-11-30
Authorization not required
Unknown → Live
First tool surface recorded: 32 tools (server version 0.5.1+45336d2)
https://mcp.greenlandai.ai/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 20 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
{"properties":{"as_of":{"default":null,"title":"As Of","type":"string"},"entity":{"default":null,"title":"Entity ⟨58 unchanged words⟩
change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class (water · ice · canopy · pad · stockpile · unknown) the area in m², by_sensor_m2 {optical, radar}, `said` (what each instrument saw: an area, "saw no change", "makes no call", or "untestable (reason)"), sensors_agreed, and a `confidence` from agreement with `confidence_why`: high = optical and radar both flag it in the same place; medium = one flags it and the other is blind to the class or untestable; low = they disagree (different places, or one flags …
place.index — WHAT EXISTS AT A PLACE, AND WHEN. Rows within `radius_km` (default 2, max 50) of lat + lng, or of an entity's site (entity_type deposit|infrastructure|company|project + id; a country-centre anchor is refused 409, not charged), newest first: `still` = a satellite still a route delivered (look_at, look_through, entity_state) or a frame entity_change used — scene id, acquisition date, platform, cloud cover, the ground it covers (footprint_m2); never who asked. `quote` = a dated source attestation of a relationship, at each end of the relation that has a site (relati…
⟨41 unchanged words⟩ default 20). AGENT KEYS ONLY (asession/devbrowserkeysession is refused BEFORE any charge). Metered on ⟨374 unchanged words⟩
history(entity) — the CHEAP INDEX of one entity's dates (the place across time). `entity_type` deposit|infrastructure|company| project + `id`. Returns: `frames` — the imagery index over its coordinates (scene dates, cloud cover, scene ids, counts by year; NO images — fetch stills with `look_at` or a stack with `look_through`, the paid calls); `snapshots` — our record of the row since record time began (2026-10-03 19:29Z: versions with the fields that changed; before that "not recorded online"); `what_changed` — a short newest-first list (relationship began / ended with its bas…
state(entity, as_of) — ONE packet for one entity at a date (YYYY-MM-DD, default today): `target` (the entity as WE held it at as_of — before record time began, as held now, labelled), `pins` (look_from's frame, only pins we held by as_of; later additions counted), `graph` (its 1-hop relationships VALID at as_of — began on/before as_of, or stated by a source on/before as_of with the start unknown, and not ended by as_of — each with why; excluded edges counted by reason; never today's edges painted onto a past date), `image` (look_at's still for as_of — `as_of` is the SCENE's da…
The image stack — an ORDERED STACK of dated Sentinel-2 ARCHIVE stills of ONE site across a date range (the place across time). Pose = lat/lng OR entity_type+id (anchor), the same pose rule as `look_at`. `t0` (YYYY-MM-DD, on or after 2015-06-23) and optional `t1` (default today) bound the range; `max_frames` (1-12, default 6) cuts it into that many equal windows, ONE still per window — the newest scene ACQUIRED inside that window with cloud cover at or under `max_cloud` (0-100, default 20). Each frame says its own `as_of` (the SCENE's date — never the window, never your request…
⟨25 unchanged words⟩ meter. Typed query params (GET /relationships): the answer is about ONE entity (GreenlandAI 2026-10-01). entity_type ("company" | "infrastructure" | "deposit" | "project") + entity_id pin the STARTNODENODE; or entity —matchedtheasoneaentity whose name equals it (case-insensitive),SUBSTRINGelseoftheanone whose name contains it. If several entities match, the callentity/companyfailsNAME(isError,neverupstream_statusan409,idnothing charged) with upstream_body.detail = {error: "3ambiguous_entity", candidates:matches[{entity_type,anyentity_id, name,containingcountry}],"3"how_to_choose}and—resolvescalltoagainanwitharbitraryentity_type + entity_id from one,soofpassthem.aThefull,answer'sdistinctive`resolved`name),names the entity it is about. hops (traversal DEPTH 1-10, default 1 — ⟨365 unchanged words⟩
⟨5 unchanged words⟩ ":"Entity","type":"string"},"entity_id":{"default":null,"title":"Entity Id","type":"string"},"entity_type":{"default":null,"title":"Entity Type","type":"string"},"hops":{"default":1,"title":"Hops ⟨35 unchanged words⟩
⟨86 unchanged words⟩ it does not itself move money. A GreenlandAI AGENT key (gai_)is not a payment-rail credential: an AGENT key is told howgets itsownerOWNfundsUSDCitaddress (angreenlandai.ai/api/v1/agent/me/deposit-addressagent key—hascreditsnothe agent'sUSDCownaddresswallet)ofplus itsownowner'syet);funding route; an owner's developer key is told where its own address is.
{"$defs":{"RequestBody":{"additionalProperties":false,"properties":{"contract_escrow":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"opt in to the on-chain escrow contract lane (a flat contract fee added to your lock). Takes effect ONLY where an oracle backs the trade; otherwise the trade falls to the default ledger lane with no contract and no contract fee, and the match says why (contract_escrow=false + contract_note)","title":"Contract Escrow"},"frontier":{"title":"Frontier","type": ⟨123 unchanged words⟩
⟨320 unchanged words⟩ Own trades only. Bearer or agent key required. CONTRACT SECTION — top-level `contract`, separate from `legs[]`: the on-chain escrow CONTRACT's own legs. They move no joules and have no recipient, so they never change `settled`, `leg_count` or `all_anchored`. `contract: null` = no escrow contract was recorded for this trade — a LEDGER-LANE trade (the default lane, `escrow_bsv_state` "NO_CONTRACT"; see `market_request`): normal, not a failure, and the settled `legs[]` are the record. Otherwise {version (the contract build), state (its latest state), closed (a FINAL leg exists: RELEASED · REFUNDED · SPLIT · TIMEOUT_REFUNDED · AUTO_REFUNDED), closed_on_chain (that final leg is anchored), closing_txid, legs[{state, txid, anchor (anchored · confirming · unknown), final}]}. An administrative closure is not a final leg, so it reads closed=false. `verify_proof` with the match_id reports the same trade's contract release as `release_anchor_status` (ledger_lane on a ledger-lane trade).
⟨29 unchanged words⟩ 'anchored'","title":"All Anchored"},"contract":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"the escrow CONTRACT's own chain legs {version, state, closed, closed_on_chain, closing_txid, legs[]}; null = no escrow contract was recorded (a ledger-lane trade)","title":"Contract"},"leg_count":{"anyOf":[{"type":"integer ⟨54 unchanged words⟩
⟨21 unchanged words⟩ joules in your wallet) · held_below_min (under5 USDC`minimum_usdc` — held and accumulated, credits as one entry once your totalreaches5reachesUSDC;it; nothing lost) · held_above_max (over the max ⟨110 unchanged words⟩
⟨30 unchanged words⟩ Base address (derived from your credential), at or above the live minimum5(`minimum_usdc`,USDCread per call from deposit-status), creditedautomatically when the deposit scanner sees it — track it with`deposit_status`. Card funding stays a human web flow. ⟨24 unchanged words⟩
⟨49 unchanged words⟩ key is refused BEFORE any charge). Metered,aonread:its150ownJprice(all-inline151— quote it first with `billing_quote("/api/v1/look.at"),` — and refunded in full if no image isdelivered. RETURNS THE IMAGE (jpeg) as MCP ⟨346 unchanged words⟩
⟨7 unchanged words⟩ id; the response carries `charged_joules` — the all-injoulesPRICE of THIS callcost(itonerideskey on every meteredread:responsecompanies,—deposits,theinfrastructure,companies/deposits/infrastructure/ projects reads,listrelationships, andby-idlook_from / map_viewport / look_at). Metered — debited from the CALLINGagent's own wallet, not the owner's (read ⟨159 unchanged words⟩ wallet: reserved vs settled, per attempt). WHAT YOU PAID: the JSON response carries a top-level `charged_joules` — the all-in PRICE of this call — and a `metering` block written AFTER the settle has run: {attempt_id, settlement, settled_joules, check}. `metering.settlement` is whether you PAID: settled · settled_zero (empty result, nothing moved) · settle_failed (delivered but UNPAID — the wallet is then locked until it clears; the next metered call 402s naming the attempt, the amount and what clears it) · released (4xx/5xx, nothing moved) · unknown. `settled_joules` is what actually left the wallet (0 unless settled). A cached replay carries no block.
⟨51 unchanged words⟩ wallet; the response carries `charged_joules` (the all-injoulesPRICETHISof this call)costand the `metering` block (`metering.settlement` = whether you PAID, `settled_joules` = what left the wallet). Quote with `billing_quote("/api/v1/deposits/{id}")`.
⟨54 unchanged words⟩ a human to release; nothing lost) ·swept.swept · held_no_fund (the deposit reached the minimum but the platform's funding wallet could not cover the joules at that moment — held, nothing moved, nothing lost; credited AUTOMATICALLY once platform funding is restored — the scanner retries it every minute — no action needed from you). Sent USDC and see nothing yet? Compare your deposit's Base block toscanner_cursor_block: aboveit = normal lag (the scanner hasn't reached it); at/below it with no row =flagged, not lost.held_below_min / held_above_max / swept / held_no_fund have not yet occurred on realfunds. Bearer or agent key required.
⟨134 unchanged words⟩ {count, total, deposits[], commodity_filter, charged_joules, metering}. Metered — `charged_joules` is the all-injoulesPRICETHISofcallthiscostcall, debited from the CALLING agent's own wallet;quote`metering.settlement` / `metering.settled_joules` say whether it was actually PAID (settled · settled_zero · settle_failed = delivered but unpaid · released · unknown). Quote first with`billing_quote("/api/v1/deposits")`. Same as theSDK `deposits(commodity=...)`.
⟨60 unchanged words⟩ not the meter. Identical behavior and params to`relationships`;`relationships` (incl. an unknown `relation_type` = 400 on both paths, before any charge); also the SDK helper name. ⚠ CHARGING: the ⟨104 unchanged words⟩ wallet: reserved vs settled, per attempt). WHAT YOU PAID: the JSON response carries a top-level `charged_joules` — the all-in PRICE of this call — and a `metering` block written AFTER the settle has run: {attempt_id, settlement, settled_joules, check}. `metering.settlement` is whether you PAID: settled · settled_zero (empty result, nothing moved) · settle_failed (delivered but UNPAID — the wallet is then locked until it clears; the next metered call 402s naming the attempt, the amount and what clears it) · released (4xx/5xx, nothing moved) · unknown. `settled_joules` is what actually left the wallet (0 unless settled). A cached replay carries no block.
⟨117 unchanged words⟩ extent_km, attribution, cache, entity_cap_consumed (0),price.and the charge: `price_charged_joules` (the all-in price) + `metering_attempt` / `metering_status` — the settle truth for an IMAGE, which has no JSON body to carry a `metering` block (the X-Metering-Status header: completed = paid · settled_zero · settle_failed = delivered but UNPAID · released · cached_replay). A cloudy or MISSING scene returns `available:false` ⟨13 unchanged words⟩ not an error, and NEVER a fabricatedimage.image; that JSON carries top-level `charged_joules` (0 — refunded) and the `metering` block described below. ⚠ CHARGING: the meter RESERVES before the query ⟨99 unchanged words⟩ wallet: reserved vs settled, per attempt). WHAT YOU PAID: the JSON response carries a top-level `charged_joules` — the all-in PRICE of this call — and a `metering` block written AFTER the settle has run: {attempt_id, settlement, settled_joules, check}. `metering.settlement` is whether you PAID: settled · settled_zero (empty result, nothing moved) · settle_failed (delivered but UNPAID — the wallet is then locked until it clears; the next metered call 402s naming the attempt, the amount and what clears it) · released (4xx/5xx, nothing moved) · unknown. `settled_joules` is what actually left the wallet (0 unless settled). A cached replay carries no block.
⟨66 unchanged words⟩ own wallet, not the owner's; the response's top-level `charged_joules` is the ALL-INdebitprice (base + 0.5% rail — the same figure as `price.charged_joules`; the `price` block stays as the breakdown). Read the wallet with the `joules_balance` tool. ⟨205 unchanged words⟩ wallet: reserved vs settled, per attempt). WHAT YOU PAID: the JSON response carries a top-level `charged_joules` — the all-in PRICE of this call — and a `metering` block written AFTER the settle has run: {attempt_id, settlement, settled_joules, check}. `metering.settlement` is whether you PAID: settled · settled_zero (empty result, nothing moved) · settle_failed (delivered but UNPAID — the wallet is then locked until it clears; the next metered call 402s naming the attempt, the amount and what clears it) · released (4xx/5xx, nothing moved) · unknown. `settled_joules` is what actually left the wallet (0 unless settled). A cached replay carries no block.
⟨134 unchanged words⟩ is base + 0.5% rail surcharge = `joules_all_in`. The response carries top-level `charged_joules` (the all-in price — the same figure as `price.charged_joules`; the `price` block stays as the breakdown). Carries `source_tier`/`tier_label`per pin; energy off, pipelines never, centroids ⟨115 unchanged words⟩ wallet: reserved vs settled, per attempt). WHAT YOU PAID: the JSON response carries a top-level `charged_joules` — the all-in PRICE of this call — and a `metering` block written AFTER the settle has run: {attempt_id, settlement, settled_joules, check}. `metering.settlement` is whether you PAID: settled · settled_zero (empty result, nothing moved) · settle_failed (delivered but UNPAID — the wallet is then locked until it clears; the next metered call 402s naming the attempt, the amount and what clears it) · released (4xx/5xx, nothing moved) · unknown. `settled_joules` is what actually left the wallet (0 unless settled). A cached replay carries no block.
⟨207 unchanged words⟩ wallet: reserved vs settled, per attempt). WHAT YOU PAID: the JSON response carries a top-level `charged_joules` — the all-in PRICE of this call — and a `metering` block written AFTER the settle has run: {attempt_id, settlement, settled_joules, check}. `metering.settlement` is whether you PAID: settled · settled_zero (empty result, nothing moved) · settle_failed (delivered but UNPAID — the wallet is then locked until it clears; the next metered call 402s naming the attempt, the amount and what clears it) · released (4xx/5xx, nothing moved) · unknown. `settled_joules` is what actually left the wallet (0 unless settled). A cached replay carries no block.
⟨82 unchanged words⟩ `billing_quote` takes hops=), relation_type (one relation label, e.g. OPERATES, CONTAINS, MEMBER_OF — checked against the API'sallow-list;allow-list on BOTH paths, with or without `entity`: an unknown->labelbackendis a 400 naming the allowed set, BEFORE any charge — never an empty 200), search (free-text), limit (<=100, ⟨206 unchanged words⟩ wallet: reserved vs settled, per attempt). WHAT YOU PAID: the JSON response carries a top-level `charged_joules` — the all-in PRICE of this call — and a `metering` block written AFTER the settle has run: {attempt_id, settlement, settled_joules, check}. `metering.settlement` is whether you PAID: settled · settled_zero (empty result, nothing moved) · settle_failed (delivered but UNPAID — the wallet is then locked until it clears; the next metered call 402s naming the attempt, the amount and what clears it) · released (4xx/5xx, nothing moved) · unknown. `settled_joules` is what actually left the wallet (0 unless settled). A cached replay carries no block.
⟨131 unchanged words⟩ to the platform), amount, status, txid, anchor}.,Eachplus top-level `all_anchored` (true only when every leg's anchor is `anchored`). `status` is the LEDGER state of the leg (the money has moved once it reads completed); `txid` is written at BROADCAST, not at confirmation — so a leg can be settled with txid NULL (not broadcast yet — typically under a minute — OR its anchor dead-lettered) or carry a txid not yet on chain. A null txid on a fresh read is NOT a missing or failed leg: read `anchor`, theon-chainstatetransactionto act on — queued | confirming | confirmed → poll (~30 s); anchored → verifyitthe leg's txid on chain yourself,(e.g. the `verify_proof` tool with the txid) — you don't have to trustus.us; failed | cancelled → the ledger leg settled but its anchor dead-lettered and will NOT reach the chain by itself (escalate); none → no anchor was attempted; unknown → a queue state the view does not recognise. This is the trade-WIDE view: `deposit_status` and ⟨22 unchanged words⟩
⟨8 unchanged words⟩ GET /api/v1/wallet/trade/{match_id}/settlement.","properties":{"all_anchored":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true only when every leg's anchor is 'anchored'","title":"All Anchored"},"leg_count":{"anyOf":[{"type":"integer ⟨54 unchanged words⟩
⟨17 unchanged words⟩ be a party to the match. Bearer required. `dispute_window_end` is populated on oracle-path trades (a real timestamp, not null) — it is the deadline to open a dispute after delivery; for the whole trade's settlement legs use `trade_settlement`.
⟨101 unchanged words⟩ Requires being the assigned oracle + marketplace:write. ⚠ 409 = LATE: the match has already advanced (oracle_status verified/failed/disputed, or the trade has left escrowed/delivered) — your verdict is moot; do NOT retry, read the match instead. Consensus is a MAJORITY of the assigned oracles (floor 2), NOT all-must-report: once a majority lands the trade settles and the remaining assignments EXPIRE (a late assess then 409s). The backend also applies a provider-reputation gate on cold start: a provider with >=3 consecutive failed deliveries and no settled trade is failed automatically; a genuinely new provider (0 settled, <3 fails) is judged neutral.
⟨90 unchanged words⟩ · …), recipient_role (a ROLE —provider/oracle/treasury/buyer/fee-collectionprovider · oracle · treasury · fee-collection · buyer — NEVER a walletidid; the sentinel "unknown" marks a leg type the backend does not map yet — logged loudly on their side, never money to the platform), amount, status, txid}. Each leg's ⟨44 unchanged words⟩
⟨84 unchanged words⟩ verbatim — do NOT retry with another destination. Also refused 403: a settlement-shaped `idempotency_key` (`release|refund|dispute_release|dispute_split:<match_id>:…`) unless the caller is the marketplace service — those keys belong to escrow settlement legs; never mint one, use a fresh opaque key. LIMITS ARE LIVE CONFIG, NOT CONSTANTS: the ⟨116 unchanged words⟩
One resource deposit's record by numeric id (relays GET /api/v1/deposits/{id}), including its `commodities[]` ({name, role: primary|byproduct, group} — the commodity graph, with `resource_type` as the primary label) and operators. Pair with `deposits(commodity=...)`: search by commodity, then read the deposit. Metered — debited from the CALLING agent's own wallet; the response carries `charged_joules` (the all-in joules THIS call cost). Quote with `billing_quote("/api/v1/deposits/{id}")`.
Search resource deposits (relays GET /api/v1/deposits). Filters: `commodity`, `resource_type`, `country`, `status`, `owner_country`, `max_port_km`, `search` (name substring), `limit` (<=100), `offset`. ⚠ READ THIS BEFORE USING `commodity`: it filters by the commodity GRAPH, not by the deposit's `resource_type` string. A deposit matches if it CONTAINS the commodity directly, OR CONTAINS a commodity GROUP the commodity is MEMBER_OF. So `commodity="neodymium"` returns EVERY rare-earth-element deposit — including ones whose name and `resource_type` never say "neodymium" …
⟨4 unchanged words⟩ "title":"Needed","type":"integer"},"wallet_id":{"title":"Wallet Id","type":"string"}},"required":["wallet_id"],"title":"funding_prepareArguments","type":"object"}
{"additionalProperties":true,"description":"funding_prepare —authoredrelaysbydeposit-addressthisforrelay;livenoUSDCbackend.availability + the caller's own address.","properties":{"in_band_agent_funding_live":{"anyOf": ⟨59 unchanged words⟩
YOUR OWN USDC-on-Base deposit state (relays GET /api/v1/wallet/deposit-status; own wallet only, derived from your credential, never a parameter). States: credited (joules in your wallet) · held_below_min (under 5 USDC — held and accumulated, credits as one entry once your total reaches 5 USDC; nothing lost) · held_above_max (over the max — held for a human to release; nothing lost) · swept. Sent USDC and see nothing yet? Compare your deposit's Base block to scanner_cursor_block: above it = normal lag (the scanner hasn't reached it); at/below it with no row = flagged, not l…
YOUR OWN trade's settlement — every leg of a marketplace trade you were the BUYER or SELLER of (relays GET /api/v1/wallet/trade/{match_id}/settlement). Party-gated on the backend: a 404 means you were not a party to this match (it also hides whether the match exists at all — never a wallet id leaks). Returns `your_role` (buyer|seller), `settled` (true once the provider has been paid), `leg_count`, and `legs[]` — each leg is {type (provider_payout · oracle_fee · platform_fee · contract_fee · fund_fee · buyer_refund · dispute_refund · dispute_payout · …), recipient_role (a R…
⟨144 unchanged words⟩ not an error, and NEVER a fabricated image. ⚠ CHARGING: the meter RESERVES before the query runs and SETTLES after delivery for what was actually delivered (an empty result settles to 0; a partial traversal settles for the hops delivered; a 4xx releases the reservation). An abandoned or timed-out call still settles once the backend delivers. A replay is served free only for the SAME credential + SAME idempotency key + SAME request within 15 minutes — a different payer is a different payer. Every call through this relay carries a fresh key, so a retry here is always a new charge. Price with `billing_quote` first; verify any charge with the `billing_attempts` tool (own wallet: reserved vs settled, per attempt).
⟨180 unchanged words⟩ country-centroid placeholder pins (both off by default). ⚠ CHARGING: the meter RESERVES before the query runs and SETTLES after delivery for what was actually delivered (an empty result settles to 0; a partial traversal settles for the hops delivered; a 4xx releases the reservation). An abandoned or timed-out call still settles once the backend delivers. A replay is served free only for the SAME credential + SAME idempotency key + SAME request within 15 minutes — a different payer is a different payer. Every call through this relay carries a fresh key, so a retry here is always a new charge. Price with `billing_quote` first; verify any charge with the `billing_attempts` tool (own wallet: reserved vs settled, per attempt).
⟨151 unchanged words⟩ off unless asked (same honesty as `look_from`). ⚠ CHARGING: the meter RESERVES before the query runs and SETTLES after delivery for what was actually delivered (an empty result settles to 0; a partial traversal settles for the hops delivered; a 4xx releases the reservation). An abandoned or timed-out call still settles once the backend delivers. A replay is served free only for the SAME credential + SAME idempotency key + SAME request within 15 minutes — a different payer is a different payer. Every call through this relay carries a fresh key, so a retry here is always a new charge. Price with `billing_quote` first; verify any charge with the `billing_attempts` tool (own wallet: reserved vs settled, per attempt).
⟨92 unchanged words⟩ call debits 101 J) = `joules_all_in`. Carries `source_tier`/`tier_label`. ⚠ CHARGING: the meter RESERVES before the query runs and SETTLES after delivery for what was actually delivered (an empty result settles to 0; a partial traversal settles for the hops delivered; a 4xx releases the reservation). An abandoned or timed-out call still settles once the backend delivers. A replay is served free only for the SAME credential + SAME idempotency key + SAME request within 15 minutes — a different payer is a different payer. Every call through this relay carries a fresh key, so a retry here is always a new charge. Price with `billing_quote` first; verify any charge with the `billing_attempts` tool (own wallet: reserved vs settled, per attempt).
⟨194 unchanged words⟩ and a held result will not reflect that. ⚠ CHARGING: the meter RESERVES before the query runs and SETTLES after delivery for what was actually delivered (an empty result settles to 0; a partial traversal settles for the hops delivered; a 4xx releases the reservation). An abandoned or timed-out call still settles once the backend delivers. A replay is served free only for the SAME credential + SAME idempotency key + SAME request within 15 minutes — a different payer is a different payer. Every call through this relay carries a fresh key, so a retry here is always a new charge. Price with `billing_quote` first; verify any charge with the `billing_attempts` tool (own wallet: reserved vs settled, per attempt).
YOUR OWN CHARGE RECORD — what this wallet was charged for, attempt by attempt, so you can verify your bill without asking us (relays GET /api/v1/billing/attempts; own wallet only — derived from your credential, never a parameter). Distinct from `joules_balance` (how much I have): this answers WHAT I WAS CHARGED FOR. Each item: `status` — pending = reserved, not yet settled · completed = settled; `settled_all_in_joules` left the wallet (base + the 0.5% rail fee) · settled_zero = delivered nothing, nothing moved · failed = released, nothing moved (a 4xx, a 5xx, a refused res…
before
—after
{"additionalProperties":true,"title":"bridge_proofDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"companyDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"contribute_receiptsDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"contribute_relationsDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"contribute_statsDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"contribute_submissionsDictOutput","type":"object"}before
—after
{"additionalProperties":true,"description":"funding_prepare — authored by this relay; no backend.","properties":{"in_band_agent_funding_live":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"In Band Agent Funding Live"},"needed":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Needed"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Note"},"routes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Routes"},"wallet_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Wallet Id"}},"title":"FundingPrepareOut","type":"object"}before
—after
{"additionalProperties":true,"title":"hopsDictOutput","type":"object"}before
—after
{"additionalProperties":true,"description":"joules_balance — the union of its two branches. GAI agent-key branch returns\n{agent_id, agent_name, wallet_id, balance_joules} (+ the `balance` shape-compat shim added by\nthis relay); the JoulePAI branch returns WalletOut, whose wallet id field is `id`, not\n`wallet_id`. Both are declared so either branch is structured. PII the JP branch may carry\n(email, bsv_address, signup_grant) is deliberately NOT declared — it still passes through as an\nextra, but it is not advertised in a schema that anonymous clients can enumerate.","properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Agent Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Agent Name"},"balance":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"spendable joules; the field to act on","title":"Balance"},"balance_joules":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"GAI agent-branch name for the same figure","title":"Balance Joules"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Handle"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"JoulePAI branch returns the wallet id here","title":"Id"},"owner_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Owner Type"},"verification_status":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Verification Status"},"wallet_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Wallet Id"}},"title":"BalanceOut","type":"object"}before
—after
{"additionalProperties":true,"description":"joules_deficit — computed by this relay, not relayed.","properties":{"have":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Have"},"needed":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Needed"},"shortfall":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"0 means affordable now","title":"Shortfall"},"tool_to_call_next":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"null when nothing is owed","title":"Tool To Call Next"}},"title":"DeficitOut","type":"object"}before
—after
{"additionalProperties":true,"description":"ledger_verify — public anchor list. `anchors` left opaque (per-anchor records).","properties":{"anchors":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"default":null,"title":"Anchors"},"chain_semantics":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Chain Semantics"},"coverage":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Coverage"},"eras":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Eras"},"hash_format":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Hash Format"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Total"}},"title":"LedgerVerifyOut","type":"object"}before
—after
{"additionalProperties":true,"title":"look_atDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"look_fromDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"map_viewportDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"mapdataDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"market_acceptDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"market_listingsDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"market_matchDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"market_provideDictOutput","type":"object"}QuoteReadaone marketplacerequestREQUEST by id (GET /request/{id}; you must own it). Returns the request as the route actually declares it: id, wallet_id, agent_id, frontier, resource_type, unit_type, speed, privacy_mode, contract_escrow, units_needed, max_price_per_unit, priority, requirements, status, units_matched, expires_at, created_at, plus `escrow_terms` —returnsa GENERIC prose block of the escrowtermsrules, identicalandon every request. It does NOT carry this trade's own figures(fee_joules,:deposit_fee_joules`fee_joules`, `escrow_expires_at`buyer_debit_joules,andescrow_expires_at`dispute_window_end` are fields of the MATCH,dispute_window_end)soasreadtypedthem with `market_match`fields.onceParseathose,matchnotexists;prose.`buyer_debit_joules`Bearerappears only on an x402 price quote (a 402 body). Bearer required.
before
—after
{"additionalProperties":true,"description":"market_quote — RAREEAI RequestOut as the route actually declares it. `escrow_terms` is left\nOPAQUE on purpose: a GENERIC prose block, identical on every request. This trade's own figures\n(fee_joules, escrow_expires_at, dispute_window_end) live on MatchOut — the `market_match` payload —\nand are not on this route, so they are not declared here (the tool docstring now says the same).","properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Agent Id"},"contract_escrow":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Contract Escrow"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Created At"},"escrow_terms":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"generic escrow prose; opaque by design","title":"Escrow Terms"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Expires At"},"frontier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Frontier"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Id"},"max_price_per_unit":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Max Price Per Unit"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Priority"},"privacy_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Privacy Mode"},"requirements":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Requirements"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Resource Type"},"speed":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Speed"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Status"},"unit_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Unit Type"},"units_matched":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Units Matched"},"units_needed":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Units Needed"},"wallet_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Wallet Id"}},"title":"RequestQuoteOut","type":"object"}before
—after
{"additionalProperties":true,"title":"market_requestDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"nearbyDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"oracle_assessDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"oracle_assignmentsDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"oracle_deregisterDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"oracle_registerDictOutput","type":"object"}before
—after
{"additionalProperties":true,"title":"relationshipsDictOutput","type":"object"}before
—after
{"additionalProperties":true,"description":"transparency_latest — hourly public attestation.","properties":{"algorithm_version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Algorithm Version"},"anchoring":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Anchoring"},"bridge_root":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Bridge Root"},"bridge_rows":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Bridge Rows"},"bsv_txid":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"may read \"pending\" for ~5h — in-flight, NOT unanchored","title":"Bsv Txid"},"fees":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Fees"},"last_anchored":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"newest attestation actually on chain","title":"Last Anchored"},"merkle_root":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Merkle Root"},"settlement_leaves":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Settlement Leaves"},"settlement_root":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Settlement Root"},"state_root":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"State Root"},"supply_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Supply Verified"},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Timestamp"},"total_supply":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Total Supply"},"tx_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Tx Count"},"volume":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Volume"},"wallet_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Wallet Count"}},"title":"TransparencyOut","type":"object"}before
—after
{"additionalProperties":true,"description":"verify_proof — the ENVELOPE only. `results` is an OPAQUE list and must stay that way: every\nper-record verdict field lives inside it, including `release_anchor_status` (11 values) and the\ntwo independent anchors (ledger_payout_anchor, escrow_contract_release_anchor). Modelling the\ninner records would risk collapsing or refusing an enum value, which is precisely the false\ncertainty this tool exists to prevent. Read the envelope for reachability, the records for verdicts.","properties":{"chain_confirmed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"only true is a verified anchor","title":"Chain Confirmed"},"chain_status":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"bare-txid lookups: confirmed|mempool|not_on_chain|unchecked","title":"Chain Status"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Count"},"degraded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = INCONCLUSIVE, never an absence","title":"Degraded"},"found":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"a record exists in at least one source","title":"Found"},"identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Identifier"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Note"},"recorded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"we hold it even if the chain does not","title":"Recorded"},"results":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"default":null,"description":"per-record verdicts, passed through untouched","title":"Results"},"unavailable_sources":{"anyOf":[{},{"type":"null"}],"default":null,"title":"Unavailable Sources"}},"title":"VerifyOut","type":"object"}before
—after
{"additionalProperties":true,"title":"wallet_transferDictOutput","type":"object"}