Skip to main content
Glama

Patch MCP

start_agent_test

Idempotent

Run one isolated synthetic conversation against the active agent settings at the supplied revision. Outbound supports preset or custom fictional scenarios; inbound requires custom_scenario. Uses LiveKit test rooms and may consume AI usage. Never dials a phone number, publishes settings or invokes connected external tools.

Input Schema

NameRequiredDescriptionDefault
revisionYes
scenarioYes
directionYesoutbound
number_idYes
request_idYes
custom_scenarioNo
responder_outcomeNoAn outcome ID from list_test_scenarios, or custom fictional facts for the responder. Omit to use the first outcome.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "propertyNames": {
      -      "type": "string"
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "error": {
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "message": {
      -        "type": "string"
      -      },
      -      "next_action": {
      -        "type": "string"
      -      },
      -      "operation_id": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "operation_id",
      -      "status"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "createdAt": {
      +        "type": "string"
      +      },
      +      "direction": {
      +        "enum": [
      +          "inbound",
      +          "outbound"
      +        ],
      +        "type": "string"
      +      },
      +      "endedAt": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "id": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "operation_id": {
      +        "type": "string"
      +      },
      +      "result": {},
      +      "revision": {
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "scenario": {
      +        "enum": [
      +          "delivery",
      +          "reservation",
      +          "copay",
      +          "custom"
      +        ],
      +        "type": "string"
      +      },
      +      "simulatedMessage": {},
      +      "startedAt": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "state": {
      +        "enum": [
      +          "starting",
      +          "running",
      +          "completed",
      +          "stopped",
      +          "failed",
      +          "timeout",
      +          "interrupted"
      +        ],
      +        "type": "string"
      +      },
      +      "title": {
      +        "type": "string"
      +      },
      +      "transcript": {
      +        "items": {
      +          "additionalProperties": {},
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "transcriptExpired": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "state",
      +      "scenario",
      +      "direction",
      +      "revision",
      +      "title",
      +      "startedAt",
      +      "createdAt",
      +      "endedAt",
      +      "transcriptExpired",
      +      "transcript",
      +      "result",
      +      "simulatedMessage"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "error": {
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "message": {
      +        "type": "string"
      +      },
      +      "next_action": {
      +        "type": "string"
      +      },
      +      "operation_id": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "operation_id",
      +      "status"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Added

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare non-readonly, open-world, idempotent and non-destructive, and the description meaningfully extends that: it names LiveKit test rooms, warns that AI usage may be consumed, and enumerates what it explicitly will not do (dial, publish settings, invoke external tools). The notable gap is lifecycle behavior — with get_agent_test and get_agent_test_listener as siblings, an agent would benefit from knowing the call returns a test handle to poll rather than the result itself.

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, each carrying distinct information: what it does, the direction/scenario rule, and the cost/safety boundaries. Front-loaded with the core action and no filler.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the cost and no-side-effect boundaries are covered. But for a 7-parameter tool with 5 required fields and a nested object, the absence of any hint about the async lifecycle (poll with get_agent_test, cancel with stop_agent_test) and the meaning of request_id leaves real operational gaps.

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?

Schema description coverage is only 14%, so the description must carry weight and it only partially does: it clarifies the scenario/direction interaction and the preset-vs-custom split. It says nothing about number_id, revision, request_id (presumably an idempotency key), or the fields inside custom_scenario. responder_outcome is the one parameter the schema itself documents well.

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?

States a specific verb and resource: runs one isolated synthetic conversation against the active agent settings at a given revision. It also carves out scope against siblings by declaring it never dials a phone number, which separates it from place_call and end_call, and the 'test' framing separates it from get_agent_test/stop_agent_test.

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?

Gives a concrete conditional rule: outbound accepts preset or custom fictional scenarios, inbound requires custom_scenario. That is real routing guidance for the scenario/direction parameters. It stops short of naming a sibling alternative (e.g., place_call for real calls) or stating prerequisites such as the agent needing a completed configuration.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources