Skip to main content

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
  }]
}
  1. Parse accepts[0] from the 402 response
  2. Sign a payment payload with your wallet
  3. Base64-encode the signed JSON and retry with PAYMENT-SIGNATURE: <encoded>
  4. The Cloudflare Worker verifies via https://x402.org/facilitator and 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easy_predict_mcp-1.0.0.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

easy_predict_mcp-1.0.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

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

Hashes for easy_predict_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 babc22c6be942f634b0486e7a83ca92bb82898c0cfde59c8fe76c621c5ba5e83
MD5 91d842343a4978c15cafc094287cbb80
BLAKE2b-256 9ece3acb9fe41754e9c8d278f1cd0424e5b2f9897b74018a524963a7556f6d76

See more details on using hashes here.

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

Hashes for easy_predict_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1fab64f42d49a6c5cf45f57e6b4785172f37ade9113eca65b5fcca4f72713878
MD5 ef5a2d3e4c796402733fa220a7eb3622
BLAKE2b-256 169535d7db511e586c33004d2f03e11377058ae899afa19ce6148f706e84ac2d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page