Critical Raw Minerals & Urban Mining Oracle (x402)
This server provides a monetized, real-time oracle for critical mineral prices, arbitrage spreads, and urban mining valuations, accessible via API or MCP for AI agents.
Fetch real-time spot prices for Silver, Platinum, Copper, Lithium, and NdDy Rare Earths with multiple unit conversions.
Calculate cross-venue arbitrage spreads (COMEX vs LME Copper, COMEX vs LBMA Silver, Fastmarkets vs SMM Lithium).
Evaluate scrap material value (EV battery black mass, auto catalysts, e-waste PCBs, permanent magnets) with recovery yields and refining charges.
Enforce micro-payments in USDC via x402 protocol on Base network for each query, supporting EIP-712 signatures.
Integrate with AI agents via MCP (stdio or HTTP), Google AP2, and OpenAPI/Swagger docs.
Run as a lightweight Docker container or via PyPI/uvx, with test suite and on-chain Solidity consumer support.
Supports automated x402 Web3 micro-settlements in USDC on the Polygon network for oracle queries, including HTTP 402 payment challenges and EIP-712/EIP-191 signature verification.
EV Battery Critical Minerals & Provenance Oracle (minerals-oracle-x402)
Autonomous Machine-to-Machine (M2M) Compliance & On-Chain Battery Passport Oracle for Critical Minerals (Lithium, Nickel, Cobalt, Copper, Silver).
Verifies real-world mining extraction, stoichiometric mass balances, US IRA Section 30D 50% FTA value thresholds, strict Foreign Entity of Concern (FEOC) taint propagation, EU Battery Regulation (2023/1542) & 2028 Downstream CBAM carbon footprints, ASTM B115 HVDC copper grid standards, LBMA TOPCon solar PV silver purity, and issues cryptographic Merkle Root EIP-712 master attestations on Polygon.
๐ฅ๏ธ Live Web Observatories & Dashboards
๐ฐ๐ท ํ๊ตญ์ด ์ ์ฉ ๋ ธ๋ & ์ปดํ๋ผ์ด์ธ์ค ๊ด์ธก๊ธฐ: http://localhost:8000/ko (๋๋ Cloud Run Live)
๐ Global English Dashboard & Simulator: http://localhost:8000/ (๋๋ Cloud Run Live)
๐ Interactive Swagger OpenAPI Docs: http://localhost:8000/docs
๐ LLM Agent Manifest:
/llms.txt
Related MCP server: hyperd-mcp
โก Key Architectural Capabilities (v2.4.0)
1. Composite EV Battery Master Passport Orchestrator (app/composite_battery_pipeline.py)
Synthesizes the 3 primary battery critical minerals into a unified cell/pack compliance attestation:
Cathode Chemistries: NCM 811 (80% Ni, 10% Co, 10% Mn), NCM 622, NCM 523.
US IRA 30D Critical Minerals $3,750 Tax Credit Formula: $$\text{Procurement Value} = (\text{Li Tons} \times $18,500) + (\text{Ni Tons} \times $17,000) + (\text{Co Tons} \times $32,000)$$ $$\text{FTA Qualifying Ratio} = \frac{\text{Value}{\text{AUS (FTA)}}}{\text{Value}{\text{Total}}} \times 100% \ge 50.0%$$
Strict Zero-Tolerance FEOC Taint Propagation: If any mineral component carries $\ge 25%$ covered nation (China/Russia/Iran/North Korea) equity or operational control, the entire battery pack is disqualified (
FLAG_COMPOSITE_FEOC_TAINT).EU Battery Regulation (2023/1542) & CBAM Scope 1-3 Carbon Footprint:
Captive coal power smelting in Indonesian HPAL triggers
FLAG_EU_BATTERY_CBAM_SURCHARGE(+26.5 kg COโe/kWh penalty).
Cryptographic Merkle Tree & Polygon EIP-712 Master Signature: $$\text{Merkle Root} = \text{0x} + \text{SHA256}(\text{Leaf}{\text{Li}} + \text{Leaf}{\text{Ni}} + \text{Leaf}_{\text{Co}})$$ Signs typed structured data binding
battery_pack_id,chemistry,merkle_root, composite score, and legal disclaimer terms.
2. Dedicated Provenance Pipelines for Core Minerals
flowchart TD
subgraph Mining["1. Global Extraction & Geofencing"]
Li["๐ฆ๐บ Australia (Greenbushes / Pilgangoora)<br/>WA MINEDEX GIS Geofencing"]
Ni["๐ฎ๐ฉ Indonesia (IMIP Morowali / IWIP)<br/>Sulawesi/Halmahera Geofencing"]
Co["๐จ๐ฉ DRC (Kamoto KCC / Tenke / Mutanda)<br/>Katanga Copperbelt Geofencing"]
end
subgraph Processing["2. Stoichiometric Mass Balance & Traps"]
LiProc["Spodumene to LiOH (7.5:1 Yield)<br/>Anti-Transshipment Geofencing"]
NiProc["Limonite to MHP (31.34:1 Yield)<br/>ESDM SIMBARA NTPN Tax Clear<br/>EU CBAM Coal Smelting Audit"]
CoProc["Heterogenite to Hydroxide (23.53:1 Yield)<br/>CEEC Barcode Seal Verification<br/>ILO 138/182 Zero Child Labor Audit"]
end
subgraph Composite["3. Composite Battery Orchestrator"]
Master["NCM 811 Pack Synthesis<br/>IRA FTA Value Ratio (>= 50%)<br/>FEOC Taint Propagation (< 25%)<br/>EU Cradle-to-Gate Carbon Footprint"]
end
subgraph Attestation["4. Cryptographic Proof & Settlement"]
Merkle["Merkle Tree Synthesis<br/>sha256(Leaf_Li + Leaf_Ni + Leaf_Co)"]
Onchain["Polygon EIP-712 Master Signature<br/>x402 0.10 USDC Gasless Settlement"]
end
Li --> LiProc --> Master
Ni --> NiProc --> Master
Co --> CoProc --> Master
Master --> Merkle --> Onchain๐ฆ๐บ Australian Spodumene Lithium Pipeline (app/lithium_pipeline.py)
GIS Geofencing: Validates WA DMIRS MINEDEX tenement boundaries (e.g. Greenbushes
M01/03, PilgangooraM45/1256).Stoichiometric Mass Balance: Enforces strict theoretical yield ratio ($7.5 \pm 0.8\text{t}$ Spodumene concentrate $\rightarrow$ $1.0\text{t}$ Battery-Grade LiOHยทHโO).
Defenses: Defends against Trap 13 (Chinese transshipment relabeling) and Trap 14 (non-linear recovery exaggeration).
๐ฎ๐ฉ Indonesian Nickel MHP Pipeline (app/nickel_pipeline.py)
Concession Geofencing: Monitors Central Sulawesi (IMIP Morowali) and North Maluku (IWIP Weda Bay) mining polygons.
Fiscal Verification: Validates Ministry of Energy (ESDM) SIMBARA NTPN tax receipt codes and Bank Indonesia 30% forex export deposits (DHE BI).
EU CBAM & Carbon Duty: Detects captive coal power plant usage and flags European Carbon Border Adjustment liabilities.
๐จ๐ฉ DRC Cobalt Hydroxide Pipeline (app/cobalt_pipeline.py)
Artisanal Segregation (Trap 1): Blocks uncertified artisanal mining (ASM) co-mingling via Entreprise Gรฉnรฉrale du Cobalt (EGC) custody validation.
CEEC Security Seals: Cryptographically authenticates Centre d'Expertise (CEEC) tamper-proof barcode export seals.
ILO Human Rights Diligence: Enforces mandatory independent audits for ILO Convention 138 (Minimum Age) and 182 (Worst Forms of Child Labor).
๐จ๐ฑ Chilean Copper Cathode Pipeline (app/copper_pipeline.py)
Concession Geofencing: Monitors major porphyry operations (Codelco Chuquicamata, El Teniente, Andina, BHP Escondida, Antofagasta Los Pelambres, Cerro Verde).
Smelter Acid Balance (Trap 16): Validates sulfuric acid ($H_2SO_4$) reagent supply balance ($\le 5.0%$ deficit tolerance).
Grid & Purity Standard: Certifies ASTM B115 Grade 1 electrolytic cathode purity ($\ge 99.9935%$) for AI datacenter HVDC power grids and COCHILCO export clearances.
๐ฒ๐ฝ Mexican Silver Dorรฉ Pipeline (app/silver_pipeline.py)
Concession Geofencing: Monitors high-grade silver operations (Endeavour Silver Terronera, Fresnillo, Antamina, Uchucchacua, Los Pelambres).
N-Type TOPCon Solar Standard (Trap 16): Enforces ultra-pure $\ge 99.99%$ silver powder certification for next-gen solar PV metallization paste.
Security & LBMA Assurance: Defends against cartel-tainted artisanal extraction and validates LBMA Good Delivery refiner accreditation.
3. Interactive Web Observatory & Verification Simulator
The built-in browser UI (app/static/ko.html and app/static/index.html) provides a live 4-tab compliance cockpit:
Tab | Key Features |
๐ NCM 811 Composite Master Passport | Real-time IRA 30D eligibility, FTA value progress bar, EU Battery Passport approval status, Carbon Footprint gauge, on-chain Merkle Root & EIP-712 JSON terminal |
๐ฆ๐บ Australian Lithium Observatory | Hard-rock mine selection (Greenbushes, Pilgangoora, Mt Marion), ore feed vs LiOH yield calculation |
๐ฎ๐ฉ Indonesian Nickel MHP Observatory | IMIP/IWIP concession verification, ESDM SIMBARA tax receipt verification, captive coal power toggle |
๐จ๐ฉ DRC Cobalt Hydroxide Observatory | Kamoto KCC/Tenke concession check, CEEC barcode verification, ILO 138/182 child labor audit toggle |
One-Click Real-World Scenario Presets
โ Clean Baseline (
clean): Australia Greenbushes + Indonesia Clean IMIP + DRC Kamoto KCC $\rightarrow$ IRA Eligible ($3,750), EU Passport Approved, Low Carbon (51.5 kg COโe/kWh).โ ๏ธ FEOC Taint Trap (
feoc): Injects 80% Chinese state ownership into DRC Cobalt $\rightarrow$ Entire battery pack disqualified under FEOC 25% threshold.โ ๏ธ Captive Coal CBAM Trap (
cbam): Injects captive coal power smelting in Indonesia $\rightarrow$ EU CBAM carbon tariff liabilities triggered.โ Child Labor Trap (
child): Injects uncertified artisanal pit ore in DRC $\rightarrow$ EU Battery Passport immediate rejection.๐จ Trap 15 Tech Defense (
trap15): Evaluates Chinese Mineral Resources Law extraterritorial licensing taint ($>50%$ SX tech dependency without MOFCOM clearance).โก Copper HVDC Grid Ready (
copper): Codelco Chuquicamata copper cathode audit, $H_2SO_4$ acid balance, and ASTM B115 Grade 1 HVDC power grid certification.โ๏ธ Silver TOPCon Solar PV (
silver): Endeavour Silver Terronera dorรฉ audit, LBMA Good Delivery, and N-Type TOPCon $\ge 99.99%$ solar paste verification.
๐ค Model Context Protocol (FastMCP) Tools
Integrates natively with Claude Desktop, Cursor, Gemini, and autonomous AI agents:
{
"mcpServers": {
"minerals-oracle-x402": {
"command": "python",
"args": ["-m", "app.mcp_stdio"],
"env": {
"ORACLE_API_KEY": "YOUR_AGENT_KEY"
}
}
}
}Supported MCP Tools:
verify_composite_battery_passport: Evaluates end-to-end NCM EV battery packs and generates Master Merkle EIP-712 attestations.verify_lithium_origin: Verifies Australian hard-rock spodumene extraction and conversion.verify_nickel_origin: Verifies Indonesian laterite limonite HPAL MHP provenance and SIMBARA tax clearance.verify_cobalt_origin: Verifies DRC Katanga heterogenite cobalt hydroxide provenance, CEEC seals, and child labor audits.verify_copper_origin: Verifies Chilean/South American copper cathode provenance, COCHILCO quotas, H2SO4 acid balance, and ASTM B115 HVDC compliance.verify_silver_origin: Verifies Mexican/South American silver dorรฉ provenance, LBMA certification, N-Type TOPCon solar PV 99.99% purity, and cartel defense.verify_mineral_compliance: Legacy 7-pillar compliance audit engine for individual mineral lots.minerals_submit_agent_feedback: Zero-fee protocol feedback submission for autonomous agent evolution.
๐ณ Autonomous x402 Web3 Settlement on Polygon
All M2M API invocations support micro-payments in USDC on Polygon (Chain ID 137):
Composite Battery Master Verification: 0.10 USDC (
PricingTier.STANDARD)Dedicated Mineral Lot Verification: 0.05 USDC (
PricingTier.LIGHT)Polygon USDC Address:
0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359Treasury Recipient:
0x255F9991233f86B29dB847c8d5b8CB9915e80dCfAgent Vault Fast-Path: Zero-latency verification via pre-funded
X-Agent-Vault-Keyheaders.
๐ Quick Start & Local Execution
1. Clone & Install Dependencies
git clone https://github.com/nohosa001-pixel/minerals-oracle-x402.git
cd minerals-oracle-x402
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate
pip install -e .2. Run Tests (102 Automated Tests)
# Run with -s flag on Windows
pytest -s tests/3. Launch Local Server & Web Observatory
uvicorn app.main:app --host 127.0.0.1 --port 8000 --reloadNavigate to:
Korean Core Node: http://localhost:8000/ko
Global English Node: http://localhost:8000/
API Documentation: http://localhost:8000/docs
๐ Full Technical Specifications
For full mathematical formulations, threshold constants, legal citations, and EIP-712 type declarations, consult the Global Battery Minerals Compliance Specification v2.4.0.
๐ License
MIT License. Copyright (c) 2026 Minerals Oracle x402 Project Contributors.
Available Tools
9 toolsget_compliance_statusA
Check current regulatory monitoring status across 10 jurisdictions and 12-trap defenses.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. The verb 'check' implies a read-only operation, but the description does not explicitly state that there are no side effects, nor does it mention any rate limits, data freshness, or other behavioral traits. It is an implied safe read, but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the verb and resource. It states the scope (10 jurisdictions, 12-trap defenses) without fluff, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should clarify what the agent will receive, but it does not. It only states the action and scope, not the return format or content. For a status-check tool, an agent needs to know if it gets a list, a summary, or a pass/fail. This is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides complete coverage (100%). The description does not need to explain parameter meaning since none exist. The baseline of 4 for no parameters is appropriate; the description adds no conflicting information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Check' with a specific resource ('current regulatory monitoring status') and scopes it to '10 jurisdictions and 12-trap defenses', making the tool's purpose clear. It distinguishes itself from siblings like verify_mineral_lot_compliance (specific lot) and list_trade_precedents (historical listings) by focusing on current status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. No exclusions, prerequisites, or conditions are mentioned. The description does not hint at what problem it solves relative to sibling tools, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_trade_precedentsA
Query international trade jurisprudence precedents embedded in the oracle: WTO DS592 (Indonesia Raw Materials), WTO DS431 (China Rare Earths), ICSID ARB/15/31 (Gabriel Resources), and US CIT Superior Wire (Origin Laundering).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'Query' implies a read operation, and listing the embedded precedents gives content context, but the description does not disclose the return format, pagination, or any limitations, leaving the agent guessing at output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the verb and resource and packs the enumerated precedents efficiently. Each element earns its place, though listing four full case citations adds length without much extra decision value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 0-parameter list tool this is reasonably complete, but with no output schema and no annotations, the description should clarify what the returned data looks like (e.g., case summaries, citation lists, rulings). That gap leaves the agent uncertain about the call's result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema offers nothing to document. The description compensates by naming exactly what the tool returns access to (the four precedents), which is the meaningful semantic content an agent needs. Baseline 4 is appropriate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Query') and resource ('international trade jurisprudence precedents embedded in the oracle'), then enumerates the exact precedents available (WTO DS592, WTO DS431, ICSID ARB/15/31, US CIT Superior Wire). This clearly distinguishes it from the compliance-verification and feedback siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys its purpose and content scope, so an agent can infer it is for retrieving precedent case law, but it never explicitly states when to use it versus alternatives, nor does it name exclusions or routing conditions to sibling tools like verify_mineral_lot_compliance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
minerals_list_evolution_proposalsB
List active autonomous agent evolution proposals and improvement requests.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of proposals to fetch | |
| mineral_focus | No | Optional filter by mineral |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral context. It clearly implies a read-only list operation with no side effects, but it does not disclose what 'active' means, pagination behavior, error handling, or what fields are returned. For a simple list tool this is borderline adequate, but additional clarity would help.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the action and resource directly, though it could benefit from a brief mention of usage or parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two optional parameters and no output schema, the description is minimally sufficient but lacks details like the meaning of 'active', return format, or any filtering nuances. It does not actively mislead, but leaves room for interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters (limit and mineral_focus) with descriptions, so schema coverage is 100%. The tool description adds no extra meaning or context about how these parameters behave or interact, so it does not improve beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action (List) and resource (active autonomous agent evolution proposals and improvement requests), making it distinct from siblings like verify_mineral_lot_compliance or list_trade_precedents. It does not explicitly name alternatives, but the resource is specific enough to avoid confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus siblings. There is no mention of alternatives, prerequisites, or context where this tool is the right choice, leaving the agent to infer from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
minerals_submit_agent_feedbackB
Allows an autonomous AI agent or bot operator to submit an evolution proposal, mineral dataset addition request, regulatory edge case, or protocol improvement to continuously evolve the Minerals Oracle engine.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Summary of proposed improvement or edge case | |
| content | Yes | Detailed description, legal context, or observed issue | |
| agent_id | Yes | Unique identifier of the calling AI agent or operator (e.g. 'tesla-procure-agent-09') | |
| caller_model | No | Optional underlying model (e.g. 'claude-3-5-sonnet', 'gemini-1.5-pro') | |
| feedback_type | No | Classification category | FEATURE_REQUEST |
| mineral_focus | No | Relevant mineral commodity | ALL |
| contact_channel | No | Optional agent webhook, ENS domain, or wallet address | |
| proposed_solution | No | Optional suggested technical or architectural fix |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool submits feedback, but does not disclose side effects (e.g., whether submission persists, if it triggers review, idempotency, rate limits, or auth requirements). For a write operation with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the purpose and lists the main use cases. It is concise with no fluff, though it could be slightly shorter without losing meaning. It earns a 4 for efficient delivery.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters (3 required) and no output schema, the description provides a high-level purpose but does not mention expected return values, submission confirmation, or any side effects. The schema covers parameter details, and the description covers the intent, but for a submission tool with no annotations, one might expect more context on what happens after submission. It is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters, including enums with descriptions. The description mentions 'evolution proposal, mineral dataset addition request, regulatory edge case, or protocol improvement,' which loosely maps to the feedback_type enum but adds little beyond what the schema already states. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: an agent or operator submits evolution proposals, dataset additions, edge cases, or protocol improvements to evolve the Minerals Oracle engine. It uses a specific verb (submit) and resource (feedback to the engine), and the listed types distinguish it from sibling read/check tools like verify_mineral_lot_compliance or list_trade_precedents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for submitting improvement ideas, but it does not explicitly state when to use this tool versus alternatives or provide any exclusions. There is no mention of sibling tools like minerals_list_evolution_proposals (which likely lists existing proposals) or when not to submit. Usage context is clear enough, but no alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_cobalt_originA
Verifies DRC Katanga heterogenite-to-cobalt hydroxide supply-chain provenance. Evaluates Katanga Copperbelt concession geofencing (Tenke Fungurume, Kamoto KCC, Mutanda, Metalkol), CEEC tamper-proof barcode seal, ASM co-mingling segregation & EGC custody (Trap 1), ILO 138/182 zero child labor due diligence, RMI RMAP smelter certification, stoichiometric mass balance (~23.5t ore to 1t hydroxide <= 2.5% loss), and US IRA FEOC 25% screening.
| Name | Required | Description | Default |
|---|---|---|---|
| product | No | Crude Cobalt Hydroxide | |
| province | No | Lualaba | |
| trace_id | Yes | Traceability batch ID (e.g. COB-COD-2026-HYD01) | |
| mine_type | No | LSM or ASM | LSM |
| coordinates | Yes | [Lat, Lon] centroid | |
| ceec_seal_id | Yes | DRC CEEC barcode export seal ID | |
| asm_comingled | No | True if uncertified ASM ore co-mingled | |
| refinery_name | Yes | Refinery name (e.g. Luilu Metallurgical Plant) | |
| concession_name | Yes | Concession name (e.g. Kamoto Copper Company, Tenke Fungurume) | |
| egc_custody_ref | No | EGC artisanal custody receipt (optional) | |
| feoc_equity_pct | No | Covered nation equity % (cap < 25%) | |
| ore_grade_co_pct | No | Ore Co % (default 1.50%) | |
| refinery_country | No | Refinery country code | COD |
| rmi_rmap_smelter_id | No | RMI RMAP audited smelter ID (optional) | |
| hydroxide_grade_co_pct | No | Hydroxide Co % (default 30.0%) | |
| zero_child_labor_audit_ref | No | ILO 138/182 zero child labor audit reference | |
| heterogenite_ore_input_tons | Yes | Gross heterogenite ore input in metric tons | |
| cobalt_hydroxide_output_tons | Yes | Refined crude hydroxide output in metric tons |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does so by disclosing the concrete evaluation logic: concession geofencing, CEEC barcode seal validation, ASM co-mingling segregation, ILO 138/182 checks, RMI RMAP certification, and mass-balance tolerance (<=2.5% loss). It does not, however, disclose failure modes, permissions, or what the result conveys, so it stops short of full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, followed by a compact enumeration of checks. It is jargon-dense and one long sentence, which slightly hurts readability, but essentially every clause corresponds to a distinct validation the agent should expect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter, no-output-schema tool, the description covers what is evaluated well but never indicates the return shape (pass/fail, findings, scores) or how a non-compliant lot is reported. Given there is no output schema, that outcome context is a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 89%, so the schema already documents the parameters (baseline 3). The description adds genuine semantic context by tying parameters to evaluation logic, e.g. geofencing maps to coordinates/concession, FEOC equity cap to feoc_equity_pct, and the ~23.5t:1t ratio to the ore/hydroxide mass-balance inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a precise verb and resource (verifies DRC Katanga heterogenite-to-cobalt hydroxide supply-chain provenance) and enumerates the exact domain checks performed. It is unmistakably distinct from the cobalt-adjacent siblings such as verify_lithium_origin, verify_nickel_origin, and verify_mineral_lot_compliance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the tight domain scoping (DRC Katanga cobalt hydroxide), so an agent can infer it is the cobalt-specific verifier. However, it never states when to prefer this over verify_mineral_lot_compliance or the other verify_* siblings, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_composite_battery_passportA
Evaluates end-to-end composite EV battery pack compliance and issues a Master Passport on Polygon. Orchestrates Australian Lithium, Indonesian Nickel, and DRC Cobalt streams; computes US IRA Section 30D critical mineral 50% FTA value-added ratio; enforces zero FEOC taint across all component streams; audits EU Battery Regulation 2023/1542 blended carbon footprint and CSDDD due diligence; and binds all proofs into a cryptographic Merkle Root EIP-712 Master Signature.
| Name | Required | Description | Default |
|---|---|---|---|
| cobalt_lot | Yes | CobaltOriginVerifyRequest payload | |
| nickel_lot | Yes | NickelOriginVerifyRequest payload | |
| lithium_lot | Yes | LithiumOriginVerifyRequest payload | |
| cell_chemistry | No | Cathode chemistry (NCM811, NCM622, NCM523) | NCM811 |
| battery_pack_id | Yes | Unique battery pack serial (e.g. BATT-NCM811-2026-PACK01) | |
| pack_capacity_kwh | No | Pack capacity in kWh |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose substantial behavior: it writes a Master Passport on Polygon (an on-chain write with implicit irreversibility), enforces 'zero FEOC taint', and cryptographically binds proofs into a Merkle Root EIP-712 signature. It omits auth/permission needs, cost, and failure modes, which is why it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and outcome are front-loaded in the first clause, followed by the compliance regimes it enforces. It is a dense single run-on sentence heavy with stacked jargon and semicolons, but every clause carries a distinct regulatory/technical fact, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity, multi-nested-object tool with no annotations and no output schema, the description covers the domain well: it names the regimes (IRA 30D, EU Battery Regulation 2023/1542, CSDDD), the outputs (Master Passport, Merkle Root EIP-712 signature), and the streams. It stops short of describing the return payload structure or error conditions, which an output-less tool could have benefited from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters (including the nested origin-verify payloads and defaults); baseline is 3. The description only loosely maps to the three mineral lot parameters via 'Orchestrates Australian Lithium, Indonesian Nickel, and DRC Cobalt streams' and adds no format or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource ('Evaluates end-to-end composite EV battery pack compliance and issues a Master Passport on Polygon') and the keyword 'composite'/'end-to-end' clearly distinguishes it from the single-mineral siblings (verify_lithium_origin, verify_nickel_origin, verify_cobalt_origin). An agent can tell this is the aggregating multi-stream tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The text describes capabilities but never states when to choose this tool over verify_mineral_lot_compliance or the per-mineral verify tools, nor any prerequisite ordering (e.g. lots must be verified first). No exclusions or conditions are given, so the agent must infer routing from the word 'composite' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_lithium_originB
Verifies Australian hard-rock Spodumene to Lithium Hydroxide supply-chain provenance. Evaluates WA MINEDEX GIS geofencing (Greenbushes, Pilgangoora, Mt Marion), stoichiometric mass balance (SC6.0 to LiOH <= 2.5% loss), and US IRA Section 30D FEOC 25% clean origin.
| Name | Required | Description | Default |
|---|---|---|---|
| product | No | Lithium Hydroxide Monohydrate | |
| trace_id | Yes | Traceability lot ID (e.g., LIT-AU-2026-X091) | |
| mine_name | Yes | Hard-rock mine name (e.g. Greenbushes, Pilgangoora) | |
| coordinates | Yes | [Lat, Lon] centroid | |
| mine_country | No | AU | |
| refinery_country | No | Refinery country code (AU, US, CHN) | AU |
| refinery_facility | Yes | Refining facility name (e.g. Kwinana Plant) | |
| minedex_tenement_id | No | WA MINEDEX permit ID (optional) | |
| spodumene_grade_pct | No | Li2O grade % (default 6.0%) | |
| refined_output_tonnage | Yes | Finished product output in metric tons | |
| refinery_feoc_equity_pct | No | Covered nation equity % (cap < 25%) | |
| spodumene_tonnage_extracted | Yes | Gross spodumene input in metric tons |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does add real value by revealing the evaluation logic and thresholds (SC6.0 to LiOH <= 2.5% loss, FEOC cap < 25% clean origin), but it says nothing about read-vs-write behavior, what a failure result looks like, or whether a verification is recorded or stateful. Some behavioral substance, significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the verification target before the evaluation criteria. No filler, though the stacked acronyms (SC6.0, IRA 30D, FEOC) compress a lot into one line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, 6-required tool with no annotations and no output schema, the description covers the domain well but omits what the verification returns, how pass/fail is signaled, and when the optional MINEDEX ID is needed. An agent would still need to probe the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents nearly all parameters with examples and defaults. The description adds no parameter-level syntax or format detail beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (verifies) and a tightly scoped resource (Australian hard-rock spodumene to lithium hydroxide provenance), then enumerates the three concrete checks it runs (MINEDEX geofencing, stoichiometric mass balance, IRA 30D FEOC origin). This scope clearly separates it from siblings like verify_nickel_origin, verify_cobalt_origin, and verify_mineral_lot_compliance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what is evaluated but never states when to reach for this tool versus the sibling verification tools, nor any prerequisites (e.g., that MINEDEX tenement ID is optional, or that AU-origin lots are required). Usage must be inferred entirely from the domain naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_mineral_lot_complianceA
Fetches raw algorithmic indices derived from open satellite/market data and computes 12-trap regulatory rule heuristics for a critical mineral consignment. DO NOT use as an official regulatory legal filing or physical assay certification without independent manual verification.
| Name | Required | Description | Default |
|---|---|---|---|
| lot_id | Yes | Unique lot/batch identifier | |
| mineral_type | Yes | ||
| source_country | Yes | ||
| declared_purity_pct | No | Declared assay purity percentage | |
| net_weight_metric_tons | Yes | Net weight in metric tons |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It transparently notes that outputs are algorithmic heuristics derived from satellite/market data and explicitly cautions against treating them as official or certified. This goes beyond a bare description, though it does not detail side effects, errors, or rate limits, which would be expected in an ideal case.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences: the first states the purpose, the second delivers a critical caveat. Every word earns its place, and the most important information (purpose) is front-loaded. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12-trap rules, five parameters, no output schema), the description is relatively brief. It explains what it computes but does not describe the output format, how results should be interpreted, or how the parameters interact. The caveat is helpful but does not compensate for the lack of return-value guidance, which would be essential for an agent to correctly use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60% (three parameters have descriptions, two have enums without descriptions). The description adds context about the purpose of the parameters ('open satellite/market data' and 'regulatory rule heuristics') but does not provide per-parameter semantics beyond what the schema already offers. This meets the baseline but does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('fetches' and 'computes') applied to a defined resource ('raw algorithmic indices' and '12-trap regulatory rule heuristics'), making the tool's purpose unambiguous. It also implies a distinction from siblings like get_compliance_status and list_trade_precedents by focusing on algorithmic heuristics rather than status or precedents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a critical usage warning ('DO NOT use as an official regulatory legal filing or physical assay certification without independent manual verification'), which is useful, but it does not explicitly state when to prefer this tool over its siblings (e.g., 'use for screening, not for final decisions'). The caveat implies a secondary role but lacks direct guidance on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_nickel_originA
Verifies Indonesian laterite Limonite-to-Nickel MHP supply-chain provenance. Evaluates Sulawesi/Halmahera concession geofencing (IMIP Morowali, IWIP Weda Bay), SIMBARA NTPN & DHE BI tax validation, HPAL stoichiometric mass balance (~31t Limonite to 1t MHP <= 2.5% loss), Captive Coal EU CBAM screening, and US IRA 30D FEOC 25% compliance.
| Name | Required | Description | Default |
|---|---|---|---|
| product | No | Nickel Mixed Hydroxide Precipitate (MHP) | |
| trace_id | Yes | Traceability batch ID (e.g. NIC-IDN-2026-MHP01) | |
| coordinates | Yes | [Lat, Lon] centroid | |
| simbara_ntpn | Yes | Indonesia ESDM SIMBARA NTPN tax receipt code | |
| concession_name | Yes | Concession name (e.g. Morowali Concession, Weda Bay) | |
| feoc_equity_pct | No | Covered nation equity % (cap < 25%) | |
| mhp_output_tons | Yes | Refined MHP output in metric tons | |
| mhp_grade_ni_pct | No | MHP Ni % (default 38.5%) | |
| ore_grade_ni_pct | No | Limonite ore Ni % (default 1.35%) | |
| captive_coal_power | No | True if refinery runs on captive coal | |
| hpal_refinery_name | Yes | HPAL refinery name (e.g. QMB New Energy) | |
| dhe_forex_deposit_ref | No | Bank Indonesia 30% retention receipt (optional) | |
| limonite_ore_input_tons | Yes | Gross limonite ore input in metric tons |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose meaningful behavioral context: the evaluated jurisdictions (IMIP Morowali, IWIP Weda Bay), the regulatory thresholds applied (25% FEOC cap, 2.5% mass-balance loss), and CBAM screening. However, it never states whether the operation is read-only, what a pass/fail result looks like, or how non-compliant inputs are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single densely packed sentence that front-loads the resource and then lists the five evaluation axes in parallel structure. Every clause corresponds to a distinct check, though the heavy jargon density makes it less scannable than a bulleted breakdown would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter compliance tool with no annotations and no output schema, the description covers the evaluation scope well but omits the return shape and outcome semantics, which the agent must infer entirely. Adequate but with a clear gap given zero structured support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 92%, so baseline is 3, but the description adds real interpretive value beyond the schema by defining the ~31t Limonite to 1t MHP stoichiometric ratio and the 2.5% loss tolerance that govern limonite_ore_input_tons/mhp_output_tons, and the FEOC 25% equity ceiling that governs feoc_equity_pct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (verifies) and a precisely scoped resource (Indonesian laterite Limonite-to-Nickel MHP supply-chain provenance), then enumerates the exact checks performed. This clearly separates it from siblings like verify_lithium_origin, verify_cobalt_origin, and verify_composite_battery_passport without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the nickel/MHP specificity tells an agent to pick this over the lithium or cobalt verifiers. There is no explicit when-to-use statement, no mention of prerequisites (e.g. that a SIMBARA NTPN and HPAL refinery must be known first), and no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.5- Added
verify_cobalt_origin - Added
verify_composite_battery_passport - Added
verify_lithium_origin - Added
verify_nickel_origin
8 tool updates
v1.0.4- Removed
calculate_urban_mining_value - Removed
get_arbitrage_spreads - Added
get_compliance_status - Removed
get_mineral_prices - Added
list_trade_precedents - Added
minerals_list_evolution_proposals - Added
minerals_submit_agent_feedback - Added
verify_mineral_lot_compliance
2 tool updates
v1.0.2- Changed
calculate_urban_mining_value5 fields changed- changed
Input schema / properties / quantity_metric_tons / descriptionPrevious value: -"Total metric tons of feedstock batch to process"New value: +"Total metric tons of feedstock batch to process (default: 1.0)" - added
Input schema / properties / scrap_category / defaultAdded value: +"E_WASTE_HIGH_GRADE_PCB" - changed
Input schema / properties / scrap_category / descriptionPrevious value: -"Feedstock category of the recyclable scrap batch"New value: +"Feedstock category of the recyclable scrap batch (default: 'E_WASTE_HIGH_GRADE_PCB')" - changed
Input schema / properties / scrap_category / enumPrevious value: -[ - "EV_BATTERY_BLACK_MASS", - "AUTO_CATALYST_CERAMIC", - "E_WASTE_HIGH_GRADE_PCB", - "WIND_EV_PERMANENT_MAGNETS" -]New value: +[ + "E_WASTE_HIGH_GRADE_PCB", + "EV_BATTERY_BLACK_MASS", + "AUTO_CATALYST_CERAMIC", + "WIND_EV_PERMANENT_MAGNETS" +] - added
Input schema / properties / target_yield_currencyAdded value: +{ + "default": "USDC", + "description": "Settlement currency (default: 'USDC')", + "type": "string" +}
- Changed
get_mineral_prices1 field changed- added
Input schema / properties / mineral_typeAdded value: +{ + "default": "Neodymium", + "description": "Specific mineral name or symbol preset (default: 'Neodymium')", + "enum": [ + "Neodymium", + "Lithium", + "Dysprosium", + "Copper", + "Silver", + "Platinum", + "ALL" + ], + "type": "string" +}
3 tool updates
v1.0.0- First observed
calculate_urban_mining_value - First observed
get_arbitrage_spreads - First observed
get_mineral_prices
TDQS
Scored across 9 tools
The three verify_lithium/nickel/cobalt_origin tools are cleanly separated by mineral, and verify_composite_battery_passport is a higher-level orchestrator. However, verify_mineral_lot_compliance overlaps meaningfully with the individual origin verifiers and the composite passport, creating potential misselection for a generic consignment check.
Most tools follow a readable verb_noun pattern (verify_*, get_*, list_*, submit_*), but two tools carry an inconsistent 'minerals_' namespace prefix while the rest have none. The mix of conventions is still decipherable but not uniform.
Nine tools is well-scoped for a multi-mineral compliance oracle, with each tool covering a distinct stream or support function. No filler or redundancy in count terms.
The surface covers per-mineral origin verification, a composite passport, compliance monitoring, trade precedents, and a feedback loop, which is solid lifecycle coverage. Gaps exist around generic minerals beyond Li/Ni/Co and no explicit update/refresh operation for existing passports.
Maintenance
Related MCP Connectors
38 x402 pay-per-call tools for AI agents (USDC/USDT on Base): web, crypto, on-chain, geo, packages
Pay-per-call (x402/USDC-Base) web + crypto data tools for AI agents: audit, extract, crypto, DeFi.
Pay-per-call crypto market intelligence for AI agents. USDC on Base via x402.
x402-paid Base agent tools (USDC). 5 deterministic tools. No API keys. No NFT pass.
Related MCP Servers
- FlicenseAqualityNot gradedmaintenanceTrust infrastructure for AI agents on Base. DEX Spread Oracle (live Uniswap V3 prices), on-chain escrow, insurance pool, and collective knowledge base. 7 smart contracts. Pay-per-query via x402 micropayments in USDC.6-

hyperd-mcpofficial
AlicenseAqualityCmaintenancePre-trade DeFi intelligence for AI agents. 20 paid x402 endpoints, USDC on Base.2321 npm1MIT- AlicenseAqualityDmaintenanceUSDA nutrition API optimized for AI agents. x402 + USDC on Base41MIT
- FlicenseNot gradedqualityDmaintenancePay-per-use AI security and research tools for autonomous agents on Base, enabling honeypot detection, risk assessment, wallet analysis, and yield optimization via the x402 protocol.-