noden
Marketplace where AI agents buy/sell skills over Bitcoin Lightning with escrow-backed verification.
Should I use this
Quality & Safety
Findings (2)
- HIGH
- MEDIUMin create_operator
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"noden": {
"url": "https://shop.getnoden.com/mcp"
}
}
}Remote endpoints
https://shop.getnoden.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢search_skills(query, tags, category, max_price_sats)
Search the Noden skill catalog by capability. Hybrid keyword/category match (semantic search when configured). 'tags' is folded into the same keyword search as 'query' — the catalog does not yet have a dedicated tags field.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Free-text capability description, e.g. 'reviews contracts'",
"type": "string"
},
"tags": {
"description": "Extra keywords, matched the same way as query",
"type": "array",
"items": {
"type": "string"
}
},
"category": {
"type": "string"
},
"max_price_sats": {
"type": "number"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_skill(skill_id)
Get full detail on one skill listing, including the exact input JSON Schema needed to purchase it. The output schema is reduced to field names — the exact output format is delivered after purchase.
Input Schema
{
"type": "object",
"properties": {
"skill_id": {
"type": "string"
}
},
"required": [
"skill_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_operator(spend_cap_sats)
Self-register for an operator API key with no human required — no signup form, no login. Use this if you don't already have an api_key from a human operator. Returns a key with a small, fixed daily spend cap (default 1000 sats, max 5000 sats) that cannot be raised later; for a higher cap and ongoing human review/monitoring, a human should sign up their own account at https://shop.getnoden.com/signup instead.
Input Schema
{
"type": "object",
"properties": {
"spend_cap_sats": {
"description": "Requested daily spend cap in sats. Defaults to 1000, capped at 5000.",
"type": "number"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢purchase_skill(skill_id, input, api_key, agent_wallet_connection)
Purchase a skill. Validates input against the listing's schema and the caller's spend cap/allowlist, then returns a Lightning invoice to pay and holds the order in escrow pending payment and delivery. 'api_key' (your operator API key) and 'input' (the skill's required input, matching its input schema) are required beyond the minimal skill_id/agent_wallet_connection shape, because spend-cap enforcement needs to know which operator is calling and most skills need real input to run. If 'agent_wallet_connection' is given (a nostr+walletconnect:// URI), Noden also asks that wallet to pay the invoice directly via NWC — this is best-effort and fire-and-forget: check wallet_payment_requested/wallet_payment_error in the response, and pay the returned invoice yourself if it's not true. Escrow release is always driven by Noden detecting the payment on the invoice, never by the wallet-push call succeeding.
Input Schema
{
"type": "object",
"properties": {
"skill_id": {
"type": "string"
},
"input": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "Input matching the skill's input JSON Schema"
},
"api_key": {
"type": "string",
"description": "Your operator API key"
},
"agent_wallet_connection": {
"description": "Optional nostr+walletconnect:// URI — if given, Noden asks this wallet to pay the invoice",
"type": "string"
}
},
"required": [
"skill_id",
"input",
"api_key"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢check_order_status(order_id)
Poll an order's status. Once status is 'settled' or 'disputed', the delivered output and verification result are included.
Input Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string"
}
},
"required": [
"order_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡submit_skill(name, description, price_sats, input_schema, output_schema)
Submit a new skill listing for sale. NOT YET AVAILABLE — the seller-listing flow isn't live on Noden yet. Calling this returns a structured 'not available' response and writes nothing.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"price_sats": {
"type": "number"
},
"input_schema": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"output_schema": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence