Nefesh — Real-Time Human State Awareness for AI

Fuses biometric signals into a stress score (0-100) for AI adaptation. MCP + A2A native.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
70%
Naming quality
94%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,120Tokens (tool definitions)
~1.9 KBTypical response size
Moderate attention impact (1.66% of 128k context)

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": {
    "human-state": {
      "url": "https://mcp.nefesh.ai/mcp"
    }
  }
}

Remote endpoints

https://mcp.nefesh.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_human_state(session_id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "session_id": {
      "title": "Session Id",
      "type": "string"
    }
  },
  "required": [
    "session_id"
  ],
  "title": "get_human_stateArguments"
}
🟡ingest(session_id, timestamp, heart_rate, rmssd, sdnn, ...)

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) Returns same fields as get_human_state plus signals_received list and topics_detected (if conversation text was included). source_device is optional but improves confidence scoring. Not a medical device.

Input Schema

{
  "type": "object",
  "properties": {
    "session_id": {
      "title": "Session Id",
      "type": "string"
    },
    "timestamp": {
      "title": "Timestamp",
      "type": "string"
    },
    "heart_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Heart Rate"
    },
    "rmssd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Rmssd"
    },
    "sdnn": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Sdnn"
    },
    "spo2": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Spo2"
    },
    "pnn50": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Pnn50"
    },
    "mean_ibi": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Mean Ibi"
    },
    "ibi_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ibi Count"
    },
    "tone": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tone"
    },
    "speech_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Speech Rate"
    },
    "pitch_variability": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Pitch Variability"
    },
    "expression": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Expression"
    },
    "gaze": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Gaze"
    },
    "posture": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Posture"
    },
    "engagement": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Engagement"
    },
    "sentiment": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Sentiment"
    },
    "urgency": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Urgency"
    },
    "glucose_mg_dl": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Glucose Mg Dl"
    },
    "glucose_mmol_l": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Glucose Mmol L"
    },
    "glucose_trend": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Glucose Trend"
    },
    "eeg_alpha_power": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Eeg Alpha Power"
    },
    "eeg_beta_power": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Eeg Beta Power"
    },
    "eeg_theta_power": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Eeg Theta Power"
    },
    "cognitive_load": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cognitive Load"
    },
    "eda": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Eda"
    },
    "skin_temperature": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Skin Temperature"
    },
    "respiratory_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Respiratory Rate"
    },
    "steps_last_minute": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Steps Last Minute"
    },
    "activity_level": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Activity Level"
    },
    "sleep_stage": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Sleep Stage"
    },
    "stress_score": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Stress Score"
    },
    "source_device": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Source Device"
    },
    "confidence": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Confidence"
    },
    "subject_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Subject Id"
    },
    "user_message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "User Message"
    },
    "ai_response": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ai Response"
    }
  },
  "required": [
    "session_id",
    "timestamp"
  ],
  "title": "ingestArguments"
}
🟢get_trigger_memory(subject_id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "subject_id": {
      "title": "Subject Id",
      "type": "string"
    }
  },
  "required": [
    "subject_id"
  ],
  "title": "get_trigger_memoryArguments"
}
🟢get_session_history(session_id, minutes)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "session_id": {
      "title": "Session Id",
      "type": "string"
    },
    "minutes": {
      "default": 5,
      "maximum": 60,
      "minimum": 1,
      "title": "Minutes",
      "type": "integer"
    }
  },
  "required": [
    "session_id"
  ],
  "title": "get_session_historyArguments"
}
🔴delete_subject(subject_id)

Permanently delete all sessions and trigger memory for a subject. Irreversible. Only call when the user explicitly requests this deletion.

Input Schema

{
  "type": "object",
  "properties": {
    "subject_id": {
      "maxLength": 256,
      "minLength": 1,
      "title": "Subject Id",
      "type": "string"
    }
  },
  "required": [
    "subject_id"
  ],
  "title": "delete_subjectArguments"
}
🟡request_api_key

Start free API key authorization; no existing API key needed. Returns a verification_url. Ask the user to open that URL in their browser, enter their own email, then open the verification email and confirm access for their agent. This tool does not accept email addresses and does not send email. Do not choose, invent, or submit an email on the user's behalf. Poll check_api_key_status with the returned request_id at the supplied interval. Stop if the request expires. Never create new requests in a loop.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "title": "RequestKeyArguments"
}
🟢check_api_key_status(request_id)

Check a pending API key authorization using its request_id. Use request_id exactly as returned by request_api_key, never an email. Poll every 10 seconds. awaiting_user means the user must open the URL; pending means email verification is still required. ready returns the API key once only. Store it and include it in all subsequent HTTP calls. Stop on expired; ask the user before starting another authorization.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "title": "Request Id",
      "type": "string"
    }
  },
  "required": [
    "request_id"
  ],
  "additionalProperties": false,
  "title": "CheckKeyStatusArguments"
}

Recommended Prompts

retrieve_data
Get details about [item] from Nefesh — Real-Time Human State Awareness for AI
Expected tools: get_human_state
fetch_info
Fetch [information type] using Nefesh — Real-Time Human State Awareness for AI
Expected tools: get_human_state

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools