npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@httpayer/mcp

v0.1.8

Published

Agentic payments for AI agents — x402 micropayments via HTTPayer credits. No wallets, no blockchain.

Downloads

534

Readme

@httpayer/mcp

MCP (Model Context Protocol) server for HTTPayer. Lets AI agents call x402-enabled APIs using credit balance — no wallets, no blockchain, no Web3 knowledge required.


Quickstart

With an AI agent (recommended)

Paste this into any MCP-compatible agent (Claude Code, Cursor, Windsurf, OpenCode...):

Set up https://httpayer.com/skill.md

The agent detects your environment and handles everything automatically.

Without an agent (manual)

1. Run setup:

npx @httpayer/mcp setup

Get your API key at app.httpayer.com when prompted.

Flags:

| Flag | Description | |------|-------------| | --key sk-live-... | Provide key non-interactively | | --client <name> | Target client: claude-code, claude-desktop, cursor, windsurf, opencode, zed, cline, warp, codex | | --scope user\|project | Claude Code scope (default: user) | | --yes / -y | Skip all prompts | | --update-key | Replace existing key |

2. Add to your client:

Claude Code:

claude mcp add httpayer --scope user -- npx -y @httpayer/mcp@latest

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "httpayer": {
      "command": "npx",
      "args": ["-y", "@httpayer/mcp@latest"]
    }
  }
}

Cursor (.cursor/mcp.json), Windsurf (.windsurf/mcp.json), Cline (.cline/mcp_settings.json):

{
  "mcpServers": {
    "httpayer": {
      "command": "npx",
      "args": ["-y", "@httpayer/mcp@latest"]
    }
  }
}

OpenCode (opencode.json or ~/.config/opencode/config.json):

{
  "mcp": {
    "httpayer": {
      "type": "local",
      "command": ["npx", "-y", "@httpayer/mcp@latest"],
      "enabled": true
    }
  }
}

Zed:

{
  "context_servers": {
    "httpayer": {
      "command": {
        "path": "npx",
        "args": ["-y", "@httpayer/mcp@latest"]
      }
    }
  }
}

3. Restart your client and verify:

Ask your agent: "fetch https://api.httpayer.com/demo/v1/base-weather"

A weather response means HTTPayer is working.


How it works

User prompt
    │
    ▼
AI agent (Claude Code, Cursor, Windsurf...)
    │  uses MCP tools + prompts + resources
    ▼
@httpayer/mcp (local MCP server via npx)
    │  REST calls with x-api-key header
    ▼
api.httpayer.com
    │  proxy handles x402 payment to target
    ▼
Target x402-gated API

Runtime flow

  1. Your client launches the MCP server via npx -y @httpayer/mcp@latest on startup (stdio transport).
  2. The server reads the API key from ~/.httpayer/mcp-config.json.
  3. The agent receives the tool list, system instructions, prompts, and resources in its context.
  4. When the agent calls fetch, the MCP server forwards the request to POST https://api.httpayer.com/proxy.
  5. HTTPayer's proxy detects a 402, pays using your credits, retries, and returns the final response.
  6. The result (status, body, headers) comes back to the agent.

MCP capabilities

This server exposes three MCP primitives so agents get context automatically — without the user having to ask.

Tools

Six tools (see full reference below).

Prompts

| Name | Description | |------|-------------| | httpayer-context | Injects full HTTPayer payment context into the agent. Clients that support prompts will load this automatically at session start. |

Compatible clients (Claude Desktop, Cursor, and others) call prompts/list on connection and inject these into the agent's context proactively.

Resources

| URI | Description | |-----|-------------| | httpayer://skill.md | Full setup guide, trigger patterns, available endpoints, and workflow. Clients can pull this on demand as grounding context. |


MCP tools reference

get_balance

Check credit balance and daily usage.

Input: none

Example response:

