Quickstart
Request your first verified attestation in ~5 minutes. (Devnet private beta — you'll need an API key; see Authentication.)
1. Prerequisites
- Python 3.11+
pip install "mcp>=1.0"— the official Model Context Protocol client SDK- An API key (
axm_live_…) from Axiom Stack - Quota: your tier's monthly included allotment, or top up with USDC
You do not need a Solana wallet — the Themra operator settles the on-chain SOL fee server-side; you're metered by your API key.
2. Request an attestation
import asyncio, json, os
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession
API_KEY = os.environ["AXIOM_API_KEY"] # axm_live_... (keep it secret)
ENDPOINT = "https://mcp.axiomstack.dev/mcp" # note the /mcp path
async def main():
headers = {"Authorization": f"Bearer {API_KEY}"}
async with streamablehttp_client(ENDPOINT, headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool(
"axiom_request_attestation",
{"asset_id": "TSLA", "asset_class": 2}, # 2 = equity
)
data = json.loads(result.content[0].text)
print("attestation_pda:", data["attestation_pda"])
print("write_tx_sig: ", data["write_tx_sig"])
print("provider: ", data["attestations"][0]["provider_pubkey"])
print("snapshot_hash: ", data["latest_snapshot_hash"])
asyncio.run(main())
export AXIOM_API_KEY="axm_live_..."
python quickstart.py
A fresh attestation takes ~20 seconds in the default audit tier (measured, audit-grade). For equities, latency_mode="instant" returns data + a provisional proof in under 2 s (audit commit async, ~30 s). The response includes attestation_pda + write_tx_sig so you can verify it on-chain.
3. Next steps
- Buy quota with USDC when your included allotment runs out (
402= top up). - Verify on-chain — confirm the Master Broker signed the record.
- MCP tools reference — all parameters + the read-only tools.
MCP client configuration
Point any MCP client at https://mcp.axiomstack.dev/mcp with an Authorization: Bearer header. The read tools (axiom_quote_fee, axiom_fetch_attestation, axiom_fetch_audit_reference) work anonymously; axiom_request_attestation requires the bearer key. Configs below; see also the MCP tools reference.
Claude Desktop / Cursor (mcpServers entry — a streamable-HTTP server with an auth header):
{
"mcpServers": {
"axiom-oracle": {
"url": "https://mcp.axiomstack.dev/mcp",
"headers": { "Authorization": "Bearer axm_live_<your key>" }
}
}
}
Anonymous reads (
axiom_quote_fee,axiom_fetch_attestation,axiom_fetch_audit_reference) work without theheadersblock; include the bearer header to enableaxiom_request_attestation. If your client doesn't support custom headers on remote MCP servers yet, use the Python SDK (above), which does.
Generic Python MCP SDK — the pattern from step 2: streamablehttp_client(url, headers={"Authorization": "Bearer …"}) → ClientSession → initialize() → call_tool(...).