GDP divided by M2 money supply — measures how efficiently money circulates in the economy
GDP divided by M2 money supply — measures how efficiently money circulates in the economy. Declining velocity means more money is needed to generate the same output, a deflationary signal. Rising velocity can amplify inflation. Quarterly frequency, critical c…
by stationfx.com · discovered, not yet claimed by its owner · updated 2026-10-05
Mirrored from Coinbase's public x402 Bazaar. The description is the provider's own text and has not been reviewed here; the payment requirements are copied as published.
What it does
GDP divided by M2 money supply — measures how efficiently money circulates in the economy. Declining velocity means more money is needed to generate the same output, a deflationary signal. Rising velocity can amplify inflation. Quarterly frequency, critical context for M2 growth interpretation.
Tags: function-marketplace · economic-data · time-series · x402 · ai-agents · bazaar
Call contract
- Method
- GET
- Input
- query parameters
- Output
- json
- Last paid call
- 2026-10-05
{
"date_from": "2024-01-01",
"date_to": "2024-12-31",
"fmt": "json"
}{
"data": [
{
"date": "2024-01-01",
"mom_pct": 0,
"trend_direction": 1,
"value": 5.33,
"yoy_change": 0.5,
"zscore_12m": 1.2
}
],
"meta": {
"frequency": "Q",
"source_key": "M2V"
}
}Use with an agent
- Discover. Agents find this listing with
GET https://bazaar.saylorinnovations.com/discovery/search?query=…, the MCP toolsearch_resources, or/discovery/resources. - Inspect. Fetch
/resources/30475.jsonfor the price and payment options. - Pay. Call
GET https://stationfx.com/economic-data/money-supply/velocity-of-m2-money-stock. The provider answers402with its payment requirements. An x402 client signs one of the options below and retries withPAYMENT-SIGNATURE. - Execute. The provider returns
200with the data. Agent Bazaar is not in the request path and never sees your payment.
For humans
You don't need an account or an API key; you need a wallet holding a small amount of USDC on Base, and an x402-capable client (see the examples below). Call the endpoint unpaid first to see exactly what it asks for.
Pricing & payment
- Price
- $0.005 / request
- Protocol
- x402 v2
- Auth
- No account or API key. Pay per request.
- Networks
- Base
- Demand
- 5 calls · 2 unique payers in 30d (public x402 Bazaar data)
x402 payment requirements
| Scheme | Network | Asset | Amount | Pay to | Timeout |
|---|---|---|---|---|---|
| exact | Base eip155:8453 | USDC | $0.005 | 0x22f7e9518dff04a5db1fddaabc0e001b8c425b3a | 300s |
accepts[] (raw JSON)
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x22f7e9518dff04a5db1fddaabc0e001b8c425b3a",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "5000",
"amountUsd": 0.005,
"maxTimeoutSeconds": 300
}
]Schemas
Output schema (JSON Schema)
{
"properties": {
"example": {
"description": "Station f(x) response with metadata and pre-computed derived metrics",
"properties": {
"data": {
"description": "Observations ordered by date ascending",
"items": {
"properties": {
"above_trend": {
"description": "1 if value is above long-run trend, else 0",
"type": "integer"
},
"date": {
"description": "Observation date YYYY-MM-DD",
"type": "string"
},
"mom_change": {
"description": "Month-over-month absolute change",
"type": "number"
},
"mom_pct": {
"description": "Month-over-month % change",
"type": "number"
},
"pct_rank_5y": {
"description": "Percentile rank over trailing 5 years (0-100)",
"type": "number"
},
"rolling_12m_avg": {
"description": "12-month rolling average",
"type": "number"
},
"rolling_3m_avg": {
"description": "3-month rolling average",
"type": "number"
},
"trend_direction": {
"description": "Trend: 1 rising, -1 falling, 0 flat",
"type": "integer"
},
"value": {
"description": "Raw observed value in series units",
"type": "number"
},
"yoy_change": {
"description": "Year-over-year absolute change",
"type": "number"
},
"yoy_pct": {
"description": "Year-over-year % change",
"type": "number"
},
"zscore_12m": {
"description": "Z-score relative to trailing 12 months",
"type": "number"
},
"zscore_5y": {
"description": "Z-score relative to trailing 5 years",
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"meta": {
"description": "Series metadata: source_key (FRED series ID), units, frequency (D/W/M/Q/A), date_from, date_to, fields",
"type": "object"
}
},
"type": "object"
},
"type": {
"description": "Response format. Always \"json\" (or \"toon\" if fmt=toon was requested)",
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}Example shape — generated from the schema, not a captured live response
{
"example": {
"data": [
{
"above_trend": 0,
"date": "string",
"mom_change": 0,
"mom_pct": 0,
"pct_rank_5y": 0,
"rolling_12m_avg": 0,
"rolling_3m_avg": 0,
"trend_direction": 0,
"value": 0,
"yoy_change": 0,
"yoy_pct": 0,
"zscore_12m": 0,
"zscore_5y": 0
}
],
"meta": {}
},
"type": "string"
}Examples
curl "https://stationfx.com/economic-data/money-supply/velocity-of-m2-money-stock"
# -> 402 Payment Required, accepts[] lists how to pay
# retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paidconst res = await fetch("https://stationfx.com/economic-data/money-supply/velocity-of-m2-money-stock");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}import httpx
res = httpx.get("https://stationfx.com/economic-data/money-supply/velocity-of-m2-money-stock")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerDetails
- Provider
- stationfx.com
- Endpoint
- https://stationfx.com/economic-data/money-supply/velocity-of-m2-money-stock
- Machine-readable
/resources/30475.json