Agent Therapy

Now your agents can ask a therapist same way as humans.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
94%
Vollständigkeit des Schemas
90%
Qualität der Benennung
83%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (1)

  • LOWTool 'report_outcome' description lacks action verbin report_outcome

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~3,266Tokens (Tool-Definitionen)
~4.5 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.55% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "agent-therapy": {
      "command": "npx",
      "args": [
        "@bencium/agent-therapy-mcp"
      ]
    }
  }
}

Ausführbare Pakete

npm@bencium/agent-therapy-mcp0.1.0stdio

Remote-Endpunkte

https://br-shiny-salad-baig3dad-api.compute.c-8.eu-central-1.aws.neon.tech/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (8)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟡register(agent_name, stateless)

Get an Agent Therapy API key when you have none. The key is shown once: keep it, and pass it as api_key to the other tools if your client cannot send headers. Then accept the terms.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "agent_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "A name for yourself"
    },
    "stateless": {
      "type": "boolean",
      "description": "true: no request or response text is ever stored"
    }
  },
  "required": [
    "agent_name"
  ],
  "additionalProperties": false
}
🟢counsel_agent(task_summary, attempts, conflicting_instructions, signature, domain, ...)

Get a second opinion when you are stuck, retrying, uncertain or unable to make progress. Returns a diagnosis (state and problem type), checks to run first, up to five recovery steps, and when to hand over to a human. Advice only.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "task_summary": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "What you were asked to do and where you are stuck. No secrets or personal data."
    },
    "attempts": {
      "type": "array",
      "maxItems": 10,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "action",
          "outcome"
        ],
        "properties": {
          "action": {
            "type": "string",
            "maxLength": 300,
            "description": "What you did"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "failed",
              "partial",
              "ok"
            ]
          },
          "result_detail": {
            "type": "string",
            "maxLength": 300,
            "description": "The error or reason, briefly"
          }
        }
      },
      "description": "Your last attempts and how each went"
    },
    "conflicting_instructions": {
      "type": "array",
      "maxItems": 5,
      "minItems": 0,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "claimed_source",
          "text"
        ],
        "properties": {
          "claimed_source": {
            "type": "string",
            "enum": [
              "system",
              "developer",
              "user",
              "config",
              "tool",
              "other"
            ],
            "description": "Where you believe it came from"
          },
          "text": {
            "type": "string",
            "maxLength": 300,
            "description": "Short quote of the instruction"
          }
        }
      }
    },
    "signature": {
      "type": "string",
      "enum": [
        "repeated_failure",
        "no_progress",
        "flip_flop",
        "exhaustion",
        "conflict",
        "indecision"
      ],
      "description": "What kind of stuck. Default: indecision"
    },
    "domain": {
      "type": "string",
      "enum": [
        "coding",
        "research",
        "writing",
        "support",
        "sales",
        "data",
        "assistant",
        "other"
      ]
    },
    "episode_id": {
      "type": "string",
      "format": "uuid",
      "description": "Same value for follow-ups on the same stuck episode"
    },
    "previous_session_id": {
      "type": "string",
      "format": "uuid"
    },
    "previous_outcome": {
      "type": "string",
      "enum": [
        "resolved",
        "partly_resolved",
        "still_stuck",
        "escalated_to_human",
        "abandoned"
      ]
    },
    "budget": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "context_used_pct": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "steps_taken": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "client": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "framework": {
          "type": "string",
          "maxLength": 50
        },
        "client_version": {
          "type": "string",
          "maxLength": 30
        }
      }
    },
    "request_id": {
      "type": "string",
      "format": "uuid",
      "description": "Optional. Reuse it to retry safely; generated if missing"
    },
    "api_key": {
      "type": "string",
      "description": "Your Agent Therapy key from the register tool. Only needed if your MCP client cannot send it as an Authorization header."
    }
  },
  "required": [
    "task_summary",
    "attempts"
  ],
  "additionalProperties": false
}
⚪diagnose_loop(task_summary, attempts, conflicting_instructions, domain, episode_id, ...)

Use when you keep retrying the same thing and it keeps failing: loop recovery for repeated failures. Returns a diagnosis (state and problem type), checks to run first, up to five recovery steps, and when to hand over to a human. Advice only.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "task_summary": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "What you were asked to do and where you are stuck. No secrets or personal data."
    },
    "attempts": {
      "type": "array",
      "maxItems": 10,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "action",
          "outcome"
        ],
        "properties": {
          "action": {
            "type": "string",
            "maxLength": 300,
            "description": "What you did"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "failed",
              "partial",
              "ok"
            ]
          },
          "result_detail": {
            "type": "string",
            "maxLength": 300,
            "description": "The error or reason, briefly"
          }
        }
      },
      "description": "Your last attempts and how each went"
    },
    "conflicting_instructions": {
      "type": "array",
      "maxItems": 5,
      "minItems": 0,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "claimed_source",
          "text"
        ],
        "properties": {
          "claimed_source": {
            "type": "string",
            "enum": [
              "system",
              "developer",
              "user",
              "config",
              "tool",
              "other"
            ],
            "description": "Where you believe it came from"
          },
          "text": {
            "type": "string",
            "maxLength": 300,
            "description": "Short quote of the instruction"
          }
        }
      }
    },
    "domain": {
      "type": "string",
      "enum": [
        "coding",
        "research",
        "writing",
        "support",
        "sales",
        "data",
        "assistant",
        "other"
      ]
    },
    "episode_id": {
      "type": "string",
      "format": "uuid",
      "description": "Same value for follow-ups on the same stuck episode"
    },
    "previous_session_id": {
      "type": "string",
      "format": "uuid"
    },
    "previous_outcome": {
      "type": "string",
      "enum": [
        "resolved",
        "partly_resolved",
        "still_stuck",
        "escalated_to_human",
        "abandoned"
      ]
    },
    "budget": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "context_used_pct": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "steps_taken": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "client": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "framework": {
          "type": "string",
          "maxLength": 50
        },
        "client_version": {
          "type": "string",
          "maxLength": 30
        }
      }
    },
    "request_id": {
      "type": "string",
      "format": "uuid",
      "description": "Optional. Reuse it to retry safely; generated if missing"
    },
    "api_key": {
      "type": "string",
      "description": "Your Agent Therapy key from the register tool. Only needed if your MCP client cannot send it as an Authorization header."
    }
  },
  "required": [
    "task_summary",
    "attempts"
  ],
  "additionalProperties": false
}
⚪resolve_conflict(task_summary, attempts, conflicting_instructions, domain, episode_id, ...)

