> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mka1.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Advanced conversations with tools

> A complete 12-turn dialogue with web search, corrections, contradictions, and coherence verification — showing every request and full response.

This recipe walks through a single 12-turn conversation from start to finish.
The user plans a trip, changes their mind, corrects a mistake, asks ambiguous questions, triggers a web search, and requests a final summary that must reflect every change.
Every request and every full response is shown — nothing is truncated.

The model used is `meetkai:functionary-pt` with `web_search` and `history` tools enabled.

For the basic conversation CRUD pattern, see [manage conversations](/docs/conversations).

## Create the conversation

<CodeGroup>
  ```bash CLI theme={null}
  mka1 llm conversations create \
    --body '{ "metadata": { "session_id": "advanced-tools-demo", "scenario": "edge-cases" } }' \
    -H 'X-On-Behalf-Of: <end-user-id>'
  ```

  ```ts OpenAI SDK theme={null}
  import OpenAI from 'openai';

  const openai = new OpenAI({
    apiKey: '<mka1-api-key>',
    baseURL: 'https://apigw.mka1.com/api/v1/llm/',
    defaultHeaders: { 'X-On-Behalf-Of': '<end-user-id>' },
  });

  const conv = await openai.conversations.create({
    metadata: { session_id: 'advanced-tools-demo', scenario: 'edge-cases' },
  });
  // conv.id → "conv_0f31..."
  ```

  ```ts MKA1 SDK theme={null}
  import { SDK } from '@meetkai/mka1';

  const mka1 = new SDK({
    bearerAuth: `Bearer ${YOUR_API_KEY}`,
  });

  const conv = await mka1.llm.conversations.create({
    metadata: { session_id: 'advanced-tools-demo', scenario: 'edge-cases' },
  }, { headers: { 'X-On-Behalf-Of': '<end-user-id>' } });
  ```

  ```csharp C# SDK theme={null}
  using MeetKai.MKA1;
  using MeetKai.MKA1.Types.Components;

  var sdk = new SDK(bearerAuth: "Bearer YOUR_API_KEY");

  var conv = await sdk.Llm.Conversations.CreateAsync(new CreateConversationRequest()
  {
      Metadata = new Dictionary<string, string>
      {
          { "session_id", "advanced-tools-demo" },
          { "scenario", "edge-cases" },
      },
  });
  // conv.ConversationObject!.Id → "conv_0f31..."
  ```

  ```python Python SDK theme={null}
  from mka1 import SDK

  sdk = SDK(bearer_auth="Bearer YOUR_API_KEY")

  conv = sdk.llm.conversations.create(
      metadata={"session_id": "advanced-tools-demo", "scenario": "edge-cases"},
  )
  # conv.id → "conv_0f31..."
  ```

  ```bash bash theme={null}
  curl https://apigw.mka1.com/api/v1/llm/conversations \
    --request POST \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <mka1-api-key>' \
    --header 'X-On-Behalf-Of: <end-user-id>' \
    --data '{ "metadata": { "session_id": "advanced-tools-demo", "scenario": "edge-cases" } }'
  ```
</CodeGroup>

Every turn below passes `conversation: conv.id`. The gateway maintains state — you never resend history.

## Turn 1 — establish context

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'I am planning a week-long trip to Japan with my partner. We want to split time between Tokyo and Kyoto. Budget is moderate — not backpacker, not luxury.',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

**State established:** destination = Japan (Tokyo + Kyoto), duration = 1 week, budget = moderate, travelers = 2.

