Verboo

Example Conversations

Three real walkthroughs showing how Claude chains MCP tools end-to-end inside an actual conversation. Use them as a reference for what to ask and how the LLM responds.


Scenario 1: Build a sales agent from scratch and test it

Creates the assistant, sets up a lead-capture trigger with a webhook, and runs an end-to-end test using create_session + send_message.

UYou

Create an assistant "Bia: XYZ Store Sales" with an SDR prompt for a clothing store, in Portuguese, temperature 0.6. Then add a trigger that captures name, email, and phone when the customer wants to buy and POSTs them to https://api.lojaxyz.com/leads with header Authorization: Bearer SECRET_TOKEN.

CClaude

Three steps: assistant, trigger, webhook action.

▸ toolcreate_assistant
id 87
name        = "Bia: XYZ Store Sales"
prompt      = "You are Bia, the XYZ Store SDR. Qualify the lead, understand the need, and route to closing."
language    = "brazil-portuguese"
temperature = 0.6
▸ toolcreate_trigger
id 153
assistantId    = 87
name           = "captureLead"
description    = "Collects name, email, and phone when the customer shows purchase intent."
parametersJson = {
  "type": "object",
  "properties": {
    "name":  { "type": "string", "description": "Customer full name" },
    "email": { "type": "string", "description": "Customer email" },
    "phone": { "type": "string", "description": "Phone with area code" }
  },
  "required": ["name", "email", "phone"]
}
▸ toolcreate_action
created
assistantId = 87
triggerId   = 153
type        = "WEBHOOK"
actionJson  = {
  "url":     "https://api.lojaxyz.com/leads",
  "method":  "POST",
  "body":    "{\"name\":\"$name\",\"email\":\"$email\",\"phone\":\"$phone\"}",
  "headers": [{ "key": "Authorization", "value": "Bearer SECRET_TOKEN" }]
}

Done. Assistant 87, trigger 153, webhook configured. Want to run a test?

UYou

Yes. Simulate a customer who wants to buy a white M shirt: "Hi, I want to buy a white M shirt. My name is John Silva, john@email.com, 11999990000".

CClaude
▸ toolcreate_session
test_8a3f
assistant_id = 87
▸ toolsend_message
200 OK
session = "test_8a3f"
message = "Hi, I want to buy a white M shirt. My name is John Silva, john@email.com, 11999990000"

Bia confirmed the request and the captureLead trigger fired. The webhook was called successfully (HTTP 200). To see the full transcript I can run get_session("test_8a3f").


Scenario 2: Feegow appointment with parameter references

Shows how to reference trigger parameters inside actionJson, and how to chain two Feegow actions to resolve paciente_id from a CPF.

UYou

On assistant 42 (clinic), I want a scheduleAppointment trigger that collects the patient CPF, professional ID, procedure ID, date (YYYY-MM-DD) and time (HH:MM), and creates the appointment in Feegow.

CClaude

I'll create the trigger with the 5 parameters and the FEEGOW APPOINTMENT_CREATE action. Remember that inside actionJson the field values are trigger parameter names, not placeholders.

▸ toolcreate_trigger
id 211
assistantId    = 42
name           = "scheduleAppointment"
description    = "Creates a Feegow appointment after collecting CPF, professional, procedure, date, and time."
parametersJson = {
  "type": "object",
  "properties": {
    "patientCPF":     { "type": "string", "description": "Patient CPF, digits only" },
    "professionalId": { "type": "number", "description": "Feegow professional ID" },
    "procedureId":    { "type": "number", "description": "Feegow procedure ID" },
    "date":           { "type": "string", "description": "Date in YYYY-MM-DD format" },
    "time":           { "type": "string", "description": "Time in HH:MM format" }
  },
  "required": ["patientCPF", "professionalId", "procedureId", "date", "time"]
}
▸ toolcreate_action
created
assistantId = 42
triggerId   = 211
type        = "FEEGOW"
actionJson  = {
  "type": "APPOINTMENT_CREATE",
  "data": {
    "paciente_id":     "patientCPF",
    "profissional_id": "professionalId",
    "procedimento_id": "procedureId",
    "data":            "date",
    "horario":         "time",
    "local_id":        1
  }
}
⚠️Two important caveats
  1. local_id is hard-coded as 1. If the clinic has multiple units, add unitId to the trigger parameters and replace it with "local_id":"unitId".
  2. Feegow requires a numeric paciente_id, not a CPF. The right pattern is to add a FEEGOW PATIENT_SEARCH action before this one (it takes cpf and returns the ID) so the LLM chains them. Want me to add it?
UYou

Yes, add the PATIENT_SEARCH first.

CClaude
▸ toolcreate_action
id 488
assistantId = 42
triggerId   = 211
type        = "FEEGOW"
actionJson  = {
  "type": "PATIENT_SEARCH",
  "data": { "paciente_cpf": "patientCPF", "photo": false }
}

Trigger 211 now has 2 actions executed in order: first PATIENT_SEARCH resolves paciente_id from the CPF, then APPOINTMENT_CREATE uses the returned ID.


Scenario 3: Debug a production conversation

Walks through a full incident cycle: find the problematic session using the history tools, identify the root cause, fix the assistant prompt, and validate with a test.

UYou

I got a complaint that assistant 42 sent a wrong link to a customer this afternoon. Find the session and tell me what happened.

CClaude

I'll list today's sessions for assistant 42 and search for the link.

▸ toollist_generative_sessions
18 sessions
assistantId = 42
perPage     = 20
▸ toollist_generative_messages
match at 14:32
assistantId = 42
perPage     = 50
// match: link "lojaxyz.com/promocao-velha"
// session: whatsapp:5511988887777
▸ toolget_session
12 messages
session = "whatsapp:5511988887777"

The flow: the customer asked about the Black Friday deal and the assistant replied citing last year's promo URL. Looking at the assistant config:

▸ toolget_assistant
200 OK
id = 42

The prompt has a hard-coded line: "Our current promo is at https://lojaxyz.com/promocao-velha". That's what needs to go.

UYou

Drop that line from the prompt and add an instruction to always look up active promos in the knowledge base.

CClaude
▸ toolupdate_assistant
updated
id     = 42
prompt = "...original prompt without the hard-coded URL, now ending with:
         'For any question about promotions, look it up in the
          knowledge base: never quote URLs from memory.'"

Want me to run a test now to confirm it'll fetch from the KB instead of repeating the stale link?

UYou

Run it.

CClaude
▸ toolcreate_session
test_re9c
assistant_id = 42
▸ toolsend_message
200 OK
session = "test_re9c"
message = "Hi, what's your Black Friday promo?"

Reply: "Let me check the current promo...": the assistant fired the knowledge-base lookup and returned the correct link. Bug fixed.