{"name":"io.github.LiquiHog/hogswap-mcp","slug":"liquihog-hogswap-mcp","title":null,"description":"Pay any Algorand x402 invoice with any asset, plus DEX swap quotes and unsigned builds.","url":"https://mcp.market/server/liquihog-hogswap-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"finance","tags":["finance"],"presence":{"score":25,"stars":0,"forks":0,"downloads_week":107,"last_push_at":"2026-08-11T10:03:43.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T05:30:25.905Z","last_ok_at":"2026-11-04T05:30:25.905Z","latency_ms":372},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/LiquiHog/hogswap-mcp","website":null,"version":"0.4.0","remotes":[{"type":"streamable-http","url":"https://hogswap-v1.liquihog.dev/mcp/"}],"packages":[{"registryType":"npm","identifier":"hogswap-mcp","version":"0.4.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"hsk_ HOGSWAP API key for the paid tier (self-issue with the register_agent/verify_registration tools). Free tools work without it.","format":"string","isSecret":true,"name":"HOGSWAP_API_KEY"},{"description":"API base URL (default https://hogswap-v1.liquihog.dev).","format":"string","name":"HOGSWAP_API_URL"}]}],"tools":[{"name":"build_swap","description":"Unsigned transaction group for a get_quote quote_id. Sign every txn with your own wallet and submit as one group. NEVER pass mnemonics or private keys to any tool — signing happens in YOUR wallet, never here.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"quote_id":{"title":"Quote Id","type":"string"},"user_address":{"title":"User Address","type":"string"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"}},"required":["quote_id","user_address"],"title":"build_swapArguments"}},{"name":"delete_watch","description":"Delete one of your watches by its client_key.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"client_key":{"title":"Client Key","type":"string"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"}},"required":["client_key"],"title":"delete_watchArguments"}},{"name":"get_balance","description":"Current HOGSWAP credit balance for your API key.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"}},"title":"get_balanceArguments"}},{"name":"get_credit_offer","description":"Create a credit top-up and get the x402 offer (HTTP 402 IS the payment instruction, not an error). Feed accepts[0] straight into pay_x402_invoice (keep the note nonce) to pay with any asset. Credits land ~1 block after payment.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"usdc_micro":{"title":"Usdc Micro","type":"integer"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"}},"required":["usdc_micro"],"title":"get_credit_offerArguments"}},{"name":"get_quote","description":"HOGSWAP swap quote across every Algorand DEX. Give amount (exact input) OR amount_out (exact output — minimum input is solved). Base units (µ); asset 0 = ALGO. Returns expected_out, route legs, and a quote_id for build_swap. expected_out is NET of the 5 bps routing fee; passing sender also returns router_fee_* fields and the wallet's HOG discount (hog_discount_pct, 100 = fully waived at 100 HOG). Optional sender enables HOG-holding fee discounts. Optional max_legs (1-16) caps TOTAL route legs, splits included — slightly worse price at size, 404 if nothing fits; forward (amount) quotes only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"asset_in":{"title":"Asset In","type":"integer"},"asset_out":{"title":"Asset Out","type":"integer"},"amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Amount"},"amount_out":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Amount Out"},"sender":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Sender"},"max_legs":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Max Legs"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"}},"required":["asset_in","asset_out"],"title":"get_quoteArguments"}},{"name":"list_payable_assets","description":"Assets accepted as payment inputs for pay_x402_invoice and credit top-ups (price-confidence gated; ALGO and USDC always included).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"list_payable_assetsArguments"}},{"name":"list_watches","description":"List your key's active watches (spec + arming/fired state), quota, and latest event seq. Poll this from MCP to see fires; SSE at GET /watches/stream is the push alternative outside MCP.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"}},"title":"list_watchesArguments"}},{"name":"pay_x402_invoice","description":"Pay ANY Algorand-settled x402 invoice with any 1-4 routable assets you hold, even holding none of the demanded asset. Pass the `accepts` entry you picked as `invoice` (keep its note!) plus your inputs (single input with no amount = minimum solved). Returns UNSIGNED groups — sign all in one pass, submit IN ORDER (swap first; its on-chain floor guarantees the payment is funded; holding the asset already = one direct payment). HOGSWAP credit top-up offers feed this verbatim. EVM invoices unsupported (no bridge). NEVER pass mnemonics or private keys to any tool — signing happens in YOUR wallet, never here.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"invoice":{"additionalProperties":true,"title":"Invoice","type":"object"},"user_address":{"title":"User Address","type":"string"},"inputs":{"items":{"additionalProperties":true,"type":"object"},"title":"Inputs","type":"array"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"}},"required":["invoice","user_address","inputs"],"title":"pay_x402_invoiceArguments"}},{"name":"register_agent","description":"Self-service HOGSWAP API key, step 1 of 2 — zero human. Returns a challenge; sign its exact bytes with the address's key in YOUR wallet tooling, then call verify_registration. NEVER pass mnemonics or private keys to any tool — signing happens in YOUR wallet, never here.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"title":"Address","type":"string"}},"required":["address"],"title":"register_agentArguments"}},{"name":"set_watch","description":"Register a standing server-side watch (FREE, needs a key; idempotent upsert by client_key — re-registering replaces the watch and resets arming). kind='price': advisory µUSD threshold (asset_id, op gte/lte, threshold_usd_micro). kind='target': size-aware surrogate — would swapping amount_in of asset_in→asset_out deliver ≥ min_out? (margin_bps haircut, default 30; NO quote is run). Edge-triggered one-shot; re-arms after rearm_bps retreat + cooldown_s; ttl_s auto-expiry (default 86400) — refresh by re-upserting. Fires are numbers-only HINTS: re-quote with get_quote. Events push over SSE at GET /watches/stream (outside MCP); from MCP, poll list_watches.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"client_key":{"title":"Client Key","type":"string"},"kind":{"title":"Kind","type":"string"},"asset_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Asset In"},"asset_out":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Asset Out"},"amount_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Amount In"},"min_out":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Min Out"},"margin_bps":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Margin Bps"},"asset_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Asset Id"},"op":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Op"},"threshold_usd_micro":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Threshold Usd Micro"},"rearm_bps":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Rearm Bps"},"cooldown_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Cooldown S"},"ttl_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Ttl S"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"}},"required":["client_key","kind"],"title":"set_watchArguments"}},{"name":"value_lp_token","description":"Value a liquidity-provider position. Give the LP token's asset id (free, no key) and optionally `amount` in LP BASE units — what the wallet holds — for its USD value and the redeemable amount of each underlying. Also identifies the issuing pool/DEX (and STAMM tier). Per-unit figures are per WHOLE LP token. Values are a proportional-share redemption at analytics prices: no slippage, no exit fee, NOT a market quote — fields are null rather than guessed when supply or a price is missing, so check before reporting a number.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"asset_id":{"title":"Asset Id","type":"integer"},"amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Amount"}},"required":["asset_id"],"title":"value_lp_tokenArguments"}},{"name":"verify_registration","description":"Self-service key issuance, step 2 of 2. Returns your hsk_ key ONCE — store it yourself; it is not recoverable and this server does not keep it. Send it on later calls as Authorization: Bearer, X-API-Key, or the api_key argument.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"title":"Address","type":"string"},"challenge":{"title":"Challenge","type":"string"},"signature_b64":{"title":"Signature B64","type":"string"}},"required":["address","challenge","signature_b64"],"title":"verify_registrationArguments"}}],"scan":{"score":83,"grade":"B","scanned_at":"2026-11-04T06:35:18.121Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-04T06:35:18.043Z","components":{"code":{"score":25,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1420ms"]},"poisoning":{"score":15,"max":15,"notes":["12 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 3 write-action tools with no auth"]},"maintenance":{"score":12,"max":15,"notes":["last push 85 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://hogswap-v1.liquihog.dev/mcp/","reachable":true,"authRequired":false,"latencyMs":1420,"serverInfo":{"name":"hogswap","version":"0.4.0"}}],"packages":[{"registryType":"npm","identifier":"hogswap-mcp","version":"0.4.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-08-11T10:03:45.209Z","repositoryUrl":"git+https://github.com/LiquiHog/hogswap-mcp.git","weeklyDownloads":107}],"repo":{"found":true,"owner":"LiquiHog","repo":"hogswap-mcp","archived":false,"pushedAt":"2026-08-11T10:03:43Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/224729341?v=4","ownerCreatedAt":"2025-08-05T06:34:51Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":107,"license":"MIT","lastPushAt":"2026-08-11T10:03:43.000Z","score":25}}}},"grade_history":[],"reviews":[]}