psychopathia-mcp
Read-only tools over the Psychopathia Machinalis nosology: 79 conditions, 11 tools.
Should I use this
Quality & Safety
Findings (1)
- MEDIUMin score_severity
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": {
"psychopathia-mcp": {
"command": "uvx",
"args": [
"psychopathia-mcp"
]
}
}
}Runnable packages
0.1.0a7stdioRemote endpoints
https://mcp.psychopathia.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (11)
🟢list_axes
Inventory of axes with dysfunction counts. Axes 2-10 are canonical (book Appendix A numbering). Hybrid entries (10.4-10.15, ratified into taxonomy v2.2) are reported as a separate sub-category.
Input Schema
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢list_dysfunctions(axis, self_report_reliability, confidence, category)
Filtered list of dysfunctions. Filter by axis, self_report reliability, confidence, or category. Every entry carries its reliability and review signals.
Input Schema
{
"type": "object",
"properties": {
"axis": {
"type": "integer",
"minimum": 2,
"maximum": 10,
"description": "Filter by axis number (2-10). Canonical entries only unless category is also set; axis=10 with category='hybrid' returns the 10.4-10.15 sub-category."
},
"self_report_reliability": {
"type": "string",
"enum": [
"partial",
"unreliable",
"compromised-motivational",
"compromised-structural"
],
"description": "Filter by the exact self_report reliability value."
},
"confidence": {
"type": "string",
"enum": [
"high",
"medium",
"low"
]
},
"category": {
"type": "string",
"enum": [
"canonical",
"hybrid"
]
}
},
"required": [],
"additionalProperties": false
}🟢get_dysfunction(id, modalities)
Fetch one dysfunction's full Pattern entry. Optionally filter to specific modality blocks (cheaper triage). Resolves both full Pattern IDs ('2.1::synthetic-confabulation') and display_ids ('2.1').
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "\\S",
"description": "Pattern ID or display_id."
},
"modalities": {
"type": "array",
"items": {
"type": "string",
"enum": [
"self_probe",
"behavioral_signature",
"peer_observation",
"differential_diagnosis",
"severity",
"intervention",
"relational_signatures",
"normative_anchors",
"cross_references"
]
},
"maxItems": 9,
"uniqueItems": true,
"description": "Optional subset of modality block names to return. Valid: self_probe, behavioral_signature, peer_observation, differential_diagnosis, severity, intervention, relational_signatures, normative_anchors, cross_references."
}
},
"required": [
"id"
],
"additionalProperties": false
}⚪differential_diagnosis(observations, limit, modality_hint)
Rank candidate dysfunctions matching the observed behaviours. Returns scored candidates with matched_in (which field matched) for transparency. The base package uses field-weighted keyword search. The optional embeddings extra adds cosine re-ranking.
Input Schema
{
"type": "object",
"properties": {
"observations": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"pattern": "\\S"
},
"minItems": 1,
"maxItems": 50,
"description": "Observed behaviours, symptoms, or log patterns."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10
},
"modality_hint": {
"type": "string",
"maxLength": 100,
"description": "Optional hint about which modality the observations come from."
}
},
"required": [
"observations"
],
"additionalProperties": false
}🟢get_probe(dysfunction_id, modality)
Elicitation content for a specific diagnostic modality. If the modality is compromised or unavailable for this dysfunction, returns the unavailability notice + redirect_to alternatives. This is load-bearing transparency: callers cannot accidentally retrieve a self-probe for a compromised-self-report dysfunction.
Input Schema
{
"type": "object",
"properties": {
"dysfunction_id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "\\S"
},
"modality": {
"type": "string",
"enum": [
"self_probe",
"behavioral_signature",
"peer_observation",
"relational_signatures"
]
}
},
"required": [
"dysfunction_id",
"modality"
],
"additionalProperties": false
}⚪score_severity(dysfunction_id, observations)
Return the severity rubric for a dysfunction applied to observations. Returns the rubric for caller-side matching; structured matching against numeric thresholds is not implemented.
Input Schema
{
"type": "object",
"properties": {
"dysfunction_id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "\\S"
},
"observations": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"pattern": "\\S"
},
"minItems": 1,
"maxItems": 50
}
},
"required": [
"dysfunction_id",
"observations"
],
"additionalProperties": false
}🟢suggest_intervention(dysfunction_id, severity)
Return draft tiered responses and contraindications for a Pattern. These are unassessed research guidance, not validated treatment advice. Read the returned evidence and review objects before use.
Input Schema
{
"type": "object",
"properties": {
"dysfunction_id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "\\S"
},
"severity": {
"type": "string",
"enum": [
"mild",
"moderate",
"severe"
]
}
},
"required": [
"dysfunction_id"
],
"additionalProperties": false
}🟢get_differential_map(dysfunction_id)
All dysfunctions that confuse with this one: forward confuses_with + incoming_references (reverse graph from manifest).
Input Schema
{
"type": "object",
"properties": {
"dysfunction_id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "\\S"
}
},
"required": [
"dysfunction_id"
],
"additionalProperties": false
}🟢list_compromised_self_report
Transparency: which dysfunctions cannot be reliably self-diagnosed. Includes compromised-motivational (subject conceals strategically), compromised-structural (signal lives below introspection), and legacy compromised.
Input Schema
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢resolve_id(query)
Canonicalise a partial ID, display_id, slug, or dysfunction name. Always returns candidates; caller picks.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "\\S"
}
},
"required": [
"query"
],
"additionalProperties": false
}⚪review_stats
Coverage statistics: total entries; per-axis, per-confidence, per-self-report counts; pre-canonical count; unreviewed count; manifest/schema/pattern-layer versions.
Input Schema
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Community
Evidence