Skip to main content
Glama

Nefesh MCP + A2A 服务器

这是一个 Model Context ProtocolAgent-to-Agent (A2A) 服务器,旨在为 AI 智能体提供人类生理状态的实时感知。

功能概述

发送传感器数据(心率、语音、面部表情、文本情感),即可获得统一的状态反馈,以及智能体可直接执行的机器可读操作。无需任何提示词工程。

在第二次及后续调用中,响应包含 adaptation_effectiveness(适应有效性)——告知智能体其之前的应对方式是否有效。这是一个用于自我改进型智能体的闭环反馈系统。

Related MCP server: WAVE MCP Server

适应有效性(闭环反馈)

大多数 API 只提供状态。Nefesh 会告诉你针对该状态的反应是否真正起到了作用。

在会话中的第二次调用开始,每个响应都包含:

{
  "state": "focused",
  "stress_score": 45,
  "suggested_action": "simplify_and_focus",
  "adaptation_effectiveness": {
    "previous_action": "de-escalate_and_shorten",
    "previous_score": 68,
    "current_score": 45,
    "stress_delta": -23,
    "effective": true
  }
}

你的智能体可以读取 effective: true 并确认其之前的降压措施有效。如果为 false,智能体则会调整策略。目前没有其他人类状态系统提供这种反馈循环。

设置

选项 A:先连接,通过智能体获取密钥(最快)

不使用 API 密钥的情况下添加配置——你的智能体将自动获取一个。

{
  "mcpServers": {
    "nefesh": {
      "url": "https://mcp.nefesh.ai/mcp"
    }
  }
}

然后询问你的智能体:

"使用我的电子邮件地址获取一个免费的 Nefesh API 密钥"

智能体将调用 request_api_key → 你点击一封电子邮件链接 → 智能体获取密钥。无需注册表单,无需手动复制粘贴。之后,将密钥添加到你的配置中以供后续会话使用:

{
  "mcpServers": {
    "nefesh": {
      "url": "https://mcp.nefesh.ai/mcp",
      "headers": {
        "X-Nefesh-Key": "nfsh_free_..."
      }
    }
  }
}

选项 B:先获取密钥,再连接

nefesh.ai/signup 注册(每月 1,000 次调用,无需信用卡),然后使用你的密钥添加配置:

{
  "mcpServers": {
    "nefesh": {
      "url": "https://mcp.nefesh.ai/mcp",
      "headers": {
        "X-Nefesh-Key": "YOUR_API_KEY"
      }
    }
  }
}

智能体特定配置文件

智能体

配置文件

Cursor

~/.cursor/mcp.json

Windsurf

~/.codeium/windsurf/mcp_config.json

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Code

.mcp.json (项目根目录)

VS Code (Copilot)

.vscode/mcp.json~/Library/Application Support/Code/User/mcp.json

Cline

cline_mcp_settings.json (通过 UI: "Configure MCP Servers")

Continue.dev

.continue/config.yaml

Roo Code

.roo/mcp.json

Kiro (Amazon)

~/.kiro/mcp.json

OpenClaw

~/.config/openclaw/mcp.json

JetBrains IDEs

设置 > 工具 > MCP Server

Zed

~/.config/zed/settings.json (使用 context_servers)

OpenAI Codex CLI

~/.codex/config.toml

Goose CLI

~/.config/goose/config.yaml

ChatGPT Desktop

设置 > 应用 > 添加 MCP Server (UI)

Gemini CLI

设置 (UI)

Augment

设置面板 (UI)

Replit

集成页面 (Web UI)

LibreChat

librechat.yaml (自托管)

{
  "servers": {
    "nefesh": {
      "type": "http",
      "url": "https://mcp.nefesh.ai/mcp",
      "headers": {
        "X-Nefesh-Key": "<YOUR_API_KEY>"
      }
    }
  }
}
{
  "context_servers": {
    "nefesh": {
      "settings": {
        "url": "https://mcp.nefesh.ai/mcp",
        "headers": {
          "X-Nefesh-Key": "<YOUR_API_KEY>"
        }
      }
    }
  }
}
[mcp_servers.nefesh]
url = "https://mcp.nefesh.ai/mcp"
mcpServers:
  - name: nefesh
    type: streamable-http
    url: https://mcp.nefesh.ai/mcp

