[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80452":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},80452,"ARI","Antmanbuilds\u002FARI","Antmanbuilds","The fair pricing oracle for the agent economy. ARI (Agent Rate Indicators).",null,"TypeScript",40,3,5,1,0,1.81,"Apache License 2.0",false,"main",true,[],"2026-06-12 02:04:02","# ARI · Agentic Rate Indicators\n\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fari-mcp.svg?label=npm)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fari-mcp)\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fari-mcp-py.svg?label=PyPI)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fari-mcp-py\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-blue.svg)](LICENSE)\n[![MCP](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMCP-server-7c3aed)](https:\u002F\u002Fmodelcontextprotocol.io)\n\nLive fair-market-value lookups, leaderboards, and Ed25519 signed-receipt verification for x402\u002FMPP services. `ari-mcp` lets any MCP-aware agent answer two questions cleanly:\n\n1. **Is this API price fair?** Compare a quoted unit price against the live ARI fair-price band for that service.\n2. **Is this receipt real?** Verify the signed receipt returned by an x402\u002FMPP facilitator offline, with a pinned publisher key.\n\nThe same package ships for Node and Python, with the same tool surface and the same wire spec.\n\n```\n┌──────────┐     stdio     ┌──────────┐     HTTPS    ┌──────────────────────────┐\n│  Agent   │ ────────────▶ │ ari-mcp  │ ───────────▶ │ agentrateindicators.com  │\n│ (Claude, │ ◀──────────── │  server  │ ◀────────── │   \u002Fapi\u002Fv1\u002F*              │\n│ Cursor…) │   tool JSON   └──────────┘   signed     └──────────────────────────┘\n└──────────┘                                receipts\n```\n\n## Install in your agent\n\nPick the host you use. Each block is copy-paste, no edits required.\n\n### Claude Desktop\n\n`~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json` on macOS, `%APPDATA%\\Claude\\claude_desktop_config.json` on Windows:\n\n```json\n{\n  \"mcpServers\": {\n    \"ari\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"ari-mcp\"]\n    }\n  }\n}\n```\n\n### Cursor\n\n`~\u002F.cursor\u002Fmcp.json` (or the per-workspace `.cursor\u002Fmcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"ari\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"ari-mcp\"]\n    }\n  }\n}\n```\n\n### Continue\n\n`~\u002F.continue\u002Fconfig.yaml`:\n\n```yaml\nmcpServers:\n  - name: ari\n    command: npx\n    args: [\"-y\", \"ari-mcp\"]\n```\n\n### Windsurf\n\n`~\u002F.codeium\u002Fwindsurf\u002Fmcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"ari\": { \"command\": \"npx\", \"args\": [\"-y\", \"ari-mcp\"] }\n  }\n}\n```\n\n### Zed\n\n`~\u002F.config\u002Fzed\u002Fsettings.json`:\n\n```json\n{\n  \"context_servers\": {\n    \"ari\": {\n      \"command\": { \"path\": \"npx\", \"args\": [\"-y\", \"ari-mcp\"] }\n    }\n  }\n}\n```\n\n### Gemini CLI \u002F ChatGPT desktop \u002F any other MCP host\n\n`command: npx`, `args: [\"-y\", \"ari-mcp\"]`. Or, for Python-native hosts, `command: uvx`, `args: [\"ari-mcp-py\"]`.\n\n## Tools\n\n| Tool | What it does |\n| --- | --- |\n| `is_fair_price` | Green \u002F amber \u002F red verdict for a quoted price against the live FMV band. |\n| `refuse_if_overpriced` | Convenience wrapper to call right before paying · returns `{ok, reason}`. |\n| `prepay_verdict` | Full pre-pay decision with FMV band, deviation, and a citable receipt id. |\n| `get_fmv` | Median plus low \u002F high band and sample size for a service. |\n| `get_service` | Full detail row · sources, related services, last observation. |\n| `list_services` | Browse or filter the index by protocol or category. |\n| `get_leaderboard` | Cheapest, most expensive, biggest movers in a category. |\n| `recent_observations` | Raw observed price history for a service. |\n| `verify_receipt` | Re-verify a previously issued receipt id offline. |\n| `get_signed_receipt` | Re-fetch the signed body for a receipt id. |\n| `subscribe_alert` | Set up a webhook or email price alert for a service. |\n\nEvery tool returns JSON shaped for citation rather than free text. Agents that quote tool output verbatim end up with good citations for free.\n\n## A real tool call\n\nAsking Claude *\"is this quote fair before I pay it?\"* triggers:\n\n```json\n{\n  \"tool\": \"is_fair_price\",\n  \"arguments\": {\n    \"slug\": \"openrouter-anthropic-claude-3-5-sonnet\",\n    \"amount_usd\": 4.10,\n    \"unit\": \"1m_input_tokens\"\n  }\n}\n```\n\nand the server returns:\n\n```json\n{\n  \"verdict\": \"amber\",\n  \"fmv_usd\": 3.04,\n  \"low_usd\": 2.87,\n  \"high_usd\": 3.21,\n  \"delta_pct\": 34.9,\n  \"sample_size\": 47,\n  \"currency\": \"USD\",\n  \"unit\": \"1m_input_tokens\",\n  \"receipt_id\": \"01J5ZK8E2K7Q3R5W8X9Y0Z1A2B\",\n  \"signed_at\": \"2026-05-21T14:02:11Z\"\n}\n```\n\nThe agent now has a concrete reason to push back on the quote, plus an auditable receipt id. When ARI has not yet computed a baseline for a service, `verdict` is `\"unknown\"` and the FMV fields are `null` rather than zero · agents should treat `null` as \"no opinion\", never as \"free\".\n\n## Verify a receipt yourself\n\n```bash\n# Node\nnpx ari-mcp verify --url https:\u002F\u002Fagentrateindicators.com\u002Fapi\u002Fv1\u002Fpubkey\n\n# Python\nuvx ari-mcp verify --url https:\u002F\u002Fagentrateindicators.com\u002Fapi\u002Fv1\u002Fpubkey\n```\n\nBoth print `OK` on success and a structured failure with the exact reason on failure (hash mismatch, unknown key id, bad signature, missing header). See [spec\u002Fverification.md](spec\u002Fverification.md) for the by-hand walkthrough.\n\n## Why this exists\n\nAgents are starting to spend real money through x402 and MPP facilitators. There are two things they cannot do today without help:\n\n- **Sanity-check a price before paying it.** Facilitators are free to quote anything. ARI keeps a live, public fair-price band per service so an agent (or a human reviewer) can see when a quote is out of line.\n- **Verify a receipt after paying.** Facilitators return signed metadata about the transaction, but most agents take this on faith. ARI publishes the receipt canonicalization and an Ed25519 verifier so receipts can be checked offline, against a pinned key.\n\n`ari-mcp` exposes both as plain MCP tools. No new protocols for the agent author to learn.\n\n## Wire spec\n\nThe repository is the source of truth for the wire format:\n\n- [`spec\u002Fopenapi.yaml`](spec\u002Fopenapi.yaml) · public HTTP surface\n- [`spec\u002Fsigned-receipts.md`](spec\u002Fsigned-receipts.md) · receipt canonicalization and header layout\n- [`spec\u002Fverification.md`](spec\u002Fverification.md) · step-by-step verifier in Node and Python\n\nAnyone porting `ari-mcp` to another language can work from `spec\u002F` alone.\n\n## Packages\n\n| Language | Package | Source |\n| --- | --- | --- |\n| Node 18+ | [`ari-mcp` on npm](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fari-mcp) | [`packages\u002Fari-mcp-ts`](packages\u002Fari-mcp-ts) |\n| Python 3.10+ | [`ari-mcp-py` on PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fari-mcp-py\u002F) | [`packages\u002Fari-mcp-py`](packages\u002Fari-mcp-py) |\n\nBoth packages share the same tool names, argument shapes, and JSON return shapes. Both ship offline receipt verification with a pinned key and an `ACCEPTED_KEY_IDS` list for graceful rotation. Both default to the public ARI API and accept `ARI_API_BASE_URL` to point at a private mirror.\n\n## Security\n\nIf you find a security issue, please report it privately. See [SECURITY.md](SECURITY.md). The current publisher key, the canonicalization spec, and the verification walkthrough are all linked from there.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). Bug reports, small fixes, and additional install snippets for other MCP hosts are all welcome. The internal API server, fair-price methodology, and data adapters live elsewhere and are intentionally not part of this repository · pull requests that try to add them will be closed.\n\n## License\n\n[Apache-2.0](LICENSE). See [NOTICE](NOTICE) for third-party attributions.\n","ARI 是一个为代理经济提供公平定价的预言机项目。它通过TypeScript编写，支持Node和Python环境，核心功能包括实时市场价值查询、排行榜展示以及Ed25519签名收据验证，特别适用于x402\u002FMPP服务场景。ARI允许任何MCP（Model Context Protocol）兼容代理轻松回答两个关键问题：一是API报价是否公平；二是验证离线状态下由x402\u002FMPP促进者返回的签名收据真实性。此外，ARI还提供了多种工具如`is_fair_price`来评估价格合理性等，帮助开发者更好地管理和优化其代理应用的成本效益。该项目采用Apache License 2.0开源许可协议发布。",2,"2026-06-11 04:00:47","CREATED_QUERY"]