hogswap-mcp
MCP server exposing HOGSWAP to AI
agents: DEX-aggregated quotes, unsigned swap builds, zero-human API-key
self-registration, and the star ā pay_x402_invoice: pay any
Algorand-settled x402 invoice with any 1ā4 assets you hold, via an
exact-out router swap. API reference:
hogswap-v1.liquihog.dev/reference.
Strictly non-custodial: every transaction-producing tool returns unsigned groups; you sign with your own wallet tooling and submit yourself. Never give any tool a mnemonic or private key.
Run (stdio)
npm install
HOGSWAP_API_KEY=hsk_... node src/index.mjs # key optional
Claude Code: claude mcp add hogswap -e HOGSWAP_API_KEY=hsk_... -- node <abs-path>/src/index.mjs
| Env | Meaning |
|---|---|
HOGSWAP_API_URL | API base (default https://hogswap-v1.liquihog.dev) |
HOGSWAP_API_KEY | hsk_ bearer key; self-issue via the register_agent / verify_registration tools |
Tools
Free (no key): list_payable_assets, get_quote, register_agent,
verify_registration.
š Require a HOGSWAP API key (set HOGSWAP_API_KEY, or self-issue one
with register_agent ā sign ā verify_registration): build_swap,
pay_x402_invoice, get_credit_offer, get_balance. Without a key
these return an auth error, not a build.
pay_x402_invoice returns two groups (swap, then payment) ā sign all
txns in one pass, submit the groups in order; the swap's on-chain
floor guarantees the payment is funded. A HOGSWAP credit top-up's 402
offer is itself an x402 invoice: feed its accepts[0] (with the
note nonce) straight into pay_x402_invoice to buy credits with
any asset.
Remote (no local process)
The same 8 tools are served over MCP Streamable HTTP at
https://hogswap-v1.liquihog.dev/mcp/ ā hosted by the HOGSWAP API
itself, no local process needed. Use the trailing slash ā the
bare /mcp 307-redirects to /mcp/, costing an extra round trip per
call. Point any remote-capable MCP client at it; pass your key as
Authorization: Bearer hsk_... (the Claude API connector's
authorization_token does exactly this).
Smoke tests
HOGSWAP_API_URL=http://127.0.0.1:8015 HOGSWAP_API_KEY=hsk_... \
SMOKE_PAY_TO=<any USDC-opted addr> node test/smoke.mjs # stdio
MCP_URL=http://127.0.0.1:8015/mcp HOGSWAP_API_KEY=hsk_... \
SMOKE_PAY_TO=<any USDC-opted addr> node test/smoke-remote.mjs # remote
Read-only + build-only; nothing is signed or broadcast.