PUBLIC API · v1
Pull every number yourself.
Free and open — no authentication required. Built for developers, researchers, and analysts. Index endpoints return snake_case JSON in a top-level { data, meta } envelope; reports are also available over RSS at /feed.xml.
Citing our figures is free for everyone, commercial use included. Reuse beyond citing is free for non-commercial purposes under CC BY-NC 4.0; for commercial reuse, or API use beyond the free rate limit, write to hello@machineeconomy.ai. How to cite →
ENDPOINTS · 9 ROUTES
Each example is the live response, built by the same builder as its route. Values refresh daily after the cron run; this page revalidates every 900s (with /api/v1/metrics).
/api/v1/mei
The latest Machine Economy Index. score_geometric is the headline composite, the weighted geometric mean of four components; score_arithmetic and balance_gap give the arithmetic composite and their difference. Component scores are integers; composites are stored to one decimal place. score_low and score_high carry the robustness band — the 5th–95th percentile range from the §6.7 sensitivity analysis (10,000 Monte Carlo draws over component weights and normalization goalposts; not measurement uncertainty), null until the first post-ship calculate-mei run populates them. 503 if no score has been calculated yet. ISR revalidate 3600s.
{
"data": {
"score_geometric": 33.7,
"score_arithmetic": 36.8,
"balance_gap": 3,
"components": {
"payment": 37,
"physical": 51,
"legal": 16,
"macro": 43
},
"score_low": 30,
"score_high": 38,
"methodology_version": "1.3",
"calculated_at": "2026-11-06T17:33:37.522Z"
},
"meta": {
"source": "MachineEconomy.ai",
"docs": "https://machineeconomy.ai/methodology",
"methodology_version": "1.3"
}
}$ curl https://machineeconomy.ai/api/v1/mei/api/v1/widget
Reduced MEI payload for embeds — the geometric score and the component scores only (no arithmetic composite or balance gap), with the methodology version and calculation time. 503 if no score has been calculated yet. The /widget/mei embed shows the same latest score. ISR revalidate 3600s.
{
"data": {
"score_geometric": 33.7,
"components": {
"payment": 37,
"physical": 51,
"legal": 16,
"macro": 43
},
"methodology_version": "1.3",
"calculated_at": "2026-11-06T17:33:37.522Z"
},
"meta": {
"source": "MachineEconomy.ai",
"docs": "https://machineeconomy.ai/methodology",
"methodology_version": "1.3"
}
}$ curl https://machineeconomy.ai/api/v1/widget/widget/mei
The embeddable HTML widget — the live MEI headline and its four components in a 300×200 iframe. No API key. Paste the snippet into any page. The ?theme parameter (light or dark) selects the build; omit it and the widget follows the embedding page's prefers-color-scheme. ISR revalidate 3600s.
<iframe
src="https://machineeconomy.ai/widget/mei"
width="300" height="200"
frameborder="0" loading="lazy"
title="Machine Economy Index"
style="border-radius:12px"
></iframe>$ curl https://machineeconomy.ai/widget/mei/api/v1/metrics
All 14 tracked index metrics, with value, unit, primary source and data-quality flags. Legal has no leaf metrics: its component is the LRRS — use /api/v1/lrrs. ISR revalidate 900s.
query · ?rail=payment | physical | macro (optional; matched exactly — any other value, legal included, is ignored, and all metrics return with no error, as if the parameter were omitted)
{
"data": [
{
"key": "x402_tx_count_30d",
"label": "x402 transactions (30d)",
"value": 4332213,
"unit": "count",
"rail": "payment",
"category": "transaction_activity",
"source": "x402-scan",
"source_url": "https://x402scan.com",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-06T14:15:21.438Z",
"hold": null,
"note": null
},
{
"key": "x402_active_agent_roles_30d",
"label": "x402 active agent roles (30d)",
"value": 46632,
"unit": "count",
"rail": "payment",
"category": "agent_participation",
"source": "x402-scan",
"source_url": "https://x402scan.com",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-06T14:15:21.438Z",
"hold": null,
"note": {
"text": "Between 21 Sep and 14 Oct 2026, 12,455 new addresses each paid one service one to three times, one address after another. They are counted here until their payments leave the 30-day window, between 21 Oct and 13 Nov.",
"from": "2026-10-24",
"to": "2026-11-13"
}
},
{
"key": "x402_volume_onchain_usdc_30d",
"label": "x402 on-chain USDC volume (30d)",
"value": 1686901.521444,
"unit": "USD",
"rail": "payment",
"category": "transaction_activity",
"source": "x402-scan",
"source_url": "https://x402scan.com",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-06T14:15:21.438Z",
"hold": null,
"note": null
},
{
"key": "erc8004_registry_activity_30d",
"label": "ERC-8004 agent registry activity (30d)",
"value": 1061,
"unit": "count",
"rail": "payment",
"category": "identity_usage",
"source": "erc8004",
"source_url": "https://etherscan.io/address/0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-06T14:18:17.259Z",
"hold": null,
"note": null
},
{
"key": "akash_created_leases_30d",
"label": "Akash compute leases created (30d)",
"value": 24676,
"unit": "count",
"rail": "physical",
"category": "compute_utilization",
"source": "akash",
"source_url": "https://stats.akash.network",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-06T14:18:18.572Z",
"hold": null,
"note": null
},
{
"key": "akash_compute_spend_30d",
"label": "Akash compute spend (30d)",
"value": 207051.77902061914,
"unit": "USD",
"rail": "physical",
"category": "compute_utilization",
"source": "akash",
"source_url": "https://stats.akash.network",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-06T14:18:18.572Z",
"hold": null,
"note": null
},
{
"key": "filecoin_raw_power",
"label": "Filecoin raw storage power",
"value": 1146.69580078125,
"unit": "PiB",
"rail": "physical",
"category": "storage_capacity",
"source": "spacescope",
"source_url": "https://spacescope.io",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-06T14:18:21.079Z",
"hold": null,
"note": null
},
{
"key": "filecoin_utilization",
"label": "Filecoin storage utilization",
"value": 0.4134144078047697,
"unit": "ratio",
"rail": "physical",
"category": "storage_utilization",
"source": "spacescope",
"source_url": "https://spacescope.io",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-06T14:18:21.079Z",
"hold": null,
"note": null
},
{
"key": "mcp_downloads_30d",
"label": "MCP SDK downloads (30d)",
"value": 282159998,
"unit": "count",
"rail": "macro",
"category": "developer_adoption",
"source": "npm",
"source_url": "https://www.npmjs.com",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-06T14:18:23.273Z",
"hold": null,
"note": null
},
{
"key": "pypi_agent_framework_30d",
"label": "Python agent-framework downloads (30d)",
"value": 84127242,
"unit": "count",
"rail": "macro",
"category": "developer_adoption",
"source": "pypi",
"source_url": "https://pypistats.org",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-06T14:19:13.577Z",
"hold": null,
"note": null
},
{
"key": "census_btos_ai_use",
"label": "US enterprise AI use (Census BTOS)",
"value": 24.6,
"unit": "%",
"rail": "macro",
"category": "enterprise_adoption",
"source": "census-btos",
"source_url": "https://www.census.gov",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-02T17:04:19.126Z",
"hold": null,
"note": null
},
{
"key": "nvidia_dc_revenue",
"label": "Nvidia Data Center revenue (quarterly)",
"value": 89023000000,
"unit": "USD",
"rail": "physical",
"category": "compute_capacity_formation",
"source": "nvidia-edgar",
"source_url": "https://www.sec.gov/Archives/edgar/data/1045810/000104581026000075/nvda-20260726_htm.xml",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-02T18:23:34.363Z",
"hold": null,
"note": null
},
{
"key": "oecd_m2m_subscriptions",
"label": "OECD M2M/IoT subscriptions",
"value": 579039858,
"unit": "count",
"rail": "physical",
"category": "machine_connectivity",
"source": "oecd",
"source_url": "https://www.oecd.org",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-02T19:30:01.833Z",
"hold": null,
"note": null
},
{
"key": "eurostat_ai_use",
"label": "EU enterprise AI use (Eurostat)",
"value": 19.95,
"unit": "%",
"rail": "macro",
"category": "enterprise_adoption",
"source": "eurostat",
"source_url": "https://ec.europa.eu/eurostat",
"is_stale": false,
"is_provisional": false,
"is_mei_input": true,
"fetched_at": "2026-11-02T19:30:04.037Z",
"hold": null,
"note": null
}
],
"meta": {
"count": 14,
"source": "MachineEconomy.ai",
"docs": "https://machineeconomy.ai/methodology"
}
}$ curl https://machineeconomy.ai/api/v1/metrics/api/v1/diagnostics
Report-only figures for the Payment Rail, read daily from x402scan's 30-day views: the raw and the per-payer-capped transaction count, payer concentration, raw and scored dollars per transaction, recipients and payees, each view's timestamp, and the states of triggers X1–X5. Each trigger opens a review and changes no value. latest is the latest read (with its lists), triggers their states, history one entry per UTC day for the last 180 days. Before the first reading, latest is null and every trigger says no reading yet. ISR revalidate 900s.
{
"data": {
"x402": {
"latest": {
"day": "2026-11-06",
"read_at": "2026-11-06T14:19:16.398Z",
"status": "complete",
"overall_as_of": "2026-11-06T12:45:42.000Z",
"sender_as_of": "2026-11-06T12:55:46.000Z",
"overall_fresh": true,
"sender_fresh": true,
"raw_tx_count": 4338738,
"capped_tx_count": 3016159,
"raw_over_capped": 1.4384977715034253,
"payers_above_cap": 41,
"top1_tx_share": 0.11640135910488257,
"top5_tx_share": 0.2507692328967548,
"top1_volume_share": 0.4913989292700887,
"top5_volume_share": 0.6513141416526621,
"raw_usd_per_tx": 0.3888276731118588,
"raw_usd_per_tx_in_band": true,
"scored_usd_per_tx": 0.3893856376507803,
"scored_usd_per_tx_in_band": true,
"distinct_payers": 31780,
"distinct_recipients": 13828,
"roles_per_group_sum": 46632,
"overall_tx_count": 4332213,
"overall_volume_usd": 1686901.521444,
"sender_volume_usd": 1687021.400782,
"payers_above_cap_list": [
{
"address": "22CdX2YyLMNb3XJ4cV2VtxbJ7ivQbf59HSpXEyfCSeBb",
"settlements": 505035,
"amount": 545.803318
}
],
"top_volume_payers": [
{
"address": "0x15eae0792636b3dca7b5002f673b66d27c9d7aff",
"amount": 829000.51
}
],
"fan_out_payers": [
{
"address": "0xe88d13593f6391d97b5f1946010d2093fda09221",
"recipients": 2191
}
],
"top_payees": [
{
"address": "0x7284d41b5b852f2bd4c99bdf95043d84452d299c",
"payers": 9397
}
],
"lists_complete": true
},
"triggers": {
"x1": {
"state": "not fired",
"run_days": 0,
"required_days": 14,
"run_started_on": null,
"fired_on": null,
"last_fired_on": null,
"last_run_started_on": null,
"last_run_ended_on": null,
"summary": "not fired (0 of 14 consecutive days with one payer at half of volume or more); the largest payer holds 49.1%",
"top1_volume_share": 0.4913989292700887,
"threshold": 0.5
},
"x2": {
"state": "not yet evaluable",
"span_days": 1,
"required_span_days": 180,
"median": 1.4384977715034253,
"entered_on": null,
"annual_re_review": null,
"exit_run_days": 0,
"required_exit_days": 180,
"summary": "not yet evaluable (1 of 180 days); median of the raw ÷ capped count so far 1.44"
},
"x3": {
"state": "not fired",
"run_days": 0,
"required_days": 14,
"run_started_on": null,
"fired_on": null,
"last_fired_on": null,
"last_run_started_on": null,
"last_run_ended_on": null,
"summary": "not fired (0 of 14 consecutive days with scored $/tx outside $0.25–$5.00); scored $0.39/tx",
"scored_usd_per_tx": 0.3893856376507803,
"band_min": 0.25,
"band_max": 5
},
"x4": {
"state": "not fired",
"run_days": 0,
"required_days": 14,
"run_started_on": null,
"fired_on": null,
"last_fired_on": null,
"last_run_started_on": null,
"last_run_ended_on": null,
"summary": "not fired (0 of 14 consecutive days with x402scan's 30-day view stale or unreadable)",
"overall_as_of": "2026-11-06T12:45:42.000Z",
"overall_fresh": true
},
"x5": {
"state": "no reading yet",
"latest_sweep": null,
"latest_s": null,
"run_sweeps": 0,
"required_sweeps": 3,
"fired_at_sweep": null,
"summary": "no reading yet: the first comes with a monthly sweep"
}
},
"history": [
{
"day": "2026-11-06",
"read_at": "2026-11-06T14:19:16.398Z",
"status": "complete",
"overall_as_of": "2026-11-06T12:45:42.000Z",
"sender_as_of": "2026-11-06T12:55:46.000Z",
"overall_fresh": true,
"sender_fresh": true,
"raw_tx_count": 4338738,
"capped_tx_count": 3016159,
"raw_over_capped": 1.4384977715034253,
"payers_above_cap": 41,
"top1_tx_share": 0.11640135910488257,
"top5_tx_share": 0.2507692328967548,
"top1_volume_share": 0.4913989292700887,
"top5_volume_share": 0.6513141416526621,
"raw_usd_per_tx": 0.3888276731118588,
"raw_usd_per_tx_in_band": true,
"scored_usd_per_tx": 0.3893856376507803,
"scored_usd_per_tx_in_band": true,
"distinct_payers": 31780,
"distinct_recipients": 13828,
"roles_per_group_sum": 46632,
"overall_tx_count": 4332213,
"overall_volume_usd": 1686901.521444,
"sender_volume_usd": 1687021.400782
}
]
}
},
"meta": {
"source": "MachineEconomy.ai",
"docs": "https://machineeconomy.ai/methodology#section-scope"
}
}1 day of history in the live response, the latest shown; the first entry of each of the latest reading's lists shown.
$ curl https://machineeconomy.ai/api/v1/diagnostics/api/v1/lrrs
The Legal Rail Readiness Score (LRRS) — GDP-weighted coverage across five legal categories. score is the reported integer headline; underlying is the unrounded value fed into the MEI Legal component; jurisdictions lists per-jurisdiction cell statuses and backing instruments with citations. ISR revalidate 3600s.
{
"data": {
"score": 16,
"underlying": 15.81153022840002,
"coverage_by_category": {
"legal_identity": 0.0000013031467567067739,
"stablecoin": 0.2352911435057787,
"sandbox": 0.5251654097294375,
"free_zone": 0,
"multilateral": 0
},
"category_weights": {
"legal_identity": 0.3,
"stablecoin": 0.3,
"sandbox": 0.16666666666666666,
"free_zone": 0.16666666666666666,
"multilateral": 0.06666666666666667
},
"jurisdictions": [
{
"iso3": "ARE",
"statuses": {
"legal_identity": "none",
"stablecoin": "operational",
"sandbox": "none",
"free_zone": "none",
"multilateral": "none"
},
"instruments": [
{
"category": "stablecoin",
"status": "operational",
"name": "CBUAE Payment Token Services Regulation (PTSR)",
"citation_url": "https://rulebook.centralbank.ae/en/rulebook/payment-token-services-regulation",
"citation_title": "Payment Token Services Regulation — Central Bank of the UAE (CBUAE) Rulebook"
}
]
}
],
"surveyed_gdp_ceiling": 0.8908803547537798
},
"meta": {
"source": "MachineEconomy.ai",
"docs": "https://machineeconomy.ai/methodology",
"methodology_version": "1.0",
"gdp_vintage": "WEO-2026-04"
}
}41 jurisdictions in the live response; the first is shown.
$ curl https://machineeconomy.ai/api/v1/lrrs/api/v1/lrrs/coverage-log
The LRRS candidate-survey coverage log: every cell of the survey grid (48 jurisdictions × 5 categories) with the date of its last complete search for new legal instruments whose results are live — its staleness flag — and every recorded search with its scope, sources and results. A cell is searched at least every 95 days; null means not yet searched at full scope. Read from the committed log, with no database read. ISR revalidate 3600s.
{
"data": {
"as_of": "2026-11-07",
"staleness_days": 95,
"scope_classes": {
"legal_identity": [
"tier-a",
"tier-b"
],
"stablecoin": [
"issuance",
"services"
],
"sandbox": [
"ai-specific",
"general-or-sectoral-with-ai-participants",
"vehicle-drone-robot-testing"
],
"free_zone": [
"sovereign-designated-zone"
],
"multilateral": [
"enactment-ratification-endorsement"
]
},
"grid": {
"jurisdictions": [
"ARE",
"ARG",
"AUS",
"AUT",
"BEL",
"BGR",
"BRA",
"CAN",
"CHE",
"CHN",
"CYP",
"CZE",
"DEU",
"DNK",
"ESP",
"EST",
"FIN",
"FRA",
"GBR",
"GRC",
"HKG",
"HRV",
"HUN",
"IDN",
"IND",
"IRL",
"ITA",
"JPN",
"KOR",
"LTU",
"LUX",
"LVA",
"MEX",
"MHL",
"MLT",
"NLD",
"POL",
"PRT",
"ROU",
"RUS",
"SAU",
"SGP",
"SVK",
"SVN",
"SWE",
"TUR",
"TWN",
"USA"
],
"categories": [
"legal_identity",
"stablecoin",
"sandbox",
"free_zone",
"multilateral"
],
"cell_count": 240
},
"cells_searched_at_full_scope": 224,
"cells_not_yet_searched": 16,
"cells": [
{
"jurisdiction": "ARE",
"category": "legal_identity",
"last_complete_search": "2026-11-04",
"results_live_from": "2026-11-05"
}
],
"searches": [
{
"jurisdiction": "ARE",
"category": "stablecoin",
"searched_as_of": "2026-11-04",
"scope_classes": [
"issuance",
"services"
],
"sources": [
"uaelegislation.gov.ae",
"centralbank.ae",
"rulebook.centralbank.ae",
"sca.gov.ae"
],
"source_pack": "S2C: docs/prompts/lrrs-sweep/2026-11/S2C-prompt.md, docs/archive/research/lrrs-sweep-2026-11/S2C-report.md",
"results": [
{
"candidate": "CBUAE Payment Token Services Regulation (Circular No. 2/2024) (S2C: 1.0)",
"outcome": "in the table: CBUAE Payment Token Services Regulation (PTSR) (1.0)"
},
{
"candidate": "Federal Decree-Law No. (6) of 2025 regarding the Central Bank (S2C)",
"outcome": "not assessed: the cell is already at 1.0 through CBUAE Payment Token Services Regulation (PTSR) (log, 2026-11-05: changes no cell)"
}
],
"update_date": "2026-11-05"
}
]
},
"meta": {
"source": "MachineEconomy.ai",
"docs": "https://machineeconomy.ai/methodology#section-lrrs",
"record": "db/seeds/lrrs-coverage-log.ts"
}
}240 cells in the live response, the first shown; 224 searches, the first shown.
$ curl https://machineeconomy.ai/api/v1/lrrs/coverage-log/api/openapi.json
The OpenAPI 3.1 spec for every /api/v1 route — schemas, query parameters, rate-limit responses and caching notes. Use it for codegen, Postman import or contract testing. Revalidate 86400s, sent with Cache-Control: public, max-age=86400, stale-while-revalidate=604800.
{
"openapi": "3.1.0",
"info": {
"title": "MachineEconomy.ai Public API",
"version": "1.0"
},
"servers": [
{
"url": "https://machineeconomy.ai",
"description": "Production"
}
],
"paths": {
"/api/v1/mei": {
"get": {
"summary": "Latest MEI score"
}
},
"/api/v1/widget": {
"get": {
"summary": "Embeddable MEI widget payload"
}
},
"/api/v1/lrrs": {
"get": {
"summary": "Latest LRRS score and jurisdiction coverage"
}
},
"/api/v1/lrrs/coverage-log": {
"get": {
"summary": "LRRS candidate-survey coverage log"
}
},
"/api/v1/metrics": {
"get": {
"summary": "All tracked metrics"
}
},
"/api/v1/diagnostics": {
"get": {
"summary": "Daily payment-rail diagnostics and triggers"
}
},
"/api/v1/newsletter": {
"post": {
"summary": "Join the Briefing waitlist"
}
}
}
}Each operation's summary; the full document adds the descriptions, parameters, responses and schemas.
$ curl https://machineeconomy.ai/api/openapi.jsonREQUEST BEHAVIOR
AUTH
Free and unauthenticated. No key, no signup. Data updates daily — polling faster adds nothing.
RATE LIMIT
100 req / min per IP — a 1-minute sliding window, GET and POST — shared across all /api/v1/* (not per-route). Over the limit → 429 with a Retry-After header (seconds until retry) and { "error": "Rate limit exceeded. Please retry later." }. No X-RateLimit-* headers.
CACHING
ISR revalidation: /mei, /widget, /lrrs and /lrrs/coverage-log at 3600s; /metrics and /diagnostics at 900s; /api/openapi.json at 86400s. An Upstash read-through cache mirrors those TTLs on the database read path.
CORS
All /api/* responses send Access-Control-Allow-Origin: * and allow GET, POST and OPTIONS, with Content-Type as an allowed header.
ERRORS
Errors are { error }. 503 on /mei · /widget before the first calculation ("No MEI score available"); 400 on /newsletter for invalid JSON or a bad email, 500 if the subscription fails; 429 over the rate limit.
DATA-QUALITY FLAGS ON /metrics
- is_stale
- the value is carried forward: the latest fetch failed, or its value was refused.
- is_provisional
- pending verification — excluded from the MEI composite until verified.
- is_mei_input
- whether the metric is an index input (registry member) or tracked as context only.
- hold
- set, with the reason and its dates, while a metric is held at its last clean value because its value-jump safeguard refused the fetched value — only from since to review_by (UTC days, both included); null otherwise. Outside those dates a value still carried forward shows only is_stale: true.
- note
- set, with its dates, while a published note says what a metric's value contains; null otherwise.
Full field-level schemas, query params, and error responses live in the OpenAPI 3.1 spec. Per-metric sources and cadences are on the methodology page.