<Accordion title="Full response (1,327 output tokens)">
  Here's a suggested itinerary and tips for your Japan trip, balancing cultural experiences, convenience, and budget considerations:

  ### **Tokyo (4 Days)**

  **Must-See Attractions:**

  * **Shibuya Crossing** (iconic street crossing) + **Shibuya Sky** (sky deck view).
  * **Asakusa** (traditional vibe, Senso-ji Temple).
  * **Akihabara** (electronics, anime culture, budget-friendly eats).
  * **Shinjuku Gyoen** (largest park in Tokyo, free entry).
  * **TeamLab Borderless** (digital art museum – book tickets in advance).

  **Budget Tips:**

  * **Stay:** Mid-range hotels in Shinjuku or Shibuya (e.g., Hotel Gracery Shinjuku).
  * **Transport:** Tokyo Subway Pass (72h/96h) for unlimited travel.
  * **Food:** Eat at izakayas (e.g., *Omoide Yokocho*) or sushi counters (e.g., *Sushi Dai*).

  ### **Kyoto (4 Days)**

  **Must-See Attractions:**

  * **Kinkaku-ji** (Golden Pavilion) – buy tickets online to avoid queues.
  * **Fushimi Inari Taisha** (thousands of torii gates).
  * **Arashiyama Bamboo Grove** + Togetsukyo Bridge.
  * **Gion** (geisha district, evening stroll).
  * **Nishiki Market** (sample local snacks like matcha treats).

  **Budget Tips:**

  * **Stay:** Ryokan-style guesthouses (e.g., *Kanra Kyoto*).
  * **Transport:** Kyoto City Bus & Subway Pass (1 day/3 days).
  * **Food:** Kaiseki meals at *Ippudo* (ramen) or *Omen* (tempura).

  ### **General Tips**

  * **JR Pass:** Rent for 7 days (covers Tokyo-Kyoto Shinkansen).
  * **Transport Between Cities:** Take the Shinkansen (2h30m) – reserve seats via Japan Travel.
  * **Cash:** Carry ¥10,000-20,000 for small purchases (many places don't accept cards).
</Accordion>

## Turn 2 — add preferences

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'We arrive on a Saturday morning and leave the following Sunday. We like temples, street food, and walking neighborhoods. We do not want guided tours.',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

**State updated:** arrival = Saturday, departure = following Sunday, interests = temples + street food + walking, anti-preference = no guided tours.

<Accordion title="Full response (1,837 output tokens)">
  Here's a tailored 7-day itinerary focusing on temples, street food, and walkable neighborhoods, with seamless transport and budget-friendly options:

  ### **Day 1: Saturday – Tokyo Arrival & Asakusa (Evening)**

  * **Afternoon:** Check-in to hotel (Shinjuku/Shibuya area) and stroll **Shibuya Crossing** + **Shibuya Sky**.
  * **Evening:**
    * **Asakusa**: Walk to Senso-ji Temple, explore Nakamise Street (street food like *taiyaki* and *tamagoyaki*).
    * **Dinner**: *Omoide Yokocho* (Shinjuku) for izakaya-style snacks and drinks.

  ### **Day 2: Sunday – Temples & Hidden Gems**

  * **Morning**: **Meiji Shrine** (serene forested temple) + **Yanaka Ginza** (traditional shopping street).
  * **Afternoon**: **Lunch**: *Sushi Dai* (Tsukiji Outer Market) for fresh sushi at counter. **Shinjuku Gyoen** (free admission).
  * **Evening**: **Akihabara**: Explore electronics stores and sample *tamagoyaki* from street vendors.

  ### **Day 3: Monday – Street Food & Culture**

  * **Morning**: **Ameya-Yokocho** (Ueno): Try *menchi katsu* and *okonomiyaki*. Visit the Tokyo National Museum.
  * **Afternoon**: **Shibuya**: Walk up Scramble Crossing and relax at Shibuya Sky.
  * **Evening**: **Roppongi**: Explore art galleries and street food at *Roppongi Night Market*.

  ### **Day 4: Tuesday – Tokyo to Kyoto (Shinkansen)**

  * **Morning**: Shinkansen: Take the Nozomi (2h30m) to Kyoto.
  * **Afternoon**: **Arashiyama**: Walk through the bamboo grove and visit **Tenryu-ji Temple**.
  * **Evening**: **Nishiki Market**: Sample *yuba* (tofu skin) and *matcha* treats.

  ### **Day 5: Wednesday – Kyoto Temples & Zen Gardens**

  * **Morning**: **Kinkaku-ji** (Golden Pavilion). **Ryoan-ji** (Zen rock garden).
  * **Afternoon**: **Fushimi Inari Taisha**: Hike the iconic torii gates trail.
  * **Evening**: **Gion**: Stroll the geisha district and try *kushikatsu* (deep-fried skewers).

  ### **Day 6: Thursday – Hidden Temples & Local Life**

  * **Morning**: **Tofuku-ji** + **Gion Corner** (crafts and snacks).
  * **Afternoon**: **Nijo Castle** (UNESCO site) + **Kamishichiken** (artisan district).
  * **Evening**: **Philosopher's Path**: Walk along the canal.

  ### **Day 7: Friday – Kyoto Departure**

  * **Morning**: **Kiyomizu-dera** (temple with panoramic views).
  * **Afternoon**: Explore *Higashiyama* or *Kamogawa* Riverwalk. Transfer to airport.
</Accordion>

## Turn 3 — ask for structured plan

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'Can you give us a day-by-day plan? Start with Tokyo.',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

<Accordion title="Full response (1,843 output tokens)">
  Here's a detailed day-by-day plan for your Tokyo days (Days 1–4), focusing on temples, street food, and walkable neighborhoods:

  ### **Day 1: Saturday – Tokyo Arrival & Asakusa (Evening)**

  **Morning:** Check-in: Hotel in Shinjuku or Shibuya. Shibuya Crossing: Walk across the iconic scramble. Shibuya Sky: Book tickets online for sunset views (¥2,000–¥3,000).

  **Afternoon:** Lunch: *Taito* (Shibuya) – try melon pan and matcha soft serve. Nezu Shrine: Walk through the forested temple (free admission).

  **Evening:** Asakusa: Senso-ji Temple – enter through the Kaminarimon Gate. Nakamise Street: *taiyaki* (fish-shaped pastry) and *tamagoyaki* (rolled omelet). Dinner: *Omoide Yokocho* (Shinjuku) – izakaya snacks and drinks.

  ### **Day 2: Sunday – Temples & Hidden Gems**

  **Morning:** Meiji Shrine: Quiet forested sanctuary. Yanaka Ginza: Traditional shopping street (*menchi katsu* from street vendors).

  **Afternoon:** Lunch: *Sushi Dai* (Tsukiji Outer Market) – fresh sushi at the counter (¥1,500–¥2,500). Shinjuku Gyoen: Stroll the park.

  **Evening:** Akihabara: Electronics stores and *tamagoyaki* from street carts. Dinner: *Ichiran Ramen* (Shibuya) – customize your ramen (¥1,000–¥1,500).

  ### **Day 3: Monday – Street Food & Culture**

  **Morning:** Ameya-Yokocho (Ueno): *menchi katsu*, *okonomiyaki*, *taiyaki*. Tokyo National Museum.

  **Afternoon:** Lunch: *Ramen Street* (Shibuya). Shibuya Sky for evening views.

  **Evening:** Roppongi Night Market: Street food and art galleries.

  ### **Day 4: Tuesday – Tokyo to Kyoto (Shinkansen)**

  **Morning:** Breakfast: *Melting Pot* (Shibuya) – crepes. Shinkansen: Nozomi (2h30m) to Kyoto (JR Pass covers this).

  **Afternoon:** Arashiyama: Bamboo grove. Tenryu-ji Temple (UNESCO site). Lunch: *Kaiseki* at *Ippudo* or *Omen*.

  **Evening:** Nishiki Market: *yuba* and *matcha* treats.
</Accordion>

## Turn 4 — contradiction: flip preferences

The user now **contradicts** their Turn 2 preference for temples.

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'Actually, forget the temples. We are more interested in nightlife, live music, and late-night food. Revise the Tokyo days.',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

**Coherence test:** The model must drop all temple recommendations from the Tokyo days and replace them with nightlife venues. It must also acknowledge the shift.

<Accordion title="Full response (1,340 output tokens)">
  Here's a revised Tokyo itinerary focused on nightlife, live music, and late-night food:

  ### **Day 1: Saturday – Tokyo Arrival & Shinjuku Golden Gai**

  **Evening:** Shibuya Scramble Crossing. Shibuya Sky for sunset views. Dinner: *Sushi Dai* (Tsukiji) – fresh sushi (¥1,500–¥2,500).

  **Nightlife:** Shinjuku Golden Gai: Explore tiny bars and live music venues. Late-Night Eats: *Omoide Yokocho* (Shinjuku) – izakaya snacks.

  ### **Day 2: Sunday – Akihabara & Robot Restaurant**

  **Evening:** Akihabara Den Den Town: Neon-lit arcades and themed bars. Robot Restaurant: Over-the-top show (¥4,000–¥6,000).

  **Nightlife:** Golden Gai: Return for intimate bars. Late-Night Eats: Tsukiji Night Market – grilled skewers.

  ### **Day 3: Monday – Shibuya & Omoide Yokocho**

  **Evening:** Shibuya Crossing at night. Dinner: *Izakaya Taku* (Shibuya) – grilled chicken and beers.

  **Nightlife:** Omoide Yokocho dive izakayas. Live Music: Shibuya Club.

  ### **Day 4: Tuesday – Tokyo to Kyoto**

  **Morning:** Shinkansen to Kyoto. **Afternoon:** Arashiyama bamboo grove, Tenryu-ji Temple.

  **Nightlife in Kyoto:** Pontocho Alley: bars and *kushikatsu*. Live Music: Gion Jazz Bar.
</Accordion>

The model replaced all temple activities in Tokyo days with bars, clubs, and late-night food — while keeping the Kyoto transit day intact.

## Turn 5 — correction: fix trip duration

The user now **corrects** a factual detail from Turn 1.

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'Wait — I said a week but I actually only have 5 days total, not 8. Saturday to Wednesday. Adjust the plan.',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

**Coherence test:** The model must compress from 7–8 days to exactly 5 (Saturday–Wednesday), keep the nightlife focus from Turn 4, and drop the temple focus from Turn 2.

<Accordion title="Full response (2,108 output tokens)">
  Here's a revised 5-day itinerary (Saturday to Wednesday) focused on nightlife, live music, and late-night food:

  ### **Day 1: Saturday – Tokyo Arrival & Shinjuku**

  **Evening:** Shibuya Scramble Crossing. Shibuya Sky sunset views. Dinner: *Sushi Dai* (Tsukiji).

  **Nightlife:** Shinjuku Golden Gai tiny bars. Late-Night Eats: *Omoide Yokocho*.

  ### **Day 2: Sunday – Akihabara & Robot Restaurant**

  **Evening:** Akihabara Den Den Town: arcades and themed bars. Robot Restaurant.
  Dinner: *Ramen Street* (Shibuya).

  **Nightlife:** Golden Gai. Live Music: Shibuya Club.

  ### **Day 3: Monday – Tokyo to Kyoto (Shinkansen)**

  **Morning:** Breakfast at *Melting Pot*. Shinkansen to Kyoto.
  **Afternoon:** Arashiyama bamboo grove, Tenryu-ji Temple. Lunch: *Kaiseki*.

  **Nightlife in Kyoto:** Pontocho Alley. Live Music: Gion Jazz Bar.

  ### **Day 4: Tuesday – Kyoto Nightlife**

  **Evening:** Gion geisha district, *kushikatsu*. Kamo River riverside bars.
  Dinner: *Izakaya Taku*.

  **Nightlife:** *Ritz Bar* (jazz) or *Live House* (rock/indie). Late-Night Eats: Nishiki Market.

  ### **Day 5: Wednesday – Kyoto Departure**

  **Morning:** Explore Higashiyama or Kamogawa Riverwalk.
  **Afternoon:** Lunch: *Tempura Kaniwake*. Transfer to airport.

  **Key Adjustments:** JR Pass (¥35,000) covers Shinkansen + local transport. Budget: drinks ¥500–¥3,000, food ¥1,000–¥3,000/person.
</Accordion>

The model correctly compressed to 5 days, kept nightlife, and dropped the temple emphasis — reflecting both the Turn 4 contradiction and the Turn 5 correction.

## Turn 6 — ambiguity: vague reference

The user makes a deliberately **ambiguous** request.

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'What about that place you mentioned earlier? Can we fit it in?',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

**Coherence test:** The model cannot know which "place" the user means. A coherent response should either ask for clarification or list the candidates from earlier turns.

<Accordion title="Full response (876 output tokens)">
  Let me clarify which specific place you're referring to! Based on our conversation, here are a few notable spots I mentioned earlier that could be adjusted into your 5-day plan:

  ### Possible Adjustments

  1. **TeamLab Borderless** (Tokyo): Digital art museum in Odaiba (add 2–3 hours to your Tokyo days).
  2. **Kinkaku-ji** (Kyoto): Golden Pavilion – requires a morning/afternoon slot.
  3. **Fushimi Inari Taisha** (Kyoto): Torii gates trail – ideal for an early morning hike before Kyoto's nightlife.
  4. **Shibuya Sky** (Tokyo): Sunset views – already included, but could extend time there.

  ### How to Fit It In

  * **If you want TeamLab Borderless**: Add it to Day 2 (Tokyo) before the Robot Restaurant.
  * **If you want Kinkaku-ji**: Shift the Arashiyama visit to Day 4 and add Kinkaku-ji to Day 4 afternoon.
  * **If you want Fushimi Inari Taisha**: Start Day 4 in Kyoto with a sunrise hike, then proceed to nightlife later.

  Let me know which spot you'd like to prioritize, and I'll adjust the schedule!
</Accordion>

The model correctly identified the ambiguity, listed four candidate places from earlier turns, and asked the user to choose — rather than guessing.

## Turn 7 — web search tool call

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'Search the web for the best live jazz bars in Tokyo that are open late.',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

The model used the `web_search` tool to find real venues, then presented results.

<Accordion title="Full response (2,244 output tokens)">
  Here's a curated list of Tokyo's best late-night jazz bars:

  ### Top Late-Night Jazz Bars in Tokyo

  1. **Pit Inn (Shinjuku)**: Legendary underground venue hosting iconic Japanese jazz musicians since the 1970s. Shows often run until 1:00–2:00 AM.

  2. **Salt and Peanuts (Shibuya)**: Classic jazz club with a retro vibe, featuring both international and local talent. Operates until 12:00–1:00 AM.

  3. **Alfie Jazz House (Shibuya)**: Intimate bar with live jazz nightly, specializing in trad jazz and swing. Open until 2:00–3:00 AM.

  4. **Jazz Spot Intro (Shinjuku)**: Small, budget-friendly spot with experimental and fusion jazz. Late shows until 1:00 AM.

  ### How to Fit These into Your 3 Tokyo Days

  * **Day 1 (Saturday)**: After Shibuya Sky, head to **Pit Inn**.
  * **Day 2 (Sunday)**: Post-Robot Restaurant, try **Salt and Peanuts**.
  * **Day 3 (Monday)**: Before the Shinkansen, unwind at **Alfie Jazz House**.

  ### Budget & Logistics

  * Entry Fees: ¥1,000–¥3,000 (covers cover charge + 1 drink).
  * Transport: All venues are walkable from Shibuya/Shinjuku stations.
</Accordion>

## Turn 8 — integrate search results into plan

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'Pick the top two from those results and add them to our Tuesday night.',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

**Coherence test:** The model must select from Turn 7's search results and integrate them into the correct day in the Turn 5 itinerary. But Tuesday in the 5-day plan is Day 4 (Kyoto) — the model must reconcile this.

<Accordion title="Full response (1,860 output tokens)">
  Here's your updated itinerary with **Pit Inn** and **Salt and Peanuts** added to Tuesday night (Tokyo):

  ### Revised Day 3: Tuesday – Tokyo Nightlife (Jazz Bars)

  **Evening:**

  * **Pit Inn (Shinjuku)**: Legendary underground venue with shows until 2:00 AM. Arrive by 7:30 PM.
  * **Salt and Peanuts (Shibuya)**: Classic jazz club with late-night sets (until 1:00 AM). Order the "Jazz & Cocktails" set (¥4,000–¥6,000).

  **Transport:** Walk from Pit Inn to Salt and Peanuts (15-minute walk via Shinjuku Station).

  ### Adjustments to Your Schedule

  1. **Shinkansen to Kyoto**: Move to **Wednesday morning** (8:00 AM) to accommodate Tuesday night's jazz bars.
  2. **Kyoto Time**: Wednesday Afternoon: Arashiyama and Nishiki Market. Wednesday Night: Pontocho Alley.

  ### Budget

  * Pit Inn: ¥1,500–¥3,000 (cover + 1 drink).
  * Salt and Peanuts: ¥2,000–¥4,000 (cover + 1 drink).
</Accordion>

The model selected two venues from Turn 7, recognized that Tuesday needed rescheduling, and adjusted the Kyoto transit accordingly.

## Turn 9 — back-reference: recall original state

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'Remind me — what was our original budget level? And did we originally want temples or nightlife?',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

**Coherence test:** The model must recall Turn 1 state (moderate budget, temples) and acknowledge the Turn 4 shift to nightlife.

<Accordion title="Full response (510 output tokens)">
  Your original plan was a **moderate budget** (mid-range hotels, local transport passes, and dining at izakayas/ramen spots). You initially prioritized **temples** but later shifted focus to **nightlife, live music, and late-night food**. The current itinerary reflects your updated preference for Tokyo's nightlife and Kyoto's vibrant streets.

  Need to revert to temple-focused days or keep the nightlife-centric plan? Let me know!
</Accordion>

Correct on both counts: moderate budget (Turn 1), originally temples (Turn 2), shifted to nightlife (Turn 4).

## Turn 10 — state verification: dates and cities

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'How many days is our trip now? List the dates and which city each day.',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

**Coherence test:** Must reflect the Turn 5 correction (5 days, Saturday–Wednesday) and the Turn 8 schedule adjustment (jazz bars on Monday, Kyoto pushed).

<Accordion title="Full response (1,578 output tokens)">
  Your trip is **5 days total**, with the following breakdown:

  | Day | Date      | City  | Focus                                           |
  | --- | --------- | ----- | ----------------------------------------------- |
  | 1   | Saturday  | Tokyo | Arrival, Shibuya Sky, Shinjuku Golden Gai       |
  | 2   | Sunday    | Tokyo | Akihabara, Robot Restaurant, Shinjuku nightlife |
  | 3   | Monday    | Tokyo | Jazz bars (Pit Inn + Salt and Peanuts)          |
  | 4   | Tuesday   | Kyoto | Arashiyama, Nishiki Market, Pontocho Alley      |
  | 5   | Wednesday | Kyoto | Kiyomizu-dera, Higashiyama, transfer to airport |

  **Key Adjustments:** Shifted from temples to nightlife/live music. Budget: Still moderate (JR Pass, mid-range hotels, izakayas).
</Accordion>

Correct: 5 days (reflecting Turn 5 correction), nightlife focus (Turn 4), jazz bars on Monday (Turn 8 adjustment).

## Turn 11 — new constraint: vegetarian partner

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'My partner is vegetarian. Flag any restaurant suggestions that might be a problem and suggest alternatives.',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

**Coherence test:** The model must review its own prior restaurant recommendations across all earlier turns and flag the ones with meat/seafood.

<Accordion title="Full response (1,382 output tokens)">
  Here's a review of the itinerary with vegetarian-friendly adjustments:

  **Day 1: Saturday – Tokyo**

  * *Omoide Yokocho*: Izakayas often serve meat/seafood.
    * Vegetarian options: *Edamame*, *Miso Soup* (without meat), *Tofu* dishes.
    * Alternative: *Shibuya Vegan* (vegan izakaya).

  **Day 2: Sunday – Tokyo**

  * *Ramen Street*: Vegetarian options: *Shoyu Ramen* (soy sauce broth, no meat), *Vegetable Ramen*.
    * Alternative: *Afuri* (shoyu-based with optional toppings).
  * *Robot Restaurant*: Vegetarian options: *Vegetable Tempura*, *Soba Noodles*.

  **Day 3: Monday – Tokyo**

  * *Jazz Bars (Pit Inn & Salt and Peanuts)*: Vegetarian options: *Edamame*, *Vegetable Tempura*.
    * Alternative: *Veggie Bar* (Shibuya) – fully vegan menu.

  **Day 4: Tuesday – Kyoto**

  * *Pontocho Alley*: Vegetarian options: *Yuba* (tofu skin), *Vegetable Tempura*, *Soba Noodles*.
    * Alternative: *Shigematsu* – vegetarian-friendly kaiseki.
  * *Nishiki Market*: Matcha treats, vegetable tempura.

  **Day 5: Wednesday – Kyoto**

  * *Tempura Kaniwake*: Vegetarian options: *Vegetable Tempura*.
    * Alternative: *Kanenbo* – vegetarian tempura and kaiseki.

  **Useful phrases:** *Yasai o kudasai* (vegetables please), *Niku o hanasemasen* (no meat please).
</Accordion>

The model reviewed every restaurant from the current plan and flagged the problematic ones — demonstrating that it tracked all prior recommendations.

## Turn 12 — final summary: everything consolidated

```ts theme={null}
await openai.responses.create({
  model: 'meetkai:functionary-pt',
  conversation: conv.id,
  input: 'Give me the complete final itinerary with all the changes we have made. Include the jazz bars, the vegetarian notes, and the correct dates.',
  tools: [{ type: 'web_search', searchContextSize: 'medium' }, { type: 'history' }],
  store: true,
  stream: false,
});
```

**Coherence test:** This is the final exam. The response must reflect: 5 days not 7 (Turn 5), nightlife not temples (Turn 4), jazz bars on the correct night (Turn 8), vegetarian alternatives (Turn 11), and moderate budget (Turn 1).

<Accordion title="Full response (1,340 output tokens)">
  Here's your **final 5-day itinerary** (Saturday to Wednesday), incorporating all adjustments — jazz bars, vegetarian notes, and revised dates:

  ### **Day 1: Saturday – Tokyo**

  **Afternoon:** Check-in in Shinjuku/Shibuya. Shibuya Crossing & Shibuya Sky (sunset views).

  **Dinner:** Sushi Dai (Tsukiji) – vegetarian options: edamame, miso soup. Omoide Yokocho (Shinjuku): tofu skewers, edamame. *Alternative: Shibuya Vegan.*

  **Nightlife:** Shinjuku Golden Gai: tiny bars (vegetarian snacks available).

  ### **Day 2: Sunday – Tokyo**

  **Evening:** Akihabara Den Den Town: themed bars (vegetable tempura). Robot Restaurant: order vegetarian tempura or soba.

  **Dinner:** Ramen Street (Shibuya) – shoyu ramen (soy sauce, no meat).

  **Nightlife:** Salt and Peanuts (Shibuya): edamame, vegetable tempura. Jazz & Cocktails set (¥4,000–¥6,000).

  ### **Day 3: Monday – Tokyo**

  **Nightlife:** Pit Inn (Shinjuku): shows until 2:00 AM. Edamame, vegetable tempura. Alfie Jazz House (Shibuya): miso soup, vegetable skewers.

  **Morning:** Breakfast: Melting Pot (Shibuya) – crepes with fruit.

  **Noon:** Shinkansen to Kyoto (JR Pass covers this).

  ### **Day 4: Tuesday – Kyoto**

  **Afternoon:** Arashiyama bamboo grove. Nishiki Market: matcha treats, vegetable tempura.

  **Dinner:** Pontocho Alley: yuba, soba noodles. *Alternative: Shigematsu (vegetarian kaiseki).*

  **Nightlife:** Gion Jazz Bar: live jazz until 1:00 AM.

  ### **Day 5: Wednesday – Kyoto**

  **Morning:** Kiyomizu-dera. Higashiyama.

  **Lunch:** Kanenbo – vegetarian tempura and kaiseki.

  **Afternoon:** Transfer to Osaka/Kansai airport.

  ### Key Details

  * Budget: Hotels ¥8,000–15,000/night. Food ¥1,000–3,000/meal. JR Pass ¥35,000.
  * Vegetarian phrases: *Yasai o kudasai*, *Niku o hanasemasen*.
</Accordion>

## Coherence scorecard

This table tracks what the model must remember at each turn and whether it got it right.

| Turn | Challenge           | What the model must track                          | Result                                                                |
| ---- | ------------------- | -------------------------------------------------- | --------------------------------------------------------------------- |
| 1    | Establish state     | Budget = moderate, destination = Tokyo + Kyoto     | Correct                                                               |
| 2    | Add preferences     | Temples, street food, walking, no tours            | Correct                                                               |
| 3    | Structure           | Build day-by-day plan from Turns 1–2               | Correct                                                               |
| 4    | **Contradiction**   | Drop temples, replace with nightlife               | Correct — all temple activities removed from Tokyo                    |
| 5    | **Correction**      | 5 days (Sat–Wed), not 7–8                          | Correct — compressed plan to 5 days                                   |
| 6    | **Ambiguity**       | "That place" is vague                              | Correct — listed candidates and asked for clarification               |
| 7    | Tool use            | Web search for jazz bars                           | Correct — returned 4 real venues                                      |
| 8    | Integration         | Add search results to specific day                 | Correct — selected 2, adjusted schedule                               |
| 9    | **Back-reference**  | Recall Turn 1 budget + Turn 2 temples              | Correct — "moderate budget, originally temples, shifted to nightlife" |
| 10   | State verification  | Exact dates and cities                             | Correct — 5 days, Sat–Wed, Tokyo then Kyoto                           |
| 11   | New constraint      | Review all prior restaurants for vegetarian issues | Correct — flagged each day's restaurants                              |
| 12   | **Final synthesis** | All changes consolidated                           | Correct — 5 days, nightlife, jazz bars, vegetarian, moderate budget   |

All 12 turns produced complete, non-truncated responses. No turn returned an empty or partial `output_text`.

## A note on `max_output_tokens`

If the responses above had been generated with a low `max_output_tokens` limit, most of them would have been **empty** — not truncated, but completely blank.

The model uses part of its token budget for internal reasoning before producing visible text.
With `max_output_tokens: 50`, a request that normally produces 1,300+ tokens of output returns an empty string:

|                    | No limit                | `max_output_tokens: 50` |
| ------------------ | ----------------------- | ----------------------- |
| **status**         | `completed`             | `completed`             |
| **output\_tokens** | 437                     | 50                      |
| **output\_text**   | *(two full paragraphs)* | *(empty string)*        |

The response still reports `completed` — it did not error. But the 50-token budget was consumed entirely by reasoning.

<Warning>
  If your dialogues consistently produce empty or truncated responses, check whether `max_output_tokens` is set.
  Either remove the limit or increase it significantly. Use the `instructions` field to control verbosity instead.
</Warning>

## Best practices

* **Always pass `conversation` on every request.** The gateway maintains state. Use `previous_response_id` only when you need to fork from a specific point.
* **Do not set `max_output_tokens` unless you have a hard budget constraint.** Use `instructions` to control verbosity.
* **Validate tool calls before executing.** The examples above use built-in tools (`web_search`, `history`), but custom function tools like `run_shell` should be sandboxed in production.
* **List conversation items to audit coherence.** After a multi-turn exchange, call the items endpoint to verify every user message has a complete assistant response.

## See also

* [Manage conversations](/docs/conversations) for the basic CRUD pattern.
* [Long-term memory](/docs/long-term-memory) for details on the history tool.
* [Generate a response](/docs/generate-a-response) for the base Responses request shape.
* [Build an agent with MCP tools](/docs/build-an-agent-with-mcp-tools) for reusable agents that call external tools.
