Xtract MCP
How to cite ForceX MCP results.
Every successful tool result is an answer-first structuredContent contract (source, tool, endpoint, request, answer, data, units, answerable_fields, warnings, citations, usage, validation) plus a plain-text answer card whose Source line identifies the tool, endpoint, dataset and methodology versions.
Page Sections
Where citations live
Every successful Xtract MCP tool result carries its citation in two places. PRIMARY: the citations array inside structuredContent (the model contract) — with source, title, url/docs_url, tool, endpoint, and, when available, served_from, as_of_height, methodology_version, served_at, dataset_version, request_id. Additionally: the plain-text answer card (the single content block) ends with a ready-made one-line source citation. Together they identify exactly what produced the data: the tool, the wrapped REST endpoint, the documentation page, the dataset and methodology versions, the as-of block height where one applies, and the validation state at serving time.
Quote Xtract figures from structuredContent.answer/data and attribute using the citations array; the answer card's Source line carries the same provenance in plain text.
Field reference (citations[0])
Fields below appear in structuredContent.citations[0], null-elided; validation is a separate first-class structuredContent key.
| Field | Meaning |
|---|---|
source | Always ForceX Xtract. |
tool | The canonical MCP tool that produced the result. |
endpoint | The wrapped REST route template. |
url / docs_url | The public reference page for this data. |
request_id | Server-format request identifier (req_ + 16 hex). Format-guaranteed, not server-attested — verification against ForceX logs is the authoritative check. |
served_at | UTC timestamp the result was served. |
served_from | indexed_store, node, indexed_store+node, or control_plane — whether data came from the validated indexed store, the live Litecoin node, or the account control plane. |
dataset_version | The versioned Xtract dataset label (for example v2.6). |
methodology_version | Present on analytics routes with a published methodology (supply, supply-age, economic flow); null elsewhere. |
as_of_height | Present only where a single block height applies (chain tip, block, transaction, output, MWEB block, validation checkpoint, and supply at a height); null elsewhere. |
validation | The five public validation keys: scope, status, validated_height, validated_at, lag_blocks. Non-chain scopes report not_applicable by design. |
The ready-made source line
The answer card (the single content block) ends with a one-line citation with a fixed segment order; segments without a value are omitted:
Source: ForceX Xtract get_charts_supply (GET /xtract/v1/litecoin/charts/supply). Dataset v2.6; methodology litecoin-supply-schedule.v2; as of height 3134692; served 2026-07-02T19:08:19Z; request req_4506d4f6770df15d. Docs: https://forcex.com/xtract/docs/reference/charts-supply/
Live current data
Chart tools return live current data by default: an additive current member (in-progress time_window and/or state_snapshot objects with explicit as-of provenance — height, hash, time, stability) sits directly after data in the structured result, and the answer text distinguishes in-progress windows, rolling windows, state snapshots, and completed closes. A current partial is never summarized as a close; unavailable calculations return an explicit status=unavailable object with a governed reason code. Pass include_current=false to receive the pre-existing response shape. Full model: Live Current Data.
Big integers over MCP
Three lifetime cumulative totals can exceed the 64-bit integer range, so over MCP they are always decimal strings — at every magnitude, never floats, never truncated: cumulative_output_value_atomic_units (network lifetime output turnover, in current.snapshots[].values of get_charts_network), and lifetime_received_atomic_units / lifetime_sent_atomic_units (per-address lifetime totals, in the get_chain_address include=stats expansion). Treat them as exact integer strings (^[0-9]+$); parse with arbitrary-precision arithmetic if you compute with them. All other numeric fields remain JSON integers within the 64-bit range. The wrapped REST API is unchanged and continues to serve these values as JSON integers.
Per-tool references
Each tool links to its MCP reference page and the wrapped REST endpoint reference, which carries the full parameter, response, and methodology documentation.
Integrity notes
request_idis format-guaranteed by the server, not attested: treat it as a correlation token. The authoritative verification is a ForceX-side log lookup.dataset_versionis a versioned dataset label maintained by ForceX operations;methodology_versionvalues come from the ForceX methodology registry. Both are trusted operator-controlled inputs to citation text.validationsemantics depend onscope: chain-scope results carry checkpoint-backed heights and lag; analytics, mempool, and account scopes reportnot_applicableand attest nothing.- Citations describe provenance only. They carry no account, billing, quota, or key material.