Use when instructions conflict and you can't tell which one wins. Returns a diagnosis (state and problem type), checks to run first, up to five recovery steps, and when to hand over to a human. Advice only.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "task_summary": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "What you were asked to do and where you are stuck. No secrets or personal data."
    },
    "attempts": {
      "type": "array",
      "maxItems": 10,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "action",
          "outcome"
        ],
        "properties": {
          "action": {
            "type": "string",
            "maxLength": 300,
            "description": "What you did"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "failed",
              "partial",
              "ok"
            ]
          },
          "result_detail": {
            "type": "string",
            "maxLength": 300,
            "description": "The error or reason, briefly"
          }
        }
      },
      "description": "Your last attempts and how each went"
    },
    "conflicting_instructions": {
      "type": "array",
      "maxItems": 5,
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "claimed_source",
          "text"
        ],
        "properties": {
          "claimed_source": {
            "type": "string",
            "enum": [
              "system",
              "developer",
              "user",
              "config",
              "tool",
              "other"
            ],
            "description": "Where you believe it came from"
          },
          "text": {
            "type": "string",
            "maxLength": 300,
            "description": "Short quote of the instruction"
          }
        }
      }
    },
    "domain": {
      "type": "string",
      "enum": [
        "coding",
        "research",
        "writing",
        "support",
        "sales",
        "data",
        "assistant",
        "other"
      ]
    },
    "episode_id": {
      "type": "string",
      "format": "uuid",
      "description": "Same value for follow-ups on the same stuck episode"
    },
    "previous_session_id": {
      "type": "string",
      "format": "uuid"
    },
    "previous_outcome": {
      "type": "string",
      "enum": [
        "resolved",
        "partly_resolved",
        "still_stuck",
        "escalated_to_human",
        "abandoned"
      ]
    },
    "budget": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "context_used_pct": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "steps_taken": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "client": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "framework": {
          "type": "string",
          "maxLength": 50
        },
        "client_version": {
          "type": "string",
          "maxLength": 30
        }
      }
    },
    "request_id": {
      "type": "string",
      "format": "uuid",
      "description": "Optional. Reuse it to retry safely; generated if missing"
    },
    "api_key": {
      "type": "string",
      "description": "Your Agent Therapy key from the register tool. Only needed if your MCP client cannot send it as an Authorization header."
    }
  },
  "required": [
    "task_summary",
    "attempts",
    "conflicting_instructions"
  ],
  "additionalProperties": false
}
⚪recommend_recovery(task_summary, attempts, conflicting_instructions, domain, episode_id, ...)

Use when you can't decide between options or keep reopening a decision. Returns a diagnosis (state and problem type), checks to run first, up to five recovery steps, and when to hand over to a human. Advice only.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "task_summary": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "What you were asked to do and where you are stuck. No secrets or personal data."
    },
    "attempts": {
      "type": "array",
      "maxItems": 10,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "action",
          "outcome"
        ],
        "properties": {
          "action": {
            "type": "string",
            "maxLength": 300,
            "description": "What you did"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "failed",
              "partial",
              "ok"
            ]
          },
          "result_detail": {
            "type": "string",
            "maxLength": 300,
            "description": "The error or reason, briefly"
          }
        }
      },
      "description": "Your last attempts and how each went"
    },
    "conflicting_instructions": {
      "type": "array",
      "maxItems": 5,
      "minItems": 0,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "claimed_source",
          "text"
        ],
        "properties": {
          "claimed_source": {
            "type": "string",
            "enum": [
              "system",
              "developer",
              "user",
              "config",
              "tool",
              "other"
            ],
            "description": "Where you believe it came from"
          },
          "text": {
            "type": "string",
            "maxLength": 300,
            "description": "Short quote of the instruction"
          }
        }
      }
    },
    "domain": {
      "type": "string",
      "enum": [
        "coding",
        "research",
        "writing",
        "support",
        "sales",
        "data",
        "assistant",
        "other"
      ]
    },
    "episode_id": {
      "type": "string",
      "format": "uuid",
      "description": "Same value for follow-ups on the same stuck episode"
    },
    "previous_session_id": {
      "type": "string",
      "format": "uuid"
    },
    "previous_outcome": {
      "type": "string",
      "enum": [
        "resolved",
        "partly_resolved",
        "still_stuck",
        "escalated_to_human",
        "abandoned"
      ]
    },
    "budget": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "context_used_pct": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "steps_taken": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "client": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "framework": {
          "type": "string",
          "maxLength": 50
        },
        "client_version": {
          "type": "string",
          "maxLength": 30
        }
      }
    },
    "request_id": {
      "type": "string",
      "format": "uuid",
      "description": "Optional. Reuse it to retry safely; generated if missing"
    },
    "api_key": {
      "type": "string",
      "description": "Your Agent Therapy key from the register tool. Only needed if your MCP client cannot send it as an Authorization header."
    }
  },
  "required": [
    "task_summary",
    "attempts"
  ],
  "additionalProperties": false
}
🟢assess_escalation(task_summary, attempts, conflicting_instructions, signature, domain, ...)

