# habitscore-mcp
MCP server for **Habitscore** — analytics over anything with a recurring completion history.
Two families of tools, one engine:
- **Operational reliability** — score recurring tasks, jobs, pipelines and scheduled
workflows. Success rate, streak recovery, lapse risk, latency-trend warnings, and
remediation ranked by priority.
- **Behavioural analytics** — the same scoring over habit and routine data. Adherence,
consistency, momentum, lapse risk, next-best actions, multi-week plans.
Pays per call with [x402](https://x402.org): USDC on Base, no account, no API key, no
subscription. From **$0.03** per call.
Walkthrough with a working x402 client example:
## Why it works this way
The server runs on **your** machine with **your** wallet. It signs payments locally and the
private key never leaves the process. Nothing is custodied on our side and there is no
account to create — the same promise the HTTP API makes.
Without a wallet configured, every tool still works in **quote-only** mode: it returns the
price and the payment terms instead of erroring, so you can see what a call would cost
before funding anything.
## Install
```jsonc
// Claude Desktop: claude_desktop_config.json
// Cursor: ~/.cursor/mcp.json
{
"mcpServers": {
"habitscore": {
"command": "npx",
"args": ["-y", "habitscore-mcp"],
"env": {
"HABITSCORE_PRIVATE_KEY": "0x…",
"HABITSCORE_MAX_SPEND_USD": "0.25"
}
}
}
}
```
Omit `HABITSCORE_PRIVATE_KEY` to start in quote-only mode.
## Wallet
Use a **dedicated wallet holding only what you intend to spend.** Fund it with a small
amount of USDC on Base (contract `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`). You do not
need ETH: under EIP-3009 you sign the authorisation off-chain and the facilitator submits
the transaction and pays the gas.
`HABITSCORE_MAX_SPEND_USD` caps what a single tool call may spend, and is checked against the
price the server actually quotes **before anything is signed**. An agent loop that retries a
paid tool can otherwise spend without bound, and you are the one paying — so a server that
quotes more than you authorised is refused rather than paid.
## Tools
| Tool | Price | Returns |
|---|---|---|
| `analyze_reliability` | $0.08 | Reliability score and grade per task, lapse risk, latency-trend warnings, priority-ranked remediation |
| `analyze_behaviour` | $0.05 | Adherence and consistency scores, streak momentum, lapse-risk flags, highlights, watchouts, recommendations |
| `recommend_next_actions` | $0.03 | Ranked next-best action per habit with rationale and priority |
| `extract_insights` | $0.05 | Condensed patterns, correlations and risk signals |
| `build_habit_plan` | $0.10 | Multi-week plan for one habit: weekly targets and dated milestones |
**Price is per call, not per habit.** `analyze_behaviour` accepts up to 25 habits for the
same $0.05, so batching is by far the cheapest way to use this.
## Input
Reliability:
```json
{
"system": "billing-pipeline",
"tasks": [
{
"name": "nightly-etl",
"success_rate": 0.83,
"current_streak": 0,
"best_streak": 52,
"runs": 210,
"latency_trend": "rising",
"p95_latency_ms": 38000,
"cadence": "daily",
"critical": true
}
]
}
```
`name`, `success_rate` (0–1), `current_streak` and `best_streak` are required. Note that
**`latency_trend: "rising"` is the degradation signal** — the opposite polarity to the
behavioural tools, where a falling trend is the warning.
Behavioural:
```json
{
"habits": [
{
"name": "Morning run",
"completion_rate": 0.72,
"current_streak": 9,
"best_streak": 21,
"average_mood": 7.4,
"energy_trend": "rising"
}
]
}
```
`name`, `completion_rate` (0–1), `current_streak` and `best_streak` are required. `average_mood`,
`mood_correlation`, `energy_trend` and `risk_score` are optional and sharpen the result.
"Habit" is the domain vocabulary, but the analysis applies to any **recurring activity with
completion history** — training schedules, medication adherence, study routines, recurring
operational tasks.
## What it does not do
The engine is deterministic and CPU-only: threshold rules and arithmetic over the numbers
you supply. Same input, same output, every time.
It is **not** a language model and does not generate prose beyond composing its findings. It
does not store anything — the agent endpoints are stateless, accept no user identifier, and
cannot read or infer any stored history. It is not medical, psychological or financial
advice.
## Environment
| Variable | Default | Purpose |
|---|---|---|
| `HABITSCORE_PRIVATE_KEY` | — | Wallet key for signing payments. Omit for quote-only mode. |
| `HABITSCORE_MAX_SPEND_USD` | `0.25` | Hard cap per tool call, enforced before signing. |
| `HABITSCORE_API_URL` | `https://api.mydev-tools.tech` | API origin. |
| `BASE_RPC_URL` | `https://mainnet.base.org` | Base RPC for balance reads and signing context. |
## Verifying a charge
Every successful paid call appends the settlement transaction hash to the tool output. Open
it on [basescan.org](https://basescan.org) to confirm the amount and recipient independently
of anything this server reports.
## Links
- API:
- Overview:
- OpenAPI:
- Capabilities:
- Pricing and volume rebate:
## Volume rebate
Verified spend earns credits back — 5% from $10 lifetime, 10% from $100, 15% from $1,000,
with higher rate limits at each tier. Credits are returned inline in the response that earns
them and are redeemed with an `X-Agent-Credit` header on a later call.
MIT licensed.