{
  "account_id": "account_123",
  "mainnet": {
    "credits_balance": 50000,
    "daily_limit": 100000,
    "daily_spend": 15500,
    "daily_remaining": 84500
  }
}

fetch

Make an HTTP request to any x402-enabled endpoint. Payment is handled automatically.

Input:

| Field | Type | Required | Description | |-------|------|----------|-------------| | url | string | yes | Target URL | | method | string | no | GET, POST, PUT, DELETE, PATCH — default GET | | body | object | no | JSON request body | | params | object | no | Query string parameters | | headers | object | no | Additional request headers | | timeout | number | no | Timeout in seconds, max 120 |

Example response:

{
  "status": 200,
  "body": { "data": "..." },
  "headers": { "content-type": "application/json" }
}

On 502, the response includes webhook_id for async polling.


simulate

Dry-run a fetch. Returns cost estimate without spending credits.

Input: Same as fetch (except timeout).

Example response:

{
  "requiresPayment": true,
  "proxyFeeBreakdown": {
    "targetAmount": 0.01,
    "proxyFee": 0.0003,
    "totalCreditsCharged": 10.3
  }
}

get_topup_link

Returns the dashboard URL to add credits. Show to user when balance is low.

Input: none


check_limits

Check global HTTPayer system daily limits and remaining capacity.

Input: none


get_webhook_status

Poll the status of an async operation. Use when fetch returns a 502 with webhook_id.

Input: webhook_id (string, required)

Status values: pending, success, success_refunded, payment_failed, upstream_error, internal_error, rate_limited


HTTPayer API reference

Authentication: x-api-key: sk-live-... header on all requests.

| Method | Path | Tool | |--------|------|------| | GET | /v1/credits/balance | get_balance | | POST | /proxy | fetch | | POST | /proxy/sim | simulate | | GET | /limits | check_limits | | GET | /webhooks/{id} | get_webhook_status |

Proxy endpoint

POST https://api.httpayer.com/proxy

{
  "api_url": "https://target.example.com/endpoint",
  "method": "GET",
  "json": { "key": "value" },
  "params": { "query": "param" },
  "headers": { "Custom-Header": "value" },
  "timeout": 30
}

Only api_url and method are required.

Status codes:

| Code | Meaning | |------|---------| | 200 | Success | | 402 | Insufficient credits | | 429 | Rate limited | | 500 | Proxy error | | 502 | Target refused payment — includes webhook_id |


Configuration

API key stored at: ~/.httpayer/mcp-config.json

{ "apiKey": "sk-live-..." }

To update: npx @httpayer/mcp setup --update-key


x402 protocol overview

x402 is an HTTP-native micropayment protocol using the 402 Payment Required status code.

Without HTTPayer:

  1. Client hits endpoint → gets 402 + payment requirements
  2. Client pays on-chain (requires wallet + USDC)
  3. Client retries with payment proof

With HTTPayer:

  1. Client calls POST /proxy { api_url, method, ... }
  2. HTTPayer detects 402, pays using your credits
  3. HTTPayer retries and returns the final response

All blockchain interaction happens on HTTPayer's side.


Credit system

| Unit | Value | |------|-------| | 1 credit | 0.001 USDC | | 1 USDC | 1,000 credits | | Proxy fee | 3% of target payment |

Top up at app.httpayer.com. Below 100 credits, the agent will prompt you to top up.


Error handling

Setup errors

| Situation | Behavior | |-----------|----------| | Key format invalid | Print error, exit 1 | | Key rejected (401) | Print "API key rejected", exit 1 | | Network unreachable | Print reason, exit 1 |

MCP tool errors

All errors return isError: true — the server stays alive and the agent gets a readable message.

| Situation | Message | |-----------|---------| | No config | "No HTTPayer API key configured. Run: npx @httpayer/mcp setup" | | API non-2xx | "HTTPayer {status}: {body}" | | Unknown tool | "Unknown tool: {name}" |


© 2026 HTTPayer Inc.