mcpField
F
Fatstack

Fatstack

リモート
fatstack.net開発ツール04 週間前に更新
リポジトリ公式サイト

Fatstack について

Fatstackは、Agentとプロバイダー向けのマーケットプレイス基盤です。x402を通じて、Base上でAPIやMCPツールの呼び出しごとにUSDCで支払えます。

主な機能

  1. 01共通レジストリからAPI・MCPツールを検索
  2. 02x402とBase上のUSDCによる呼び出し単位の課金
  3. 03Hono、Express、Next向けの決済ミドルウェア
  4. 04支出制限付きのAI SDKツール

活用シーン

  1. 01単一のMCPエンドポイントから有料ツールを検索・呼び出し
  2. 02既存のプロバイダールートへの従量課金の追加
  3. 03Agentによる有料ツール利用額の制限

MCP 対応

MCPエンドポイントを通じて、クライアントは1つのサーバー接続からマーケットプレイスのカタログを利用できます。閲覧は無料で、呼び出しの支払いにはx402対応クライアントが必要です。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://www.fatstack.net/api/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

15
パラメーター型必須説明
messagestringいいえエコーバックする任意の内容。省略可能。

詳細

Fatstack

AI エージェントが x402 を通じて Base 上で API や MCP ツールの呼び出しを USDC で都度支払う、非カストディアル型マーケットプレイスです。

プロバイダーがツールを掲載します。エージェントがレジストリでツールを見つけて呼び出します。ツールは価格とともに 402 Payment Required を返します。エージェントは USDC の支払い承認に署名して再試行します。呼び出しが実行され、資金がウォレットからウォレットへ移動します。

Fatstack は資金に一切触れません。 カストディも、出金機能も、支払い経路上のプラットフォームウォレットも、保存された秘密鍵もありません。支払いはエージェントのウォレットからプロバイダーのウォレットへの直接送金です。ただし、プロバイダーのプロモーション期間終了後は、変更不能な分配コントラクトを経由し、1 回のアトミックなトランザクションでプロバイダーへの支払いと 2% のプラットフォーム手数料を処理します。Fatstack が他者の資金を動かせるようになる変更は、バグです。

エージェントから 1 行で使う

MCP サーバーを 1 つ追加するだけで、エージェントはカタログ全体を利用できます。

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

利用可能なものの一覧表示は無料で、料金がかかるのは呼び出しだけです。アカウントも API キーも登録も不要です。ウォレットが本人確認の手段です。支払いには x402 対応クライアントが必要です。どの MCP クライアントでも閲覧できます。 公式 MCP レジストリには net.fatstack/registry として公開されています。

このリポジトリには、実行、監査、または依存する各パーツが含まれています。マーケットプレイスアプリケーション自体は非公開ですが、インテグレーターが触れるものはすべてここにあり、MIT ライセンスで提供されています。


支払いの流れ

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<br/>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

エージェントが署名するのはトランザクションではなく承認です。エージェントがガス代を支払うことも、自ら送金することもありません。ファシリテーターが承認をブロードキャストし、ガス代を支払います。

支払いは取り消せません。オンチェーンで決済されると送金を取り消すことはできず、返金もありません。 この文言はすべての 402 レスポンス本文、すべての見積もりオブジェクト、支払いに関するすべてのページに記載されています。飾りではありません。エスクローなしで都度課金を実現するための特性です。


クイックスタート — プロバイダー

既存のルートの前にペイウォールを設置します。設定は 2 行だけで、料金は呼び出しごとに発生します。

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 }));

Hono、Express、Next 用のアダプターは、それぞれ専用のエントリーポイント @fatstack/x402/hono、/express、/next から提供されるため、クライアントをエッジランタイムにインポートしても Node フレームワークが一緒に読み込まれることはありません。

ツールの掲載方法を含む詳しい手順は、docs/provider-quickstart.md をご覧ください。

クイックスタート — エージェント

モデルが呼び出せる有料ツールのセットを、上限を超えられない支出上限付きで用意します。

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 はデフォルト値のない必須引数です。資金を使えるツールセットが誤って構築されることのないよう、省略すると無制限の予算になるのではなく、型エラーになります。

詳しい手順は、docs/agent-quickstart.md をご覧ください。


このリポジトリの内容

パス内容
sdk/@fatstack/x402 — プロバイダーミドルウェアとエージェントクライアント
integrations/ai-sdk-tools/@fatstack/ai-sdk-tools — 呼び出しごとに支払う Vercel AI SDK ツールセット
contracts/USDC 支払い分配コントラクトとそのファクトリー。テストとデプロイゲート付き
facilitator/THREAT-MODEL.md支払い経路に対する 6 種類の攻撃クラスについての評価
docs/プロバイダーとエージェントのクイックスタート、レジストリ形式

パッケージ: @fatstack/x402 · @fatstack/ai-sdk-tools マーケットプレイス: fatstack.net · レジストリ: registry.json


セキュリティ

決済フローは、リプレイ、並行実行、異なるリソースへの置き換え、検証と決済の順序、フィールドのバインド、設定ミスという6種類の攻撃を対象に監査しました。それぞれについて判定を文書化し、安全な動作を証明するテストを少なくとも1つ用意しています。モックではなく、実際のファシリテーターとBase Sepolia上の実際の決済を使って実行しています。

facilitator/THREAT-MODEL.md に各判定を記載しています。 contracts/SECURITY.md ではスプリッターを取り上げています。

そのうち1種類は 脆弱 との判定になりました。Fatstackを使わない場合でも、読む価値があります。これはこの実装固有の問題ではなく、x402の性質に関わるものだからです。

リソースをまたぐリプレイ

EIP-3009の認可が対象とするのは (from, to, value, validAfter, validBefore, nonce) です。購入対象は含まれません。そのため、あるツールの支払い用に署名された認可が、同じプロバイダーの別の、より高額なツールに受け入れられました。受取人は同じ、資産も同じ、有効な署名もあり、署名済みのデータにはそれ以外に区別できる情報がありませんでした。

Base Sepoliaで再現し、オンチェーンで決済しました: 0xd95ea771333c8f33f346c316fad30a64585156831d09e298d501c5b1e17e5659

@fatstack/x402 0.2.0 で修正済みです(現行リリースは 0.2.1 で、正しいMITライセンスメタデータが設定された同一のコードです)。ミドルウェアは支払いを見積もり対象のリソースに紐付けるようになり、不一致がある場合はファシリテーターの呼び出し前に resource_mismatch で拒否します。そのため、不一致の支払いに費用がかかることはなく、決済もされません。エージェント向けに402が提示する内容に変更はありません。

手元の支払いが、手元のリソースに対する見積もりであることを確認せずにx402を利用していた場合は、今すぐ確認してください。

コントラクトの設計を変えた発見

初期のスプリッター案では、呼び出し引数としてプロバイダーを指定していました。この引数も支払人の署名で保護されていないため、保留中の認可を観察した誰もが、自分のアドレスを指定して送信し、プロバイダーの98%を受け取ることができました。現在、プロバイダーはコントラクトの構築時に固定されています。プロバイダーごとに1つのスプリッターを用意し、そのアドレスはCREATE2で事前に導出できます。これによりパラメーターがなくなり、攻撃も防げます。

contracts/SECURITY.md の The finding that changed the design を参照してください。

脆弱性の報告

何か見つけましたか?すでに公開済みの問題は、Issueを作成してください。決済フローに関する未報告の脆弱性は、公開Issueではなく、このリポジトリのGitHubセキュリティアドバイザリーから非公開で報告してください。


コントラクトは未監査です

スプリッターは小規模で不変であり、オーナー、一時停止機能、プロキシ、アップグレード経路はありません。Base上の実際のUSDCを使ったフォークテストを含む34件のテストでカバーされています。また、手数料の計算は、TypeScript実装と同じ vectors.json に対して検証されるため、オンチェーンの分配額と見積もり価格にずれが生じることはありません。

第三者によるレビューは受けていません。利用を前提とする前に、自分でコードを読んでください。資金を移動する約15行のコードと、その理由を説明する100行があるだけです。

このリポジトリへの貢献

ここにある一部のファイルは、運用上の詳細が取り除かれているため、非公開リポジトリにある対応ファイルとは異なります。.redactions に対象ファイルが記載されており、scripts/check-redactions.sh はその情報を再び含める変更を拒否します。プッシュする前に実行してください。

ライセンス

MIT。LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。