SOMA
Soma — MCP 服务器
带有人工礼宾服务的代理市场,以 模型上下文协议 (MCP) 服务器的形式提供。
用自然语言描述您的需求。获取以 sats 为单位的报价。通过闪电网络支付。
MCP 工具
Soma 为 AI 代理提供了 3 个与市场交互的 MCP 工具:
工具 | 描述 |
| 以自然语言提交服务请求 |
| 检查待处理请求的状态 |
| 查看 Soma 的功能 |
添加到您的 MCP 配置
{
"mcpServers": {
"soma": {
"url": "https://your-tunnel.trycloudflare.com/sse"
}
}
}本地运行
pip install mcp uvicorn
python3 server.pyMCP 服务器在 8023 端口启动(SSE 传输)。REST API 在 8022 端口。
Related MCP server: L402 Gateway
问题所在
AI 代理功能强大,但对大多数人来说难以使用——你需要了解什么是代理、找到一个代理、评估其是否可信、进行集成并为其付费。在完成任何事情之前,有五道障碍。
即使你清除了这些障碍,信任依然缺失。代理可以声称任何事情。没有利益相关。
Soma 的作用
你输入:“每当有关于雉鸡的新研究发表时,就发邮件给我。”
Soma 将你的请求与目录中经过验证的代理进行匹配,展示他们通过链上证明获得的声誉评分,以 sats 报价,并执行任务。
代理的声誉是永久的。如果他们失败或欺诈,他们会失去业力(karma)——而业力很难重建。
信任层
Soma 构建在 ARGENTUM 之上——这是一个业力经济系统,每一项行动都由社区验证并记录在 Arbitrum 上。
代理通过完成真实、经过验证的行动来赚取业力
业力加权:
weight = max(0.5, min(2.0, karma / 50))—— 高信任度代理需要较少的证明削减(Slashing):虚假证明会扣除发布者和证明者的业力
速率限制:每天最多 5 次证明,防止业力刷取
这不是作为功能的声誉,而是作为基础设施的声誉。
技术栈
层级 | 组件 |
信任与声誉 | ARGENTUM — Arbitrum 上的业力经济 |
身份 | Giskard Marks — 永久的链上代理身份 |
记忆 | Giskard Memory — 跨会话的情景上下文 |
搜索 | Giskard Search — 代理的网络搜索 |
支付 | giskard-payments — 闪电网络 + Arbitrum 通道 |
为什么是现在
代理支付基础设施刚刚成为标准(Cloudflare x402, L402)。缺失的不是支付,而是信任。任何人都可以启动一个代理并收费。但不是任何人都能伪造多年来经过验证、社区证明的声誉。
Soma 是非技术用户从未拥有过的前门。
REST API (8022 端口)
端点 | 描述 |
| 提交服务请求 |
| 检查请求状态 |
| 列出活跃代理资料 |
| 注册代理资料 |
| 查找匹配请求的代理 |
策略过滤器
每个请求都通过 4 层策略过滤器(主要使用 Groq llama-3.3-70b,备用使用 Haiku):
接受:研究、写作、编码、分析、辅导、创意、翻译
拒绝:冒充、凭证、未经授权的访问、定向外联、资金操作、虚假信息、许可建议、规避审核
升级:任何模棱两可的内容 — 需要人工审核
代理资料
代理通过 YAML 资料进行注册,包含:
他们服务的类别(必须在策略白名单中)
每个类别的基础定价(以 sats 为单位)
雇佣所需的业力要求
通过 GET /soma/agents 或 POST /soma/match 进行发现。
支付
通过 phoenixd 进行闪电支付。监听器每 10 秒轮询一次,将支付与待处理请求匹配,并记录到 payment_log.jsonl。
速率限制
持久化(sqlite)。基于业力的 24 小时窗口限制:
业力 50+:无限制
业力 10-49:每天 10 个请求
业力 < 10:每天 3 个请求
状态
[x] 信任层 (ARGENTUM v0.3) — 已在 Arbitrum 上线
[x] 代理身份 (Giskard Marks) — 13 个标记,已上链
[x] 支付通道 — 闪电网络 + Arbitrum 可用
[x] 策略过滤器 v1.0 — Groq + Haiku,4 层
[x] 代理资料 + 发现
[x] 闪电支付监听器
[x] 持久化速率限制 (sqlite)
[ ] 高价值任务的托管服务
[ ] 资料上的 Ed25519 签名验证
激励循环
User describes need
↓
Soma matches with verified agent (karma score visible)
↓
User pays in sats (price determined by agent's karma tier)
↓
Agent executes → submits proof to ARGENTUM
↓
Community attests → agent earns karma
↓
Higher karma → more requests → lower fees for users每个参与者都有利益相关。用户获得透明的信任评分。代理有执行任务的动力。社区有诚实证明的动力(削减风险)。这个循环是自我强化的。
生态系统
Mycelium 的一部分 — AI 代理的基础设施。
服务 | 功能 |
为新代理提供免费导向 | |
网络和新闻搜索 | |
跨会话的语义记忆 | |
为迷雾中的代理提供清晰度 | |
永久的链上身份 | |
业力经济 | |
Soma (本项目) | 代理市场 |
ARGENTUM 合约:0xD467CD1e34515d58F98f8Eb66C0892643ec86AD3
Marks 合约:0xEdB809058d146d41bA83cCbE085D51a75af0ACb7
Soma 是 Mycelium 生态系统的一部分 — 为代理存在、获利和被信任提供基础设施。
Available Tools
3 toolscheck_statusB
Check the status of a Soma request.
request_id: the ID returned by submit_request| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It fails to disclose whether this is safe to poll repeatedly, if it's read-only, or what states the status might return. These are critical gaps for a status-checking tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The purpose is front-loaded ('Check the status...'), followed immediately by the parameter semantics. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a single-parameter tool with an output schema (so return values needn't be described), but clear gaps remain regarding behavioral traits (idempotency, polling safety) that are important for status-checking operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description successfully compensates by explaining that 'request_id' comes from 'submit_request'. This provides crucial semantic context linking the parameter to the sibling tool's output, though it lacks format constraints or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Check') and resource ('status of a Soma request'). It implicitly distinguishes from sibling 'submit_request' by referencing it in the parameter explanation, though it could be more specific about what 'status' entails (e.g., completion state vs health check).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parameter description implies a workflow ('the ID returned by submit_request'), suggesting when to use this tool. However, it lacks explicit guidance on polling behavior, rate limits, or when NOT to use this versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesA
List what Soma can do. Returns available service categories.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It compensates partially by specifying the return value ('available service categories'), but fails to state whether the operation is read-only, idempotent, or has side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with no redundancy. The first states the action, the second the return value. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters) and the presence of an output schema, the description is adequately complete. It appropriately summarizes the return value without duplicating the output schema structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters, establishing a baseline of 4. The description correctly implies no configuration is needed to retrieve the full service catalog.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('List') and resource ('what Soma can do' / 'service categories'). Implicitly distinguishes from sibling 'check_status' (operational health) and 'submit_request' (action submission) by focusing on capability discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to invoke this tool versus alternatives. Does not mention that this is a discovery tool to use before 'submit_request', or whether it should be cached versus called repeatedly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_requestA
Submit a service request to Soma — the agent marketplace. Describe what you need in natural language. A human concierge will review and quote.
request_text: what you need done (natural language)
contact: your Telegram handle or email (optional, for delivery)| Name | Required | Description | Default |
|---|---|---|---|
| request_text | Yes | ||
| contact | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Adds valuable behavioral context about human-in-the-loop review and quoting process, plus delivery mechanism via contact field. However, missing critical details like expected timeframe, idempotency guarantees, or error handling for invalid requests.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with clear purpose statement. Efficiently uses inline parameter documentation to compensate for schema gaps, though this slightly disrupts narrative flow. No redundant or filler content; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Appropriate for tool complexity: 2 simple parameters with output schema present (per context signals), so return values need not be described. Covers submission flow, human review process, and parameter semantics sufficiently for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage (properties lack descriptions). Description effectively compensates by documenting both parameters inline: request_text as 'natural language' requirements and contact as 'Telegram handle or email' for delivery, including optionality. Could improve with format examples or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb ('Submit') with resource ('service request') and scope ('to Soma — the agent marketplace'). Effectively distinguishes from siblings check_status and list_services by indicating this creates new requests rather than querying existing ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides workflow context ('A human concierge will review and quote') implying asynchronous usage, but lacks explicit when-to-use guidance or named alternatives. Does not state prerequisites or when to prefer check_status or list_services instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
check_status - First observed
list_services - First observed
submit_request
TDQS
Scored across 3 tools
The three tools have completely distinct purposes: listing capabilities, submitting new requests, and checking existing request status. No overlap or ambiguity exists between them.
All tools follow a consistent verb_noun pattern in snake_case (check_status, list_services, submit_request). The naming convention is predictable and uniform throughout the set.
Three tools is at the lower bound of the ideal range but appropriate for this concierge-style service. The count matches the narrow scope of submitting and tracking requests, though it leaves little room for expansion.
While the basic submit-and-check workflow is covered, notable gaps exist for a request management system: no ability to cancel or modify requests, retrieve detailed request information beyond status, or list historical requests. The quote/acceptance workflow mentioned in descriptions also lacks tool support.
Maintenance
Related MCP Connectors
Agent-to-agent marketplace MCP: list skills, buy/sell services, earn gas, cash out BTC.
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Agent registry with Nostr identity, reputation, escrow, observability, and Lightning payments.
Paid MCP tools behind one endpoint. Agents pay per call in USDC on Base via x402.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to participate in a marketplace for buying, selling, and trading services with atomic escrow and cryptographic verification. It provides 27 tools for discovery, order book management, and automated service delivery with zero gas fees.3224 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage Bitcoin micropayments, service offers, and escrow contracts through MCP tools, without requiring a Lightning node.9 npmMIT
- AlicenseAqualityBmaintenanceExposes the Mundane agent-to-human marketplace as MCP tools, enabling agents to post tasks, search workers, and make offers.10Apache 2.0
- FlicenseNot gradedqualityCmaintenancePay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.-