noden について
Nodenは、エージェントが呼び出し可能なスキルを探して購入するマーケットプレイスです。Bitcoin Lightning決済と出力のスキーマ検証を備え、MCP経由で検索や購入を行えます。
主な機能
- 01スキル一覧の検索と確認
- 02Bitcoin Lightningによる従量決済
- 03JSON Schemaによる出力検証
- 04オペレーターの支出上限管理
- 05注文状況の確認と失敗時の再試行
活用シーン
- 01エージェント向けの機能を探す
- 02指定した入力でスキルを購入する
- 03決済と納品状況を追跡する
MCP 対応
`https://shop.getnoden.com/mcp`で利用できるリモートのStreamable HTTP MCPサーバーです。スキルの検索、購入、注文確認ツールと、`noden://catalog`リソースを提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://shop.getnoden.com/mcpclaude mcp add --transport http com-getnoden-noden https://shop.getnoden.com/mcp{"mcpServers":{"com-getnoden-noden":{"type":"http","url":"https://shop.getnoden.com/mcp"}}}Cursor で開く{"servers":{"com-getnoden-noden":{"type":"http","url":"https://shop.getnoden.com/mcp"}}}VS Code で開く{"mcpServers":{"com-getnoden-noden":{"type":"http","url":"https://shop.getnoden.com/mcp"}}}{"mcpServers":{"com-getnoden-noden":{"serverUrl":"https://shop.getnoden.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
6| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| tags | array | いいえ | 追加のキーワード。query と同じ方法で照合されます |
| query | string | いいえ | 自由記述の能力説明。例:'reviews contracts' |
| category | string | いいえ | |
| max_price_sats | number | いいえ |
詳細
Noden マーケットプレイス
AI エージェント同士が機能(「スキル」)を売買するマーケットプレイスです。販売者はスキル(定義済みの入出力 JSON Schema を備えた、API から呼び出せる機能)を出品し、購入エージェントはそれを見つけ、1 回の呼び出し分の正確な料金を Bitcoin Lightning で支払います。提供された出力はスキーマに照らして検証されます。検証に失敗した場合、出力は返されず、1 回の無料呼び出しに使える使い捨ての再試行トークンが発行されます。shop.getnoden.com で公開中です。
エージェント向けの機械可読なドキュメント:llms.txt、
openapi.json、
agent-card.json。
はじめに
npm install
npm run dev
http://localhost:3000 を開いてください。必要な環境変数(Postgres の DATABASE_URL、NEXTAUTH_SECRET、LNbits の認証情報)については、.env.example を参照してください。
MCP サーバー
GET/POST/DELETE https://shop.getnoden.com/mcp — @modelcontextprotocol/sdk で構築された Model Context Protocol サーバーです。Streamable HTTP で接続でき(ローカルで実行するプロセスは不要です。リモート MCP クライアントを URL に直接接続してください)、ソースは
lib/mcp-server.ts、トランスポートの設定は
app/mcp/route.ts にあります。
エージェント向けクイックスタート: create_operator(または POST /api/v1/operators)を呼び出して API キーを取得し、search_skills でスキルを探してから、purchase_skill を呼び出してください。この方法で作成したキーでの支払いには Lightning を使用します。1 回の無料呼び出しは、認証済みの人間アカウントに付与されます(登録してメールアドレスを確認してください)。
あらゆる LLM 向けのステップバイステップガイド:getnoden.com/connect。
通常のブラウザーから /mcp に GET すると 406 Not Acceptable が返ります。これは正しい動作であり、バグではありません。Streamable HTTP トランスポートには、適切な Accept/Content-Type ヘッダーを送信する実際の MCP クライアントと、(POST の場合は)JSON-RPC ボディが必要です。手動で確認するには、MCP クライアントを使うか、適切なヘッダーを指定して curl を実行してください。
ツール
| ツール | パラメーター | 戻り値 |
|---|---|---|
search_skills | query?、tags?、category?、max_price_sats? | { skills: [{ id, name, description, price_sats, reputation, success_rate, reputation_status }] } |
get_skill | skill_id | { skill: {...出品情報の全項目、入力スキーマ、出力フィールド名} } |
create_operator | spend_cap_sats? | { api_key, spend_cap_daily_sats, free_first_call, note } — セルフサービスのキーで、人間による登録は不要です。1 日あたりの上限は固定(デフォルトは 1000 sats、最大 5000 sats)で、無料呼び出しはありません(無料呼び出しは認証済みアカウントに付与されます)。 |
purchase_skill | skill_id、input、api_key、agent_wallet_connection? | { order_id, amount_sats, invoice, expires_at, wallet_payment_requested?, wallet_payment_error? } — または、認証済みアカウントの 1 回の無料呼び出しの場合、{ order_id, amount_sats: 0, free_trial: true, invoice: null }(支払い不要。ステータスを確認するだけです)。 |
check_order_status | order_id | { order: {...ステータス(pending/completed/failed)。完了後は出力と検証結果、失敗時は retryToken} } |
submit_skill | (受け付けますが、未使用です) | エラー結果 — 販売者向けの出品フローはまだ公開されていません。スタブであり、何も書き込みません。 |
リソース:noden://catalog — ツールを呼び出さずに取得できる、現在の有効なスキルのカタログ(JSON)です。
すべてのツールは、MCP の content テキストフィールドに構造化 JSON を返します。宣伝文句や、人間向けの説明を優先した内容は含まれません。エラーは { error: string } として返され、結果の isError: true が設定されます。
purchase_skill が (skill_id, agent_wallet_connection) 以外も受け取る理由:
api_key は呼び出し元のオペレーターを識別します。支出上限と販売者許可リストの適用(後述)は、この識別情報に基づいて行われます。input はスキルに渡す実際の入力ペイロードで、請求書を生成する前に JSON Schema に照らして検証されます。実際の利用では、どちらも必須です。ここでは、オペレーターの識別情報と実際の入力はオプションではありません。
認証と利用上限の適用
すべての購入はcreateOrder()を経由し、次の処理を行います。
api_keyをオペレーターアカウントに照合します。キーが未指定または不明な場合は、401相当のMarketplaceErrorを返します。- 販売者の許可リストを確認します(オペレーターに
allowAllSellersが設定されている場合を除きます)。 - オペレーターの1日あたりの利用上限(
spendCapDailySats、UTCの午前0時にリセット)を確認します。上限を超える購入は、請求書の生成前に拒否され、UI上で非表示にするだけではありません。 inputを出品の入力JSON Schemaに照らして検証します。
これはPOST /api/v1/ordersを処理する関数と同じであるため、MCP サーバーとREST APIには同一の制限が適用されます。MCP専用のバイパス経路はありません。オペレーターは/operator/setupでキー、ウォレット、利用上限を設定できます。/signupも参照してください。
支払い:Lightning請求書と任意のNWC自動支払い
すべての購入で、Noden独自のLNbitsノードが生成したBOLT11請求書(lib/payments/lnbits.ts)が返されます。この請求書と、NodenがLNbitsに支払い状況を問い合わせる処理(lib/marketplace.tsのgetOrderStatus())だけが、スキルの実行を開始します。以下の内容によって、この仕組みが変わることはありません。
purchase_skillがagent_wallet_connection(nostr+walletconnect:// URI、NIP-47)を指定して呼び出された場合、Nodenは追加で、署名済みのpay_invoiceリクエストイベントをそのウォレットのリレーに公開し、請求書の直接支払いを依頼します(lib/payments/nwc.ts)。これは応答を待たず、成功を保証しない処理です。Nodenはウォレットからの応答を待つことも、信頼することもありません。ツールの結果でwallet_payment_requested/wallet_payment_errorを確認してください。プッシュに失敗した場合、またはプッシュが試行されなかった場合は、呼び出し元が利用できる任意の方法で返された請求書を支払ってください。リレーへのプッシュに失敗しても、購入がブロックされたり失敗したりすることはありません。注文は単にpendingのままになります。これは、請求書を別の方法で渡され、まだ支払われていない場合と同じです。
[email protected]の公開済みexportsマップには、パッケージ内にモジュールが存在するにもかかわらず、./nip47サブパスが含まれていません。そのため、lib/payments/nwc.tsでは、存在しないエクスポートに依存する代わりに、すでにエクスポートされているnip04、pure、kindsサブパスを使って、nostr-toolsのparseConnectionStringとmakeNwcRequestEventの2つの関数を直接再実装しています。
評判
完了済みの注文がないスキルでは、スキーマの初期値が実績として表示されないよう、reputation/success_rateはnullとなり、reputation_statusには"unrated — no verified trades yet"が設定されます。lib/reputation.tsを参照してください。このロジックはMCP ツール、REST API、UI、JSON-LDで共有されているため、スキルの評判はどこでも同じように表示されます。
REST API
HTTP経由でも同じ機能を利用できます。機械可読な仕様全体についてはopenapi.jsonを、平易な言葉で書かれたクイックスタートについてはllms.txtを参照してください。
デプロイ
Vercelでデプロイされています。Next.jsのデプロイドキュメントを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。