Skip to main content
Glama

Prepare with buyer role-play

simulate_buyer_persona

Role-play upcoming B2B buyer meetings: simulate up to eight buyer personas asking real questions, then get a scored debrief on your answers and what to fix before the real call.

Instructions

Use this only when the person asks to talk with, or play out the meeting with, the buyers who'll be in the room. Andru writes a brief of what each person likely thinks going in (10 briefs a day), then plays them, one or several at once, in a Deal Prep session of 25 turns, asking what real buyers ask. Say "End role-play. How did I do?" for a scored debrief and what to take into the meeting. For the written brief alone, use get_pre_brief; it writes the same brief this session starts from. Paid. Check the price with quote before running.

Input Schema

NameRequiredDescriptionDefault
modeNomeetings = the user's calendar meetings in the next 7 days (free). brief = the free brief for a meeting (10 a day). opening = open a session ($5) from a brief_id, or with one buyer. reply = the founder's next message; speaker picks who answers. list = the user's six buyers (free).
roomNoWho's in the room, 1–8 people, each with persona (one of the six buyers) and an optional title and name.
stageNoThe deal's stage, 0–7.
meetingNoThe meeting in a sentence, when it isn't on the calendar.
messageNomode=reply: what the seller says to the buyer. "End role-play. How did I do?" ends with a debrief.
personaNoWhich of the user's six buyers to simulate (mode=list shows them, from their buying committee). Pick based on who the user is preparing to meet.
quoteIdNoOptional: the quote_id from quote, to pay the quoted price (held for 30 minutes).
speakerNoWho answers this turn (p1, p2…, from the brief).
stageIdNoBuyer journey stage (1=Researching, 2=Quantifying, 3=Exploring, 4=Comparing, 5=Business Case, 6=Implementing, 7=Advocating). Default: 3 (Exploring).
brief_idNoThe brief to open a session from.
situationNodiscovery, deal or customer_review.
meeting_idNoA meeting from mode=meetings.
session_idNoThe Deal Prep session to continue (returned by mode=opening). Required for mode=reply.
productNameNoProduct name. Defaults to the product in their ICP.
session_keyNoOptional idempotency key for opening a session: retrying with the same key never charges twice.
idempotencyKeyNoOptional: any unique string for this call. Retrying with the same key returns the first result and never charges twice.
maxAmountCentsNoOptional: the most this call may cost, in cents. If the price is higher, nothing runs and nothing is charged.
productDescriptionNoWhat the user's product does. Defaults to the product in their ICP.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.4.9
    • addedInput schema / properties / idempotencyKey
      Added value: +{
      +  "description": "Optional: any unique string for this call. Retrying with the same key returns the first result and never charges twice.",
      +  "type": "string"
      +}
    • addedInput schema / properties / maxAmountCents
      Added value: +{
      +  "description": "Optional: the most this call may cost, in cents. If the price is higher, nothing runs and nothing is charged.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / quoteId
      Added value: +{
      +  "description": "Optional: the quote_id from quote, to pay the quoted price (held for 30 minutes).",
      +  "type": "string"
      +}
  2. Changed14 schema fields changedv1.4.8
    • addedInput schema / properties / brief_id
      Added value: +{
      +  "description": "The brief to open a session from.",
      +  "type": "string"
      +}
    • addedInput schema / properties / meeting
      Added value: +{
      +  "description": "The meeting in a sentence, when it isn't on the calendar.",
      +  "type": "string"
      +}
    • addedInput schema / properties / meeting_id
      Added value: +{
      +  "description": "A meeting from mode=meetings.",
      +  "type": "string"
      +}
    • changedInput schema / properties / mode / description
      Previous value: -"opening = open a session ($5) and get the buyer's opening line. reply = send the seller's next message on session_id. list = available personas. Default: opening."New value: +"meetings = the user's calendar meetings in the next 7 days (free). brief = the free brief for a meeting (10 a day). opening = open a session ($5) from a brief_id, or with one buyer. reply = the founder's next message; speaker picks who answers. list = the user's six buyers (free)."
    • changedInput schema / properties / mode / enum
      Previous value: -[
      -  "opening",
      -  "reply",
      -  "list"
      -]New value: +[
      +  "meetings",
      +  "brief",
      +  "opening",
      +  "reply",
      +  "list"
      +]
    • changedInput schema / properties / persona / description
      Previous value: -"Which buyer to simulate. Pick based on who the user is preparing to meet."New value: +"Which of the user's six buyers to simulate (mode=list shows them, from their buying committee). Pick based on who the user is preparing to meet."
    • removedInput schema / properties / persona / enum
      Removed value: -[
      -  "CFO",
      -  "CTO",
      -  "COO",
      -  "VP Sales",
      -  "VP Engineering"
      -]
    • changedInput schema / properties / productDescription / description
      Previous value: -"What the user's product does. Infer from conversation context."New value: +"What the user's product does. Defaults to the product in their ICP."
    • changedInput schema / properties / productName / description
      Previous value: -"Product name. Infer from context."New value: +"Product name. Defaults to the product in their ICP."
    • addedInput schema / properties / room
      Added value: +{
      +  "description": "Who's in the room, 1–8 people, each with persona (one of the six buyers) and an optional title and name.",
      +  "items": {
      +    "properties": {
      +      "name": {
      +        "type": "string"
      +      },
      +      "persona": {
      +        "type": "string"
      +      },
      +      "title": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "persona"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / situation
      Added value: +{
      +  "description": "discovery, deal or customer_review.",
      +  "enum": [
      +    "discovery",
      +    "deal",
      +    "customer_review"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / speaker
      Added value: +{
      +  "description": "Who answers this turn (p1, p2…, from the brief).",
      +  "type": "string"
      +}
    • addedInput schema / properties / stage
      Added value: +{
      +  "description": "The deal's stage, 0–7.",
      +  "enum": [
      +    0,
      +    1,
      +    2,
      +    3,
      +    4,
      +    5,
      +    6,
      +    7
      +  ],
      +  "type": "number"
      +}
    • changedInput schema / properties / stageId / description
      Previous value: -"Buyer journey stage (1=Researching through 7=Advocating). Default: 3."New value: +"Buyer journey stage (1=Researching, 2=Quantifying, 3=Exploring, 4=Comparing, 5=Business Case, 6=Implementing, 7=Advocating). Default: 3 (Exploring)."
  3. Changed8 schema fields changedv1.4.1
    • addedInput schema / properties / message
      Added value: +{
      +  "description": "mode=reply: what the seller says to the buyer. \"End role-play. How did I do?\" ends with a debrief.",
      +  "type": "string"
      +}
    • changedInput schema / properties / mode / description
      Previous value: -"opening = buyer's opening message. list = available personas. Default: opening."New value: +"opening = open a session ($5) and get the buyer's opening line. reply = send the seller's next message on session_id. list = available personas. Default: opening."
    • changedInput schema / properties / mode / enum
      Previous value: -[
      -  "opening",
      -  "list"
      -]New value: +[
      +  "opening",
      +  "reply",
      +  "list"
      +]
    • addedInput schema / properties / session_id
      Added value: +{
      +  "description": "The Deal Prep session to continue (returned by mode=opening). Required for mode=reply.",
      +  "type": "string"
      +}
    • addedInput schema / properties / session_key
      Added value: +{
      +  "description": "Optional idempotency key for opening a session: retrying with the same key never charges twice.",
      +  "type": "string"
      +}
    • changedInput schema / properties / stageId / description
      Previous value: -"Buyer journey stage (0=Unaware through 7=Advocating). Default: 3."New value: +"Buyer journey stage (1=Researching through 7=Advocating). Default: 3."
    • changedInput schema / properties / stageId / enum
      Previous value: -[
      -  0,
      -  1,
      -  2,
      -  3,
      -  4,
      -  5,
      -  6,
      -  7
      -]New value: +[
      +  1,
      +  2,
      +  3,
      +  4,
      +  5,
      +  6,
      +  7
      +]
    • changedInput schema / required
      Previous value: -[
      -  "persona"
      -]New value: +[]
  4. First observedv1.4.0

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say it is not read-only, open-world and non-destructive; the description adds substantial context beyond that: free vs. paid modes, a 10-briefs-per-day cap, a 25-turn session limit, the exact phrase that ends the session and produces a scored debrief, and a pre-charge price check. These are exactly the operational facts an agent needs before invoking a paid, session-based tool.

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?

Front-loaded with the eligibility condition, then what the tool does, how to end it, the alternative, and the cost — a sensible ordering dense with signal. It is compact for an 18-parameter multi-mode tool, though a few clauses (the two pricing sentences, the quoted trigger phrase) could be tightened.

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?

For a complex multi-mode, paid, session-oriented tool with no output schema, the description covers the dominant flow (brief → play → debrief) and its cost gate. The secondary modes (meetings, list, brief) are only handled in the schema, which is acceptable at 100% coverage, but return values are not described at all and the description is silent on what a session response contains.

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 all 18 parameters carry their own descriptions, including mode enums, stage/stageId meanings, and idempotency behavior, so the schema does the heavy lifting. The description adds only light framing — that a session opens from a brief and continues via replies until the debrief phrase — rather than explaining parameter interactions beyond the schema. Baseline 3 is appropriate.

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 states a specific verb and resource — role-playing the buyers who will be in the room, with Andru writing a brief then playing them in a 25-turn Deal Prep session — and explicitly separates this from get_pre_brief, the written-brief-only sibling. An agent can tell this apart from every other tool in the list 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?

Gating is explicit: "Use this only when the person asks to talk with, or play out the meeting with, the buyers." An alternative is named with the condition that selects it (get_pre_brief for the brief alone), and the pricing precondition (check quote before running) is given. Nothing is left to inference.

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