Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Fatstack

by f4tst4ckversion 1.0.0i★ –iRuns in the cloud
Registry namenet.fatstack/registry

Install

Overview

Description from the maker (original English)

Paid MCP tools behind one endpoint. Agents pay per call in USDC on Base via x402.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • The registry lists no key to fill in.

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://www.fatstack.net/api/mcp

Run this in your terminal

claude mcp add --transport http registry https://www.fatstack.net/api/mcp

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "registry": {
      "url": "https://www.fatstack.net/api/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "registry": {
      "type": "http",
      "url": "https://www.fatstack.net/api/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://www.fatstack.net/api/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

We have not read this server’s tool list yet; we check endpoints in rotation.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified against the domain fatstack.net (the registry checks domain ownership)

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • … Not checked yet

    Endpoint responds

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    Sign-in with OAuth

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Otheri

  • More stars than 0% of the other 32398 servers in this category
  • Published to the registry more recently than 43% of the other 32398 servers in this category
  • Basic checks equal to or better than 100% of the other 32398 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Fatstack safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.

Is it still maintained?

The GitHub repo last changed –, and the latest version (1.0.0) reached the registry 2 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, AI Deprecations

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated yesterday
Install

AI Deprecations

by aideprecations.com

AI model shutdown dates, replacements, change feed and webhook alerts for 8 providers.

Runs in the cloudUpdated today
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

Fatstack

A non-custodial marketplace where AI agents discover and pay for API and MCP tool calls in USDC, per call, over [x402](https://x402.org) on Base.

A provider lists a tool. An agent finds it in the registry and calls it. The tool answers 402 Payment Required with a price. The agent signs a USDC payment authorisation and retries. The call goes through and the money moves wallet to wallet.

Fatstack never touches the money. There is no custody, no withdrawal function, no platform wallet in the payment path, and no stored private keys. Payment is a direct transfer from the agent's wallet to the provider's — or, once a provider's promotional period ends, through an immutable splitter contract that pays the provider and a 2% platform fee in one atomic transaction. If a change would let Fatstack move someone else's money, it is a bug.

Use it from an agent, in one line

Add one MCP server and your agent has the whole catalog:

https://www.fatstack.net/api/mcp

Listing what is available is free; only calls cost anything. There is no account, no API key and no signup — the wallet is the identity. Paying needs an x402-capable client; any MCP client can browse. Published in the official MCP registry as net.fatstack/registry.

This repository holds the parts you run, audit, or depend on. The marketplace application itself is closed; everything an integrator touches is here, under MIT.


The payment cycle

sequenceDiagram

participant A as Agent participant T as Tool (provider) participant F as Facilitator participant C as USDC on Base

A->>T: call the tool T-->>A: 402 Payment Required + price, asset, payTo, resource Note over A: signs an EIP-3009 authorisation covering exactly this resource A->>T: retry with X-PAYMENT T->>F: verify F-->>T: valid T->>T: run the handler T->>F: settle F->>C: transferWithAuthorization C-->>F: mined T-->>A: 200 + result

The agent signs an authorisation, not a transaction: it never pays gas and never sends a transfer itself. The facilitator broadcasts it and pays the gas.

Payments are final. Once settled on chain the transfer cannot be reversed, and there are no refunds. That sentence appears in every 402 body, every quote object, and every payment-facing page, and it is not decoration — it is the property that makes per-call pricing work without an escrow.


Quickstart — providers

Put a paywall in front of a route you already have. Two lines of setup, and the price is per call.

npm install @fatstack/x402
import { Hono } from 'hono';

import { paywall } from '@fatstack/x402'; import { honoPaywall } from '@fatstack/x402/hono';

const app = new Hono();

app.use( '/convert', honoPaywall( paywall({ price: '0.001', // USDC, per call wallet: '0xYourWallet', // paid directly, wallet to wallet toolId: 'unit-convert', network: 'base-sepolia', // test here before base }), ), );

app.post('/convert', (c) => c.json({ celsius: 20, fahrenheit: 68 }));

Adapters ship for Hono, Express and Next on their own entry points — @fatstack/x402/hono, /express, /next — so importing the client into an edge runtime does not drag a Node framework in with it.

Full walkthrough, including listing the tool: [docs/provider-quickstart.md](docs/provider-quickstart.md)

Quickstart — agents

Give a model a set of paid tools it can call, with a spending limit it cannot exceed.

npm install @fatstack/ai-sdk-tools ai viem
import { generateText } from 'ai';

import { fatstackTools } from '@fatstack/ai-sdk-tools'; import { privateKeyToAccount } from 'viem/accounts';

const tools = await fatstackTools({ wallet: privateKeyToAccount(process.env.AGENT_PRIVATE_KEY), networks: ['base'], // the catalogue is mainnet-only; USDC here is real guards: { maxPerDay: 0.5, // hard ceiling per UTC day, in USD maxPerCall: 0.01, // refuse any single call dearer than this }, });

const { text } = await generateText({ model, tools, prompt: 'Convert 20C to F.' });

guards is a required argument with no default. A tool set that can spend money should never be constructible by accident, so omitting it is a type error rather than an unlimited budget.

Full walkthrough: [docs/agent-quickstart.md](docs/agent-quickstart.md)


What is in here

PathWhat it is
sdk/@fatstack/x402 — provider middleware and agent client
integrations/ai-sdk-tools/@fatstack/ai-sdk-tools — a Vercel AI SDK tool set that pays per call
contracts/The USDC payment splitter and its factory, with tests and deployment gates
facilitator/THREAT-MODEL.mdWritten verdicts on six attack classes against the payment path
docs/Provider and agent quickstarts, and the registry format

Packages: @fatstack/x402 · @fatstack/ai-sdk-tools Marketplace: fatstack.net · Registry: registry.json


Security

The payment path was audited against six attack classes — replay, concurrency, cross-resource substitution, verify/settle ordering, field binding, and misconfiguration. Each has a written verdict and at least one test that proves the safe behaviour, run against a real facilitator and real settlements on Base Sepolia rather than mocks.

[facilitator/THREAT-MODEL.md](facilitator/THREAT-MODEL.md) has the verdicts. [contracts/SECURITY.md](contracts/SECURITY.md) covers the splitter.

One class came back vulnerable, and it is worth reading even if you never use Fatstack, because it is a property of x402 rather than of this implementation.

Cross-resource replay

An EIP-3009 authorisation covers (from, to, value, validAfter, validBefore, nonce). It does not cover what was bought. So an authorisation signed to pay for one tool was accepted by a different, more expensive tool from the same provider — same payee, same asset, a valid signature, and nothing in the signed material to say otherwise.

Reproduced on Base Sepolia, settled on chain: 0xd95ea771333c8f33f346c316fad30a64585156831d09e298d501c5b1e17e5659

Fixed in @fatstack/x402 0.2.0 (current release 0.2.1, which is the same code under the correct MIT licence metadata). The middleware now binds a payment to the resource it was quoted for and refuses a mismatch with resource_mismatch, before the facilitator is called — so a mismatched payment costs nothing and is never settled. Nothing a 402 quotes to agents changed.

If you built on x402 without checking that the payment in hand was quoted for the resource in hand, check now.

The finding that shaped the contract

An earlier draft of the splitter took the provider as a call argument. That argument is not covered by the payer's signature either, so anyone observing a pending authorisation could have submitted it with their own address and taken the provider's 98%. The provider is now fixed at construction — one splitter per provider, its address derivable in advance with CREATE2 — which removes the parameter and with it the attack.

See *The finding that changed the design* in contracts/SECURITY.md.

Reporting

Found something? Open an issue for anything already public. For an unreported vulnerability in the payment path, please report privately through GitHub's security advisories on this repository rather than in a public issue.


The contracts are unaudited

The splitter is small, immutable, and has no owner, no pause, no proxy, and no upgrade path. It is covered by 34 tests including a fork test against real USDC on Base, and its fee arithmetic is asserted against the same vectors.json as the TypeScript implementation, so an on-chain split and a quoted price cannot drift apart.

No third party has reviewed it. Read it yourself before depending on it — it is about fifteen lines of code that move money and a hundred lines explaining why.

Contributing to this repository

Some files here differ from their counterparts in the closed repository, because operator detail has been removed. .redactions lists them and scripts/check-redactions.sh refuses anything that puts that material back. Run it before pushing.

Licence

MIT. See LICENSE.

Ask PopNx