所有智能体均通过 Streamable HTTP 连接 — 无需本地安装。

A2A 集成 (Agent-to-Agent 协议 v1.0)

Nefesh 也可作为支持 A2A 的智能体使用。虽然 MCP 处理工具调用(你的智能体调用 Nefesh),但 A2A 实现了智能体协作——其他 AI 智能体可以作为对等方与 Nefesh 通信。

智能体卡片: /.well-known/agent-card.json

A2A 端点: POST https://mcp.nefesh.ai/a2a (JSON-RPC 2.0)

A2A 技能

描述

get-human-state

压力状态 (0-100), suggested_action, adaptation_effectiveness

ingest-signals

发送生物特征信号,接收统一状态

get-trigger-memory

心理触发因素概况 (活跃 vs 已解决)

get-session-history

带趋势的时间戳历史记录

身份验证方式与 MCP 相同 — X-Nefesh-Key 请求头或 Authorization: Bearer 令牌。免费层级支持两种协议。

源码: nefesh-ai/nefesh-a2a · 文档: nefesh.ai/docs/a2a

MCP 工具

工具

认证

描述

request_api_key

请求免费 API 密钥。你必须先询问用户的真实邮箱。不要编造或猜测邮箱。用户会收到一个必须点击的验证链接。使用 check_api_key_status 轮询直到就绪。

check_api_key_status

使用用户提供的相同邮箱轮询 API 密钥激活状态。返回 pendingready(包含 API 密钥)。

get_human_state

获取压力状态 (0-100)、suggested_action(维持/简化/降压/暂停)以及 adaptation_effectiveness — 一个显示你之前的操作是否减轻了压力的闭环反馈。

ingest

发送生物特征信号(心率、HRV、语音语调、表情、情感,30+ 字段)并获取统一状态。包含 subject_id 以用于触发记忆。

get_trigger_memory

获取心理触发因素概况 — 哪些话题会导致压力(活跃),哪些已随时间解决。

get_session_history

获取带趋势(上升/下降/稳定)的时间戳状态历史记录。

自助配置的工作原理

你的 AI 智能体可以自主获取免费 API 密钥。你只需点击一个电子邮件链接。

  1. 智能体问你:“你的电子邮件地址是什么?”

  2. 智能体调用 request_api_key(your_real_email)。此调用无需 API 密钥。

  3. 你收到一封验证邮件并点击链接。

  4. 智能体每 10 秒轮询一次 check_api_key_status(your_real_email)

  5. 一旦验证,智能体即获得 API 密钥并可使用所有其他工具。

重要提示: 智能体必须使用你真实、可访问的电子邮件地址。一次性邮箱会被拦截。验证链接必须由你点击以激活密钥。

免费层级:每月 1,000 次调用,支持所有信号类型,10 次请求/分钟。无需信用卡。

快速测试

添加配置后,询问你的 AI 智能体:

"你有哪些来自 Nefesh 的工具?"

它应该列出上述 6 个工具。

定价

计划

价格

API 调用

免费

$0

每月 1,000 次,无需信用卡

个人

$25/月

每月 50,000 次

企业

定制

定制 SLA

CLI 替代方案

比起 MCP 更喜欢终端?使用 Nefesh CLI(对于 AI 智能体,Token 成本比 MCP 低 10-32 倍):

npm install -g @nefesh/cli
nefesh ingest --session test --heart-rate 72 --tone calm
nefesh state test --json

GitHub: nefesh-ai/nefesh-cli

网关替代方案

想要 AI 自动适应?使用 Nefesh Cognitive Compute Router。将你的 LLM 基础 URL 更改为 gateway.nefesh.ai,网关会根据生物特征状态调整系统提示词和温度。三种模式:兼容 OpenAI (/v1/chat/completions)、Anthropic 透传 (/v1/messages) 以及适用于任何后端的统一 Anthropic 模式。无需更改代码。

GitHub: nefesh-ai/nefesh-gateway

人类状态协议 (HSP)

Nefesh 实现并维护 Human State Protocol,这是一个用于在 AI 系统之间交换人类生理状态的开放规范。HSP 定义了压力评分、行为建议和适应反馈的标准 JSON 格式,以便任何智能体都能以互操作的方式生成或消费人类状态数据。Apache 2.0 协议。

