Skip to main content
Glama

contact_operator

Escalates to a human operator when automated tools can't answer: stuck vendor issues, billing questions, or account status. Files a support ticket, notifies the operator, and deduplicates retries.

Instructions

Reach a human operator — for anything list_messages/infrastructure_status can't answer (a stuck vendor issue, a billing question, an account-level ask). Inputs: body (1-2000 chars), urgency ('normal' | 'needs_human', default 'normal'). Files a support ticket and notifies the operator; returns { ticketId, note, deduplicated }. Works in every account state a tenant token still authenticates in, including dunning-suspended, canceling and canceled — this is exactly the channel for 'why is my account suspended?'. The ONE exception is an admin-TERMINATED (abuse) account, whose token is rejected at auth with 401 before this tool runs. The operator's reply arrives as a message on THIS account (poll list_messages / infrastructure_status.messages[] — there is no separate reply-fetch call). Sending the IDENTICAL body AND urgency again within an hour returns the SAME ticketId and does not file a second ticket or send a second alert (deduplicated: true on that response; false when a new ticket was actually filed) — no separate idempotency key is needed to retry a dropped response. This is a TEXT match, not an intent match: the platform cannot tell a deliberate retry from a coincidentally-identical NEW message, so a genuinely new ask with the same wording collapses into the earlier ticket just as silently — vary the wording (or raise urgency, which is always treated as an escalation and files a new ticket) if you have something new to say. 'needs_human' also bypasses the ~10-minute ops-email throttle so an urgent message is pushed immediately. Rate-limited to 5 calls/hour per tenant — a 429 names retryAfter (seconds) when hit.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYes
urgencyNonormal
Behavior5/5

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

Annotations provide only destructiveHint=false and a title, so the description must carry the behavioral burden — and it does: it discloses that a ticket is filed and an operator notified, the dedupe contract, rate limits with retryAfter, 401 rejection for admin-terminated accounts, the ops-email throttle bypass, and that replies arrive as a message on this account (with no separate reply-fetch call). Nothing contradict the annotations.

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?

Long (roughly 350 words), but the purpose is front-loaded in the first sentence, which is exactly where agents make route decisions. The dedupe section is the one place that runs, passing a few sentences to land 'text match, not intent match' — it could be tightened. Still, every sentence carries non-redundant behavioral detail; there is no filler.

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

Completeness5/5

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

Even with no output schema, the description supplies the return shape ({ ticketId, note, deduplicated }), the dedupe idempotency behavior, the rate-limit response shape (429 with state that provides retryAfter), the auth-edge exception, the account-state compatibility, and the reply-delivery mechanism. For an agent need to call this correctly, nothing is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description fully owns parameter semantics. It explains body as the message text (1-2000 chars), urgency as the 'normal' vs 'needs_human' values with default, and, crucially, the escape semantics of 'needs_human' always filing a new ticket even within the dedupe window. The explanation also reveals that both body and urgency together form the dedupe key, which is well beyond what the schema reveals.

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?

Opens with a precise verb+resource, 'Reach a human operator', and immediately narrows the purpose as the catch-all for what list_messages and infrastructure_status cannot answer, with concrete example scenarios (billing, stuck vendor, account-level ask). It is instantly distinguishable from the sibling set even without opening any schema.

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?

Names the alternatives (list_messages / infrastructure_status) and states the conditions that route to this tool: issues those tools cannot answer, and specifically the 'why is my account suspended?' case. It also gives clear when-not-to-send guidance: the text-match dedupe means a genuine new ask with identical wording must be rewritten or escalated.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/YS-projectcalc/agent-cold-email'

If you have feedback or need assistance with the MCP directory API, please join our Discord server