MCP server for easy-predict.com — time series prediction and anomaly detection with automatic x402 micropayments on Base.
Project description
easy-predict
Agent-first prediction and anomaly detection API. Send a list of numbers, get the next predicted value or a list of anomalous points. Paid per call via x402 v2 micropayments — $0.01 USDC on Base. No API keys, no accounts.
Live at easy-predict.com
Endpoints
| Method | Path | Cost | Description |
|---|---|---|---|
| POST | /timeseries |
$0.01 USDC | Predict the next value in a numeric series |
| POST | /anomaly-detection |
$0.01 USDC | Detect anomalies via z-score |
| GET | /.well-known/x402 |
free | x402 v2 resource discovery |
| GET | /openapi.json |
free | OpenAPI 3.1 spec |
| GET | /llms.txt |
free | Human/agent-readable API docs |
POST /timeseries
curl https://easy-predict.com/timeseries \
-H "Content-Type: application/json" \
-H "PAYMENT-SIGNATURE: <signed-x402-payload>" \
-d '{"series": [1.0, 2.3, 4.1, 6.8, 9.2], "context": "monthly revenue USD"}'
Response:
{
"prediction": 12.1,
"method": "linear",
"holdout_errors": {"linear": 0.05, "log1p-linear": 0.31, "last-delta": 0.05, "mean": 3.5},
"slope": 1.94,
"intercept": 0.12
}
Model selection: holds out the last point, evaluates linear, log1p-linear, last-delta, and mean against it, retrains the winner on the full series.
POST /anomaly-detection
curl https://easy-predict.com/anomaly-detection \
-H "Content-Type: application/json" \
-H "PAYMENT-SIGNATURE: <signed-x402-payload>" \
-d '{"series": [1.0, 2.3, 4.1, 6.8, 99.0], "threshold": 2.0}'
Response:
{
"anomalies": [{"index": 4, "value": 99.0, "z_score": 2.14}],
"method": "z-score",
"mean": 15.12,
"std": 39.18,
"threshold": 2.0
}
Both endpoints accept an optional "context" string (max 200 chars) echoed back in the response.
x402 payment flow
Omit the payment header to get a 402 with the full payment terms:
{
"x402Version": 2,
"error": "Payment Required",
"accepts": [{
"scheme": "exact",
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"payTo": "0xc99b83818c8865340AC55C45554f377f41c68DBC",
"maxTimeoutSeconds": 60
}]
}
- Parse
accepts[0]from the 402 response - Sign a payment payload with your wallet
- Base64-encode the signed JSON and retry with
PAYMENT-SIGNATURE: <encoded> - The Cloudflare Worker verifies via
https://x402.org/facilitatorand settles on-chain
Payment: 10000 atomic units = $0.01 USDC (6 decimals) on Base mainnet.
MCP server (Claude Desktop, Cursor, Windsurf)
The MCP server runs locally on your machine. Your wallet private key never leaves your device — it signs the x402 payment locally and only the signed header is sent to easy-predict.com.
Add to your MCP client config:
{
"mcpServers": {
"easy-predict": {
"command": "uvx",
"args": ["easy-predict-mcp"],
"env": {
"WALLET_PRIVATE_KEY": "0xYOUR_WALLET_PRIVATE_KEY"
}
}
}
}
Then ask Claude: "Predict the next value for this series: 1.2, 2.4, 4.1, 6.8" — it calls the tool, pays $0.01 USDC from your wallet automatically, and returns the forecast.
Listed on Smithery — search easy-predict to install with one click.
Listed on Smithery — search easy-predict to install with one click.
Agent integration (Python)
A working Claude agent that handles the full 402 → sign → retry loop autonomously:
pip install anthropic requests eth-account
ANTHROPIC_API_KEY=sk-... WALLET_PRIVATE_KEY=0x... python examples/demo_agent.py
examples/demo_agent.py — uses Anthropic tool use. The same pattern works with LangChain, LlamaIndex, CrewAI, or AutoGen.
Demo mode (no wallet, against local server):
cd timeseries && python app.py &
ANTHROPIC_API_KEY=sk-... python examples/demo_agent.py
Architecture
- Cloudflare Worker (
src/index.ts) — edge runtime, rate limiting, full x402 verify+settle via the facilitator - Flask backend (
timeseries/app.py) — Python prediction logic, local dev server - Static assets (
public/) — splash page,openapi.json,llms.txt
The Worker handles all production traffic. The Flask app is used for local development and runs on port 8000.
Local development
pip install -r requirements.txt
cd timeseries && python app.py # Flask on http://localhost:8000
The local Flask server uses presence-only payment checking — any non-empty PAYMENT-SIGNATURE header is accepted. Useful for testing without a real wallet.
For the Cloudflare Worker:
npm install
npx wrangler dev # Worker on http://localhost:8787
Repo structure
timeseries/app.py Flask backend (prediction + anomaly detection logic)
anomaly_detection/app.py Anomaly detection blueprint
src/index.ts Cloudflare Worker (edge runtime)
mcp_server/easy_predict_mcp/server.py MCP server — runs locally, signs payments on device
mcp_server/pyproject.toml PyPI package definition (easy-predict-mcp)
smithery.yaml Smithery registry config
public/
index.html Splash page
openapi.json OpenAPI 3.1 spec
llms.txt Human/agent-readable docs
examples/
demo_agent.py Claude agent integration demo with x402 payments
tests/ Test suite
Configuration
Flask backend env vars (all optional):
| Variable | Default | Description |
|---|---|---|
PAY_TO_ADDRESS |
0xc99b... |
Recipient wallet |
X402_ASSET |
USDC on Base | ERC-20 asset address |
X402_NETWORK |
eip155:8453 |
Chain ID |
X402_MAX_AMOUNT |
10000 |
Atomic units ($0.01) |
FACILITATOR_URL |
https://x402.org/facilitator |
x402 facilitator |
PUBLIC_BASE_URL |
https://easy-predict.com |
Base URL for resource URLs in 402 responses |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file easy_predict_mcp-1.0.0.tar.gz.
File metadata
- Download URL: easy_predict_mcp-1.0.0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.17.0 {"ci":null,"cpu":"arm64","distro":{"name":"macOS","version":"26.5.1"},"implementation":{"name":"CPython","version":"3.10.9"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 1.1.1v 1 Aug 2023","python":"3.10.9","system":{"name":"Darwin","release":"25.5.0"}} HTTPX2/2.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
babc22c6be942f634b0486e7a83ca92bb82898c0cfde59c8fe76c621c5ba5e83
|
|
| MD5 |
91d842343a4978c15cafc094287cbb80
|
|
| BLAKE2b-256 |
9ece3acb9fe41754e9c8d278f1cd0424e5b2f9897b74018a524963a7556f6d76
|
File details
Details for the file easy_predict_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: easy_predict_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.17.0 {"ci":null,"cpu":"arm64","distro":{"name":"macOS","version":"26.5.1"},"implementation":{"name":"CPython","version":"3.10.9"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 1.1.1v 1 Aug 2023","python":"3.10.9","system":{"name":"Darwin","release":"25.5.0"}} HTTPX2/2.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fab64f42d49a6c5cf45f57e6b4785172f37ade9113eca65b5fcca4f72713878
|
|
| MD5 |
ef5a2d3e4c796402733fa220a7eb3622
|
|
| BLAKE2b-256 |
169535d7db511e586c33004d2f03e11377058ae899afa19ce6148f706e84ac2d
|