Skip to main content
Glama

Test an AI agent

test_agent

Ask an AI agent a question as a customer would, in a private preview no customer sees, whether or not it is deployed, and wait (up to about 25 seconds) for its answer. It never deploys the agent. With pending: true, read the answer with list_messages after a few seconds; don't ask again. When stillLearning is set, Aide is still reading the website and found nothing yet: tell the user, ask them meanwhile for the facts customers ask most and save each with add_knowledge_article, and test again after the minutes it gives. When sources is empty otherwise, the agent found nothing to answer from: add it with add_knowledge_article and test again. Show the user the reply; ask follow-ups with continue_agent_test.

Input Schema

NameRequiredDescriptionDefault
textYesThe customer's message.
agentIdYesThe agent id, from list_agents.
customerNoTest as an identified shopper, as the widget would identify them: `{ name, email, attributes }`.

Output Schema

NameRequiredDescriptionDefault
replyYes
pendingYes
sourcesYes
handedOverYes
stillLearningYes
conversationIdYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / customer
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Test as an identified shopper, as the widget would identify them: `{ name, email, attributes }`.",
      +  "properties": {
      +    "attributes": {
      +      "additionalProperties": {
      +        "maxLength": 1000,
      +        "type": "string"
      +      },
      +      "maxProperties": 50,
      +      "type": "object"
      +    },
      +    "email": {
      +      "format": "email",
      +      "maxLength": 254,
      +      "type": "string"
      +    },
      +    "name": {
      +      "maxLength": 120,
      +      "type": "string"
      +    }
      +  },
      +  "required": [],
      +  "type": "object"
      +}
  2. Changed2 schema fields changed
    • addedOutput schema / properties / stillLearning
      Added value: +{
      +  "properties": {
      +    "minutesLeft": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "pagesOutOf": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "pagesSoFar": {
      +      "type": "integer"
      +    },
      +    "site": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "tellUser": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "site",
      +    "pagesSoFar",
      +    "pagesOutOf",
      +    "minutesLeft",
      +    "tellUser"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "conversationId",
      -  "reply",
      -  "handedOver",
      -  "sources",
      -  "pending"
      -]New value: +[
      +  "conversationId",
      +  "reply",
      +  "handedOver",
      +  "sources",
      +  "pending",
      +  "stillLearning"
      +]
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "conversationId": {
      +      "type": "string"
      +    },
      +    "handedOver": {
      +      "type": "boolean"
      +    },
      +    "pending": {
      +      "type": "boolean"
      +    },
      +    "reply": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "sources": {
      +      "items": {
      +        "properties": {
      +          "title": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "title",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "conversationId",
      +    "reply",
      +    "handedOver",
      +    "sources",
      +    "pending"
      +  ],
      +  "type": "object"
      +}
  4. Added

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations it discloses the ~25 second wait, that the run is a private preview invisible to customers, and that it never deploys the agent — exactly the side-effect context an agent needs. The one flaw is the reference to 'pending: true', a parameter that does not exist in this tool's schema, which could mislead an agent trying to set it.

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?

Purpose, timeout, and no-deploy guarantee are front-loaded, and the subsequent sentences are conditional routing rules that each earn their place. It runs long, but the density of actionable branches justifies most of the length.

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?

With an output schema present, the description needn't explain return shape, yet it helpfully interprets the two response states (stillLearning, empty sources) and prescribes recovery. The stale 'pending' parameter reference is the only incompleteness against the actual schema.

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 coverage is 100% and the customer object is fully described in the schema, so the schema carries the parameter burden. The description adds only the framing of `text` as 'the customer's message' and does not explain agentId sourcing beyond what the schema says (from list_agents).

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 opens with a specific verb, resource, and execution context: ask an AI agent a question as a customer would, in a private preview, deployed or not. It explicitly separates itself from deploy_agent ('never deploys') and from continue_agent_test ('ask follow-ups with continue_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 Guidelines5/5

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

It gives explicit when-to-use branches: poll with list_messages when pending is true and do not re-ask; if stillLearning is set, collect facts via add_knowledge_article and retest after the stated minutes; if sources is empty, add knowledge and retest. It also names the follow-up tool (continue_agent_test) rather than leaving continuation implicit.

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.