{
  "markdown": "# carrydesk\n\n<!-- mcp-name: io.github.pelazas/carrydesk -->\n\n**Cross-sectional funding-carry rankings for Hyperliquid perpetuals, sold per call in USDC.**\n\nEvery hour, rank the liquid Hyperliquid perp universe by trailing 14-day mean\nfunding. The most negative names pay you to hold them long; the most positive pay\nyou to short them. The spread between those two legs is the carry — a structural\nrisk premium, not a prediction.\n\nThis is the same signal a live market-neutral book trades, published as an API.\n\n---\n\n## Endpoints\n\n| | Endpoint | Price |\n|---|---|---|\n| free | `GET /v1/free/carry` — top 5 each leg, delayed 24h | — |\n| free | `GET /v1/method` — how it is computed, and the caveats | — |\n| free | `GET /health` | — |\n| paid | `GET /v1/carry/rankings` — full live ranking, tunable `k` | $0.05 |\n| paid | `GET /v1/carry/history/{coin}` — archived rank + funding | $0.02 |\n| paid | `GET /v1/universe` — liquid perps by volume, OI, funding | $0.01 |\n\nPaid endpoints are metered with [x402](https://x402.org): the server answers\n`402` with payment requirements, your client pays USDC on Base, retries, and gets\nthe data. No account, no API key, no invoice.\n\n---\n\n## Quick start\n\n```bash\ncurl -s https://carry.pelazas.com/v1/free/carry | jq\n```\n\n```json\n{\n  \"carry_spread_annualized\": 0.3901,\n  \"carry_spread_annualized_trimmed\": 0.2231,\n  \"carry_spread_annualized_median\": 0.0955,\n  \"headline_vs_typical\": 4.09,\n  \"outlier_dominated\": true,\n  \"longs\":  [{\"coin\": \"PENGU\", \"mean_funding_annualized\": -0.0636}, ...],\n  \"shorts\": [{\"coin\": \"SAGA\",  \"mean_funding_annualized\":  1.9886}, ...]\n}\n```\n\nThree spread numbers, always, plus two that say how far apart they are. The\nheadline mean is what an equal-weighted book earns; the median is what a typical\ncoin pays. `headline_vs_typical` is the multiple between them — about 4 in the\nsample above, and around 4 in practice — and `outlier_dominated` fires when the\nmedian drops below half the mean. On the reading above, SAGA alone accounts for most of the gap — that\nis exactly the kind of thing a single number would hide.\n\n---\n\n## MCP\n\n```bash\nclaude mcp add carrydesk -- uvx --from carrydesk carrydesk-mcp\n```\n\nNo clone, no virtualenv — `uvx` fetches and runs it.\n\nSix tools: `carry_snapshot`, `carry_method`, `carry_health` (free) and\n`carry_rankings`, `carry_history`, `carry_universe` (paid). It talks to\n`https://carry.pelazas.com` by default — override with `CARRYDESK_API_BASE`.\n\nSet `CARRYDESK_PRIVATE_KEY` to let the agent pay automatically. Without it the\nfree tools work and paid tools return the price instead of failing, so a\nwallet-less install is still useful.\n\n---\n\n## Local development\n\n```bash\nuv venv --python 3.12 && uv pip install -e \".[dev]\"\n.venv/bin/python -m uvicorn carrydesk.api:app --reload   # open, no paywall\n.venv/bin/python -m pytest -q                            # full suite, no network\n```\n\nWith `X402_PAY_TO` unset the service runs fully open — that is the dev default.\nSet it to turn the paywall on. See `.env.example`.\n\n---\n\n## For agents and crawlers\n\n`/llms.txt` describes the whole service in plain text. `/openapi.json` is the\nfull spec, `/archive` is every snapshot ever published, and the public page\ncarries schema.org `Dataset` markup. Crawlers are explicitly welcome — the free\ntier exists to be read, indexed and quoted.\n\n## Honest limitations\n\n- The carry spread **can and does go negative**. This is compensation for\n  absorbing crowded leverage, not a forecast.\n- All figures are **gross of fees, slippage and borrow**. Taker fees alone can\n  erase the edge; the reference book is maker-only for that reason.\n- Funding is **Hyperliquid's own**, with no cross-venue reconciliation yet.\n- Illiquid names dominate the headline spread more often than not. Read the\n  trimmed and median variants before sizing anything.\n- **Informational only. Not investment advice.**\n\n---\n\n## Repo docs\n\n| File | What |\n|---|---|\n| `BACKLOG.md` | Deliberately deferred work, with the reason for each |\n| `AGENTS.md` | Onboarding for an AI agent picking this up cold — gotchas, rules, what is unverified |\n| `STATUS.md` | Current state, what is blocked, what is next |\n| `DECISIONS.md` | Why each significant choice was made |\n",
  "bytes": 4217,
  "sha": "729d31dd1e43f6b1297908660caa18b053eea103aefb6f79ae4a11858242677a",
  "repo_slug": "pelazas/carrydesk",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_pelazas_carrydesk_ffa8ee85/readme"
}