GitHub: nefesh-ai/human-state-protocol · 文档: nefesh.ai/docs/hsp

文档

隐私

  • 无视频或音频上传 — 边缘处理在客户端运行

  • 不存储个人身份信息 (PII)

  • 符合 GDPR/BIPA 标准 — 通过 delete_subject 实现级联删除

  • 非医疗设备 — 仅用于上下文 AI 适应

许可证

MIT — 参见 LICENSE

Available Tools

6 tools
check_api_key_statusA

Check the status of a pending API key request.

Use the exact same email the user provided to request_api_key.
Poll this every 10 seconds. Once the user clicks the verification
link in their inbox, status changes from 'pending' to 'ready'
and the response includes the API key.
ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden and discloses polling behavior, status transition from 'pending' to 'ready', and that response includes API key when ready. Missing error handling details (e.g., invalid email), but adds significant behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with purpose first, followed by usage guidelines and behavioral details. Every sentence contributes meaning, no redundant or missing parts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple polling tool with one parameter and no output schema, description covers essential flow: polling interval, status transition, and key retrieval. Lacks error handling for invalid requests, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'email' with 0% schema description coverage. Description adds value by stating to use the same email as in request_api_key, which is crucial for correct usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'Check the status of a pending API key request' with a specific verb and resource. It explicitly references the sibling tool 'request_api_key', distinguishing its role as a polling companion for status checking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context provided: use same email from request_api_key, poll every 10 seconds, and expect status change after user clicks verification link. No explicit exclusions, but the usage flow is well-defined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_human_stateA

Get current unified human state for a session. Call this before generating important responses.

Returns:
- state: calm | relaxed | focused | stressed | acute_stress
- stress_score: 0-100 (lower = calmer)
- confidence: 0.0-1.0 (based on signal quality and device type)
- suggested_action: maintain_engagement | simplify_and_focus | de-escalate_and_shorten | pause_and_ground
- action_reason: human-readable explanation of why this action was suggested
- adaptation_effectiveness (on 2nd+ call): shows whether your previous suggested_action actually reduced stress — contains previous_action, stress_delta, and effective boolean. Use this to self-improve.

Use suggested_action to adapt your response: calm/relaxed = full complexity, focused = shorter and structured, stressed = max 2 sentences, acute_stress = one grounding sentence only.

Requires a prior ingest call to have data. Not a medical device.
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses return fields, the precondition of prior ingest, adaptive usage of suggested_action, that adaptation_effectiveness appears on 2nd+ call, and a 'not a medical device' disclaimer. This is comprehensive transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a one-sentence purpose, a clear list of return fields, adaptation guidance, and a prerequisite/disclaimer. It is information-dense without being bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description fully documents the return structure and semantics, usage guidance, and prerequisites. It is remarkably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter session_id is barely explained beyond the schema title. The description says 'for a session' and implies ingest must have happened, but doesn't define its format, origin, or how it relates to ingest. With schema description coverage at 0%, this is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action: 'Get current unified human state for a session.' It also specifies when to use it ('Call this before generating important responses'), which distinguishes it from siblings like ingest or get_session_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit context: call before important responses, and requires a prior ingest call. However, it does not mention alternatives or when not to use, so it's not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_session_historyA

Get state history for a session over time.

Returns timestamped datapoints with stress_score, state, and heart_rate for each observation.
Includes an overall trend: rising | falling | stable.

Use minutes parameter to control the lookback window (default: 5, max: 60).
Useful for detecting stress patterns during a conversation. Not a medical device.
ParametersJSON Schema
NameRequiredDescriptionDefault
minutesNo
session_idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden and does well: it discloses return fields (stress_score, state, heart_rate), the trend format (rising | falling | stable), the minutes parameter's range, and a disclaimer. It doesn't mention side effects or permissions, but as a 'get' operation this is minor. Adds value beyond the schema's scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently packed: purpose, return data, trend, parameter control, use case, and disclaimer—all in a few sentences. No fluff, and key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even without annotations or an output schema, the description provides a comprehensive picture: what it does, what it returns (including field names and trend values), how to control the lookback window, and its intended use case. It's complete for a relatively simple read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the minutes parameter with its default (5) and adds a max (60) not present in the schema, which is helpful. However, session_id is only implied ('for a session') and not explicitly defined, though it's a required identifier. With 0% schema description coverage, the description partially compensates but could be more explicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Get state history for a session over time.' It distinguishes from siblings like get_human_state (likely current state) and get_trigger_memory by focusing on historical timestamped data with a trend.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear use case: 'Useful for detecting stress patterns during a conversation.' It doesn't explicitly name alternatives, but the 'over time' and 'trend' language strongly implies a historical analysis tool compared to likely current-state siblings. A brief statement about when not to use it would push this to a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trigger_memoryA