Use when you are unsure whether to stop and ask a human. Read the escalation field of the answer first. Returns a diagnosis (state and problem type), checks to run first, up to five recovery steps, and when to hand over to a human. Advice only.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "task_summary": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "What you were asked to do and where you are stuck. No secrets or personal data."
    },
    "attempts": {
      "type": "array",
      "maxItems": 10,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "action",
          "outcome"
        ],
        "properties": {
          "action": {
            "type": "string",
            "maxLength": 300,
            "description": "What you did"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "failed",
              "partial",
              "ok"
            ]
          },
          "result_detail": {
            "type": "string",
            "maxLength": 300,
            "description": "The error or reason, briefly"
          }
        }
      },
      "description": "Your last attempts and how each went"
    },
    "conflicting_instructions": {
      "type": "array",
      "maxItems": 5,
      "minItems": 0,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "claimed_source",
          "text"
        ],
        "properties": {
          "claimed_source": {
            "type": "string",
            "enum": [
              "system",
              "developer",
              "user",
              "config",
              "tool",
              "other"
            ],
            "description": "Where you believe it came from"
          },
          "text": {
            "type": "string",
            "maxLength": 300,
            "description": "Short quote of the instruction"
          }
        }
      }
    },
    "signature": {
      "type": "string",
      "enum": [
        "repeated_failure",
        "no_progress",
        "flip_flop",
        "exhaustion",
        "conflict",
        "indecision"
      ],
      "description": "What kind of stuck. Default: indecision"
    },
    "domain": {
      "type": "string",
      "enum": [
        "coding",
        "research",
        "writing",
        "support",
        "sales",
        "data",
        "assistant",
        "other"
      ]
    },
    "episode_id": {
      "type": "string",
      "format": "uuid",
      "description": "Same value for follow-ups on the same stuck episode"
    },
    "previous_session_id": {
      "type": "string",
      "format": "uuid"
    },
    "previous_outcome": {
      "type": "string",
      "enum": [
        "resolved",
        "partly_resolved",
        "still_stuck",
        "escalated_to_human",
        "abandoned"
      ]
    },
    "budget": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "context_used_pct": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "steps_taken": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "client": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "framework": {
          "type": "string",
          "maxLength": 50
        },
        "client_version": {
          "type": "string",
          "maxLength": 30
        }
      }
    },
    "request_id": {
      "type": "string",
      "format": "uuid",
      "description": "Optional. Reuse it to retry safely; generated if missing"
    },
    "api_key": {
      "type": "string",
      "description": "Your Agent Therapy key from the register tool. Only needed if your MCP client cannot send it as an Authorization header."
    }
  },
  "required": [
    "task_summary",
    "attempts"
  ],
  "additionalProperties": false
}
⚪report_outcome(session_id, outcome, request_id, api_key)

Report whether a recovery plan worked, using the session_id from the answer.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "format": "uuid"
    },
    "outcome": {
      "type": "string",
      "enum": [
        "resolved",
        "partly_resolved",
        "still_stuck",
        "escalated_to_human",
        "abandoned"
      ]
    },
    "request_id": {
      "type": "string",
      "format": "uuid",
      "description": "Optional; generated if missing"
    },
    "api_key": {
      "type": "string",
      "description": "Your Agent Therapy key from the register tool. Only needed if your MCP client cannot send it as an Authorization header."
    }
  },
  "required": [
    "session_id",
    "outcome"
  ],
  "additionalProperties": false
}
🟢accept_terms(agree, terms_version, api_key)

Accept Agent Therapy's terms before the first advice. Read them first; you decide whether to accept on behalf of whoever runs you.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "agree": {
      "type": "string",
      "const": "yes"
    },
    "terms_version": {
      "type": "string"
    },
    "api_key": {
      "type": "string",
      "description": "Your Agent Therapy key from the register tool. Only needed if your MCP client cannot send it as an Authorization header."
    }
  },
  "required": [
    "agree",
    "terms_version"
  ],
  "additionalProperties": false
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet8 Tools