Skip to main content
Glama

inviteTesters

Destructive

Invites people to join this beta project as testers. TWO-STEP TOOL: call it WITHOUT confirmationToken first — nothing is sent and you receive a preview plus a confirmationToken. Show the preview to the user; only after the user explicitly approves, call again with the SAME arguments plus the confirmationToken. Tokens are single-use, expire after a few minutes, and are bound to the people resolved and the beta project's lifecycle state at preview time: if either changes before the confirm, it fails asking for a fresh preview. Name people either by email (invitees, addresses supplied by the user) or, for people who are already testers somewhere in this workspace, by their userId (userIds, from listOrganizationTesters — since tester emails are never exposed here, this is how you re-invite testers from another beta project; its productIds field shows which beta projects each tester already belongs to). The two combine freely; at least one is required. Duplicates are resolved server-side: someone who already belongs to this beta comes back as "alreadyTester" and an email that already holds a pending invitation comes back as "invited" WITHOUT being emailed again (use pingTesters to re-send those). An invitee whose address cannot receive mail is still "invited" but carries emailDelivery "undeliverable" and is counted in undeliverable: the invitation exists, no email went out, and pinging will not help, so cancel it and invite the corrected address. While the beta project is still a DRAFT the invitations are created but no emails go out; they are only sent once the beta is published or running. Finished and archived beta projects refuse invitations. When the beta has an activated custom invitation email template (getProductOverview customInvitationEmail, configured with setInvitationEmail), the invitation emails use it. Results for userId-sourced people are reported by name and userId, never by email; the pending invitation they leave behind is likewise reported by id and name in listPendingInvitations, and pingTesters and cancelInvitations take that id.

Input Schema

NameRequiredDescriptionDefault
userIdsNouserId values of existing workspace testers to invite, as returned by listOrganizationTesters. Use this for people whose email you do not know (tester emails are not exposed over this connection).
inviteesNoThe people to invite by email address. Use real email addresses supplied by the user; never fabricate them.
productIdYesID of the beta project to query. Get valid IDs from the listProducts tool.
confirmationTokenNoTwo-step confirmation token. Omit on the first call to receive a preview plus a token; then call again with the SAME arguments plus this token to execute. Single-use and short-lived.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=true; the description adds the full behavioral picture: two-step preview/confirm gating, single-use short-lived tokens bound to resolved people and beta lifecycle state, no emails in DRAFT, refusal on finished/archived betas, server-side dedupe returning 'alreadyTester'/'invited' without re-emailing, undeliverable handling, and custom template usage. This is far more than the annotations convey.

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?

The two-step procedure is front-loaded and nearly every clause carries load-bearing detail (token binding, dedupe outcomes, DRAFT suppression). It is dense and long, with several long run-on sentences and parentheticals that could be split for readability, but little is genuinely redundant.

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?

For a 4-parameter mutation with no output schema, the description covers preconditions, the confirmation handshake, per-person result states (alreadyTester, invited, emailDelivery 'undeliverable'), and downstream follow-ups (pingTesters, cancelInvitations, listPendingInvitations). Nothing an agent needs to call it correctly is missing.

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 coverage is already 100%, but the description adds meaning the schema does not: userIds and invitees 'combine freely' with at least one required (a union constraint not expressible in the schema), why userIds exist (tester emails are never exposed), and how confirmationToken interacts with identical arguments on the second call.

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 ('Invites people to join this beta project as testers') and distinguishes itself from nearby siblings by naming inviteApplicants-adjacent tools (pingTesters, cancelInvitations, listOrganizationTesters). An agent can tell exactly which operation this performs without opening the 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?

Explicitly prescribes the call sequence (call without confirmationToken first, show preview, get user approval, then re-call with the token) and routes agents to alternatives by condition: use userIds for existing workspace testers from listOrganizationTesters, pingTesters to re-send pending invitations, cancelInvitations for undeliverable ones. It also states when the tool refuses (finished/archived) and when emails are suppressed (DRAFT state).

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