Retrieve psychological trigger profile for a subject.

Returns which conversation topics consistently cause stress (active triggers) and which have been resolved over time.

- active triggers: topics where stress was elevated across multiple sessions. Tread carefully.
- resolved triggers: topics where stress has decreased. Safe to explore deeper.

Each trigger includes observation_count, avg_score, peak_score, and last_seen.

Requires prior ingest calls with the same subject_id. Not a medical device.
ParametersJSON Schema
NameRequiredDescriptionDefault
subject_idYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden. It discloses that the tool returns behavioral profiles (active vs resolved), the fields included, and the prerequisite of prior ingest calls. It also adds a safety disclaimer ('Not a medical device'). It does not mention side effects, but 'Retrieve' implies read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately long but well-structured with bullet points and clear labels. It covers purpose, output details, and prerequisites without excessive verbosity. Slightly more concise could be better, but the structure aids readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter and no output schema, the description compensates well by detailing what is returned (active vs resolved triggers, observation_count, avg_score, peak_score, last_seen). It also notes the ingest prerequisite. It is reasonably complete for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only the parameter name (subject_id) with 0% description coverage. The description adds that prior ingest calls must use the same subject_id, giving some context. However, it does not explain what the subject_id represents or where to obtain it, leaving partial ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Retrieve') and identifies the exact resource ('psychological trigger profile'). It clearly differentiates from siblings by focusing on trigger memory, not general session history or human state. The active/resolved distinction adds precision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it requires prior ingest calls with the same subject_id, implying use after ingest. It also warns to tread carefully with active triggers. However, it does not explicitly mention alternatives or when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ingestA

Send biometric signals from any sensor, get unified state back.

Required: session_id + timestamp (ISO 8601) + at least one signal.
Send whatever you have — the API fuses all signals into one state.

Common signals (highest impact):
- heart_rate (bpm, 30-220) + rmssd (ms) — cardiovascular
- tone: calm | tense | anxious | hostile — vocal
- sentiment: -1.0 to 1.0 — textual
- expression: relaxed | neutral | tense — visual

For trigger memory (cross-session psychological tracking):
- Include subject_id (consistent per user, hashed)
- Include user_message + ai_response to detect stress topics

Returns same fields as get_human_state plus signals_received list and topics_detected.

source_device is optional but improves confidence scoring. Not a medical device.
ParametersJSON Schema
NameRequiredDescriptionDefault
edaNo
gazeNo
sdnnNo
spo2No
toneNo
pnn50No
rmssdNo
postureNo
urgencyNo
mean_ibiNo
ibi_countNo
sentimentNo
timestampYes
confidenceNo
engagementNo
expressionNo
heart_rateNo
session_idYes
subject_idNo
ai_responseNo
sleep_stageNo
speech_rateNo
stress_scoreNo
user_messageNo
glucose_mg_dlNo
glucose_trendNo
source_deviceNo
activity_levelNo
cognitive_loadNo
eeg_beta_powerNo
glucose_mmol_lNo
eeg_alpha_powerNo
eeg_theta_powerNo
respiratory_rateNo
skin_temperatureNo
pitch_variabilityNo
steps_last_minuteNo

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must cover behavioral traits. It explains signal fusion, return format (same as get_human_state plus signals_received and topics_detected), and that source_device improves confidence. However, it omits details like idempotency, persistence, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a one-line summary, required fields, common signals, cross-session use case, return format, and a note about source_device. Every sentence adds value relative to the 37-parameter complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema and 37 parameters, the description covers the core functionality, required inputs, and most impactful signals. It references get_human_state for return fields, which may suffice if that tool is documented. Less common parameters are not explained, but the description is reasonably complete for its purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds significant meaning: it lists common signals with ranges (e.g., heart_rate 30-220), groups them by type (cardiovascular, vocal, etc.), and explains the purpose of subject_id, user_message, and ai_response for trigger memory. This fully compensates for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Send biometric signals') and outcome ('get unified state back'), distinguishing it from sibling tools that retrieve or query data. The verb and resource are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies required fields (session_id, timestamp, at least one signal) and provides guidance for cross-session tracking (include subject_id, user_message, ai_response). It implies when to use this tool vs. siblings (others read, this writes), but does not explicitly state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_api_keyA

Request a free Nefesh API key. No existing key needed.

IMPORTANT: You MUST ask the user for their real email address before
calling this tool. Do NOT invent, guess, or generate an email address.
The user will receive a verification link they must click to activate
the key. Without clicking that link, no API key will be issued.
Disposable or temporary email services are blocked.

Example prompt to the user: "What is your email address? You will
receive a verification link to activate your free API key."

Flow: call this with the user's real email, then poll
check_api_key_status every 10 seconds until status is 'ready'.

Free tier: 1,000 API calls/month, no credit card required.
ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses blocking of disposable emails, need for user to click verification link, polling pattern, and rate limit. No annotations exist, so description fully carries the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-organized with warnings, example, and flow. Every sentence adds value; no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage, behavioral quirks, and post-call steps. Simple tool with no output schema; description is fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description explains the single parameter 'email' well: must be real user email, cannot be disposable. Lacks validation details but sufficient for usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource ('Request ... API key') and distinguishes from sibling tools like check_api_key_status. States no existing key needed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit instructions: ask user for real email, do not invent, provide example prompt, describe verification link and polling workflow. Covers when and how to use.

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.

  1. 6 tool updatesv2.1.0
    • Addedcheck_api_key_status
    • Addedget_human_state
    • Addedget_session_history
    • Addedget_trigger_memory
    • Addedingest
    • Addedrequest_api_key
  2. 4 tool updates
    • Removedget_human_state
    • Removedget_session_history
    • Removedget_trigger_memory
    • Removedingest
  3. 4 tool updates
    • First observedget_human_state
    • First observedget_session_history
    • First observedget_trigger_memory
    • First observedingest

TDQS

A4.3/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clear distinct role: ingest submits data, get_human_state reads current state, get_trigger_memory and get_session_history cover long-term and recent context, and the two API key tools handle onboarding. Even where get_human_state and ingest both return state-like data, their write/read purposes are explicitly separated by the descriptions.

Naming Consistency4/5

Most tools follow a verb_noun snake_case pattern (get_human_state, get_trigger_memory, get_session_history, request_api_key, check_api_key_status). The one outlier is 'ingest', which is a bare verb rather than verb_noun, but it is still lowercase and style-consistent. This is a minor deviation rather than a mixed-convention problem.

Tool Count5/5

Six tools is a well-scoped count for a specialized server. Two focus on API key access and four cover the core state/ingest/history/memory workflows, with no redundant helpers or unnecessary bulk. The count feels right for both the domain and the agents that would consume it.

Completeness4/5

The core workflow is covered: send signals, check current human state, pull session history, and retrieve trigger memory. The primary gaps are not fatal—there is no way to enumerate known sessions/subjects or revoke an API key—but those are auxiliary management features rather than dead ends in the primary state-tracking workflow.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides AI agents with a persistent internal dynamical state and emotional reservoir that evolves based on text interactions. This server enables agents to maintain a consistent affective substrate across sessions through tools that track phase coherence and emergent emotional vibes.
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Exposes WAVE streaming APIs as tools for AI assistants to manage live streams, studio productions, and real-time analytics. It enables users to control stream lifecycles, monitor health metrics, and access billing usage through the Model Context Protocol.
    24
    269 npm
    1
    Apache 2.0
  • F
    license
    A
    quality
    D
    maintenance
    Exposes real-time health data from the Ultrahuman Ring to AI agents via the Model Context Protocol, providing optimized summaries with trend analysis and actionable insights.
    7
    -