{
  "slug": "tools-in-a-voice-agent-loop",
  "title": "Function Calling in a Voice Agent: What a Tool May Be in a Spoken Loop",
  "description": "Function calling in a voice agent: which vendors and frameworks support tools as of the corpus's 2026-07-09 verification, how to classify tools as lookup, action or handoff, what barge-in does to a side effect, and a checklist for admitting a tool.",
  "kind": "sub",
  "order": 4,
  "target_query": "function calling in a voice agent",
  "secondary_queries": [
    "voice agent function calling"
  ],
  "tags": [
    "voice",
    "tool-calling",
    "function-calling",
    "agents",
    "barge-in",
    "mcp",
    "production"
  ],
  "published": "2026-10-09",
  "updated": "2026-10-09",
  "words": 1143,
  "estimated_tokens": 1520,
  "premium": false,
  "rights": {
    "access": "free",
    "note": "Editorial guides are always free and never part of the licensed corpus.",
    "license": "https://changegamer.ai/license.xml",
    "pricing": "https://changegamer.ai/api/pricing.json",
    "payment": "https://changegamer.ai/api/payment.json"
  },
  "license": "https://changegamer.ai/license.xml",
  "citation": "ChangeGamer (2026-10-09). Function Calling in a Voice Agent: What a Tool May Be in a Spoken Loop. ChangeGamer. https://changegamer.ai/articles/tools-in-a-voice-agent-loop (updated 2026-10-09).",
  "bibtex": "@misc{changegamer_tools_in_a_voice_agent_loop, title = {Function Calling in a Voice Agent: What a Tool May Be in a Spoken Loop}, publisher = {ChangeGamer}, year = {2026}, url = {https://changegamer.ai/articles/tools-in-a-voice-agent-loop}, note = {Updated 2026-10-09}}",
  "canonical": "https://changegamer.ai/articles/tools-in-a-voice-agent-loop",
  "markdown": "https://changegamer.ai/articles/tools-in-a-voice-agent-loop.md",
  "takeaways": [
    "The voice-realtime-agents reference records that OpenAI, Google Gemini Live, Amazon Nova Sonic and xAI realtime APIs all support mid-conversation tool calling, verified on 2026-07-09 and not re-verified on 2026-09-28.",
    "As the author's inference, tools in a spoken loop fall into three classes, read-only lookups, side-effecting actions and handoffs, and each class needs a different rule for confirmation, retries and interruption.",
    "The voice-realtime-agents reference does not say what happens to an in-flight tool call when a caller interrupts the agent, so a team should assume any side-effecting tool may already have run when the caller cuts in.",
    "LiveKit Agents lists native MCP tool support and function calling according to the voice-realtime-agents reference, while the same reference states no tool-calling detail for Pipecat, so Pipecat support should be read from its own documentation.",
    "A tool should enter a voice agent only if it has a budget, a class, an idempotency story and a spoken failure path, because a tool that is fine in a chat window can be audible, slow or repeated on a call."
  ],
  "outline": [
    {
      "depth": 2,
      "text": "Which voice APIs and frameworks support tool calling?",
      "anchor": "which-voice-apis-and-frameworks-support-tool-calling",
      "url": "https://changegamer.ai/articles/tools-in-a-voice-agent-loop#which-voice-apis-and-frameworks-support-tool-calling"
    },
    {
      "depth": 2,
      "text": "What kinds of tool belong in a spoken loop?",
      "anchor": "what-kinds-of-tool-belong-in-a-spoken-loop",
      "url": "https://changegamer.ai/articles/tools-in-a-voice-agent-loop#what-kinds-of-tool-belong-in-a-spoken-loop"
    },
    {
      "depth": 2,
      "text": "Where can you see the tool call in a cascaded versus a native agent?",
      "anchor": "where-can-you-see-the-tool-call-in-a-cascaded-versus-a-native-agent",
      "url": "https://changegamer.ai/articles/tools-in-a-voice-agent-loop#where-can-you-see-the-tool-call-in-a-cascaded-versus-a-native-agent"
    },
    {
      "depth": 2,
      "text": "What does barge-in do to a tool call that is already running?",
      "anchor": "what-does-barge-in-do-to-a-tool-call-that-is-already-running",
      "url": "https://changegamer.ai/articles/tools-in-a-voice-agent-loop#what-does-barge-in-do-to-a-tool-call-that-is-already-running"
    },
    {
      "depth": 2,
      "text": "What should a tool pass before it is added to a voice agent?",
      "anchor": "what-should-a-tool-pass-before-it-is-added-to-a-voice-agent",
      "url": "https://changegamer.ai/articles/tools-in-a-voice-agent-loop#what-should-a-tool-pass-before-it-is-added-to-a-voice-agent"
    },
    {
      "depth": 2,
      "text": "What does ChangeGamer know first-hand about voice tools?",
      "anchor": "what-does-changegamer-know-first-hand-about-voice-tools",
      "url": "https://changegamer.ai/articles/tools-in-a-voice-agent-loop#what-does-changegamer-know-first-hand-about-voice-tools"
    }
  ],
  "faq": [
    {
      "question": "Does a speech-to-speech voice agent support function calling?",
      "answer": "Yes for the four vendors in the corpus. The voice-realtime-agents reference records mid-conversation tool or function calling for OpenAI Realtime, Google Gemini Live, Amazon Nova Sonic and the xAI Grok Voice Agent API, verified on 2026-07-09 and not re-verified on 2026-09-28."
    },
    {
      "question": "What happens to a tool call when the caller interrupts the agent?",
      "answer": "The corpus does not say. The voice-realtime-agents reference describes barge-in as flushing speech and, in a cascade, restarting transcription, and it states nothing about cancelling a tool call. As inference, treat any side-effecting call as possibly already executed and make it safe to repeat."
    },
    {
      "question": "Which tools should a voice agent never call without confirming first?",
      "answer": "As the author's inference, any side-effecting action that is hard to undo, such as a payment, cancellation or booking, should be confirmed aloud before it runs. Read-only lookups can usually run without confirmation, because a wrong lookup costs a sentence rather than an irreversible change."
    },
    {
      "question": "Is tool calling the same in a voice agent as in a text agent?",
      "answer": "The mechanism is the same, since the reliable-tool-calling reference describes schema-valid calls generally. The constraints differ because the caller hears every pause, retry and repeated action, so the tool contract needs a time budget and a spoken failure path that a chat agent can skip."
    }
  ],
  "body": "A tool in a voice agent is a function the model may call mid-conversation while a person waits in silence, so its design question is what it is allowed to do while the caller is listening, not how fast it is. This article is the design guide for that question inside the [voice AI agent in production](/articles/voice-ai-agent-in-production) cluster. Delay numbers are in the [voice agent latency budget](/articles/voice-agent-latency-budget), filler speech and noisy-argument confirmation are in the pillar, and the sources are [voice and realtime agents](/resources/voice-realtime-agents), [reliable tool calling](/resources/reliable-tool-calling) and [agent cost and latency optimization](/resources/agent-cost-latency-optimization).\n\n## Which voice APIs and frameworks support tool calling?\n\nThe four native speech-to-speech APIs in the corpus all support tool or function calling mid-conversation, and so does LiveKit Agents. The vendor facts below were web-verified on 2026-07-09 in the voice-realtime-agents reference (updated 2026-09-28); the 2026-09-28 pass re-checked only the open-framework versions, so re-confirm before you build on a row.\n\n| Vendor or framework | Tool support in the corpus | Notes |\n|---|---|---|\n| OpenAI Realtime API | Tool/function calling mid-conversation | Native speech-to-speech; models named `gpt-realtime-2.1` and mini as of 2026-07-09 |\n| Google Gemini Live API | Function calling | Native audio over WebSocket |\n| Amazon Nova Sonic | Tool use | Bedrock bidirectional streaming |\n| xAI Grok Voice Agent API | Tool/function calling (listed among the four vendors) | The reference also records compatibility with the OpenAI Realtime specification |\n| LiveKit Agents | Native MCP tool support and function calling | Same orchestrator for cascaded and native backends |\n| Pipecat | Not stated | The reference describes pipeline frames, VAD and barge-in but states no tool-calling detail; read Pipecat's own docs |\n\nSupport for the capability is therefore not the constraint. What the corpus does not give is a per-vendor list of tool-call events, limits on the number of tools, or cancellation behavior, so none appear here.\n\n## What kinds of tool belong in a spoken loop?\n\nTools in a spoken loop fall into three classes, read-only lookups, side-effecting actions and handoffs, and the class decides every other rule. This split is the author's inference; the corpus does not classify tools.\n\n| Class | Example | Confirm before running? | Safe to retry? | On interruption |\n|---|---|---|---|---|\n| Read-only lookup | Order status, opening hours | Usually no | Yes | Drop the result or keep it for the next turn |\n| Side-effecting action | Cancel, refund, book | Yes, aloud, for hard-to-undo ones | Only with an idempotency key | Check whether it already ran |\n| Handoff | Transfer to a human | Say it first | Do not repeat | Finish or abort cleanly |\n\nKeep the classes separate in code and in the prompt. A lookup that can also modify state, such as a \"get or create\" call, is an action wearing a lookup's name, and the model cannot tell the difference from the schema alone. The mechanics of idempotency keys and retries live in [tool-calling contracts for AI agents](/articles/tool-calling-contracts-for-ai-agents) and the [reliable tool calling](/resources/reliable-tool-calling) reference, not here.\n\n## Where can you see the tool call in a cascaded versus a native agent?\n\nAs inference, in a cascaded pipeline the tool request is visible as text between the language model and synthesis, while in a native speech-to-speech model you see only what the vendor's API chooses to return. That seam analysis is covered in [what to log and filter in a voice agent](/articles/voice-agent-architecture-cascaded-vs-speech-to-speech) and is not repeated here.\n\nThe consequence for tools is narrow. If you cannot see or intercept the call before it executes, the guard has to live inside the tool itself: argument validation, an allow-list of permitted actions and an idempotency check on the server. As inference, put the same guards in the tool for both architectures, so that a model swap does not silently remove a control that only existed at a text seam.\n\n## What does barge-in do to a tool call that is already running?\n\nThe corpus does not say, so assume the call may complete after the caller interrupts. The voice-realtime-agents reference describes barge-in as flushing the synthesis buffer and restarting transcription in a cascade, and as handled inside the model in a native system; it states nothing about cancelling an in-flight tool call. Everything below is inference.\n\n- **Lookups:** an interrupted lookup is harmless. Decide whether the result is discarded or offered on the next turn, and test both against a real interruption.\n- **Actions:** the caller may say \"wait, no\" after the call has been sent. The server may already have acted. Make the action idempotent, and give it a cheap reversal or a confirmation state where the business allows one.\n- **Spoken confirmation:** an agent that says \"done\" while the caller was talking over it may have been cut off mid-word. Log what was actually played, then reconcile it with what the tool did, rather than trusting the model's account.\n\nTest this the way the cluster tests interruption generally, with recorded audio; see [how to test turn detection and barge-in](/articles/voice-turn-detection-and-barge-in-testing).\n\n## What should a tool pass before it is added to a voice agent?\n\nA tool should pass a short checklist before it joins a voice agent, and any tool that fails an item is a candidate for a text channel instead. The checklist is the author's inference built on the corpus's latency and reliability guidance.\n\n1. **Budget:** the tool has a stated time ceiling taken from the [voice agent latency budget](/articles/voice-agent-latency-budget), plus a decision on whether it runs in series or alongside other calls. The agent cost and latency reference describes running independent calls concurrently as turning a sum into a maximum.\n2. **Class:** it is declared as lookup, action or handoff, and the prompt says which.\n3. **Idempotency:** a repeated call with the same key does nothing new, because retries and interruptions can both repeat a call.\n4. **Spoken failure path:** the tool returns an error the agent can say aloud, and a timeout ends in a defined sentence, not silence. Filler speech and confirmation of noisy arguments are covered in the pillar's section on calling tools.\n5. **Schema tolerance:** arguments that came from speech are validated, and enumerated values replace free text where possible, which the reliable-tool-calling reference lists among its broadly applicable fixes.\n6. **Tool count:** each tool the model can choose is another way to choose wrongly. The corpus gives no safe maximum, so measure tool-call correctness on a labelled call set rather than assuming one.\n\n## What does ChangeGamer know first-hand about voice tools?\n\nChangeGamer runs no voice agent as of October 2026, so nothing here was measured from live calls. It holds no measured voice-tool data of its own. The vendor rows above rest on the corpus's 2026-07-09 verification, and the contract for schema-valid calls is in [reliable tool calling](/resources/reliable-tool-calling).",
  "cluster": {
    "id": "voice-agents-in-production",
    "title": "Voice agents in production",
    "description": "How to build and run a live voice AI agent — architecture choice, turn detection and barge-in, latency budget, tool calls in a voice loop, transport, cost, human handoff, guardrails, monitoring and launch — covering live caller conversations only, not offline dubbing/localization (ai-dubbing-localization-and-subtitling) and not the WER/MOS/VoiceBench scoring methodology owned by the evaluating-voice-agents resource.",
    "status": "complete",
    "pillar": {
      "slug": "voice-ai-agent-in-production",
      "title": "Voice AI Agent in Production: Architecture, Latency, Handoff and Launch",
      "description": "How to build and run a voice AI agent in production: cascaded vs speech-to-speech architecture, turn detection and barge-in, the latency budget, tool calls in a voice loop, transport, cost, human handoff and launch sequencing.",
      "kind": "pillar",
      "order": 0,
      "html": "https://changegamer.ai/articles/voice-ai-agent-in-production",
      "markdown": "https://changegamer.ai/articles/voice-ai-agent-in-production.md",
      "json": "https://changegamer.ai/api/articles/voice-ai-agent-in-production.json"
    },
    "articles": [
      {
        "slug": "voice-agent-latency-budget",
        "title": "Voice Agent Latency Budget: Where the 600 ms Goes and How to Hold It",
        "description": "How to split a 600 ms voice agent latency budget across speech-to-text, the language model, speech synthesis and tool calls, how to measure each stage, and which levers hold the budget.",
        "kind": "sub",
        "order": 1,
        "html": "https://changegamer.ai/articles/voice-agent-latency-budget",
        "markdown": "https://changegamer.ai/articles/voice-agent-latency-budget.md",
        "json": "https://changegamer.ai/api/articles/voice-agent-latency-budget.json"
      },
      {
        "slug": "voice-turn-detection-and-barge-in-testing",
        "title": "How to Test Voice Agent Turn Detection and Barge-In",
        "description": "How to test voice agent turn detection and barge-in: build a labelled clip set, count barge-in accuracy and false-interruption rate, separate cut-off from talk-over failures, and split offline gates from online monitors.",
        "kind": "sub",
        "order": 2,
        "html": "https://changegamer.ai/articles/voice-turn-detection-and-barge-in-testing",
        "markdown": "https://changegamer.ai/articles/voice-turn-detection-and-barge-in-testing.md",
        "json": "https://changegamer.ai/api/articles/voice-turn-detection-and-barge-in-testing.json"
      },
      {
        "slug": "voice-agent-architecture-cascaded-vs-speech-to-speech",
        "title": "What to Log and Filter in a Voice Agent, by Architecture",
        "description": "What to log and filter in a voice agent depending on architecture: where a cascaded pipeline gives you text seams for logging, redaction and output filters, what a native speech-to-speech model leaves you to do from outside, and what a model swap forces you to re-test.",
        "kind": "sub",
        "order": 3,
        "html": "https://changegamer.ai/articles/voice-agent-architecture-cascaded-vs-speech-to-speech",
        "markdown": "https://changegamer.ai/articles/voice-agent-architecture-cascaded-vs-speech-to-speech.md",
        "json": "https://changegamer.ai/api/articles/voice-agent-architecture-cascaded-vs-speech-to-speech.json"
      },
      {
        "slug": "tools-in-a-voice-agent-loop",
        "title": "Function Calling in a Voice Agent: What a Tool May Be in a Spoken Loop",
        "description": "Function calling in a voice agent: which vendors and frameworks support tools as of the corpus's 2026-07-09 verification, how to classify tools as lookup, action or handoff, what barge-in does to a side effect, and a checklist for admitting a tool.",
        "kind": "sub",
        "order": 4,
        "html": "https://changegamer.ai/articles/tools-in-a-voice-agent-loop",
        "markdown": "https://changegamer.ai/articles/tools-in-a-voice-agent-loop.md",
        "json": "https://changegamer.ai/api/articles/tools-in-a-voice-agent-loop.json"
      },
      {
        "slug": "voice-agent-transport-webrtc-vs-websocket-vs-sip",
        "title": "Voice Agent Transport: WebRTC vs WebSocket, and Where SIP Fits",
        "description": "WebRTC vs WebSocket for voice AI agents: which transport each vendor documents as of the corpus's 2026-07-09 verification, how cascaded stacks use WebSocket components, a decision tree by client type, and a per-transport test checklist.",
        "kind": "sub",
        "order": 5,
        "html": "https://changegamer.ai/articles/voice-agent-transport-webrtc-vs-websocket-vs-sip",
        "markdown": "https://changegamer.ai/articles/voice-agent-transport-webrtc-vs-websocket-vs-sip.md",
        "json": "https://changegamer.ai/api/articles/voice-agent-transport-webrtc-vs-websocket-vs-sip.json"
      },
      {
        "slug": "voice-agent-human-handoff",
        "title": "Voice Agent Human Handoff: What Happens on the Call When the Agent Lets Go",
        "description": "Voice agent human handoff mechanics: the handoff as a tool that ends the agent's session, barge-in during the transfer announcement, what the caller hears on hold and on failure, a context payload schema, and a real-call test checklist.",
        "kind": "sub",
        "order": 6,
        "html": "https://changegamer.ai/articles/voice-agent-human-handoff",
        "markdown": "https://changegamer.ai/articles/voice-agent-human-handoff.md",
        "json": "https://changegamer.ai/api/articles/voice-agent-human-handoff.json"
      },
      {
        "slug": "voice-agent-cost-per-minute",
        "title": "How to Compute Your Voice Agent Cost per Minute",
        "description": "How to compute a voice agent cost per minute from your own pilot: symbolic formulas for native speech-to-speech and cascaded STT, LLM and TTS, the variables that move the result, idle audio, retries, tool-call turns, and a sensitivity check.",
        "kind": "sub",
        "order": 7,
        "html": "https://changegamer.ai/articles/voice-agent-cost-per-minute",
        "markdown": "https://changegamer.ai/articles/voice-agent-cost-per-minute.md",
        "json": "https://changegamer.ai/api/articles/voice-agent-cost-per-minute.json"
      },
      {
        "slug": "guardrails-for-spoken-output-in-voice-agents",
        "title": "Voice Agent Guardrails: Checking What the Agent Says Before the Caller Hears It",
        "description": "Voice agent guardrails for spoken output: sentence-level gating before TTS, fail-closed judges, spoken numbers a text PII filter misses, readback before state changes, transcription-driven injection, refusal phrasing for the ear, and an adversarial test list.",
        "kind": "sub",
        "order": 8,
        "html": "https://changegamer.ai/articles/guardrails-for-spoken-output-in-voice-agents",
        "markdown": "https://changegamer.ai/articles/guardrails-for-spoken-output-in-voice-agents.md",
        "json": "https://changegamer.ai/api/articles/guardrails-for-spoken-output-in-voice-agents.json"
      },
      {
        "slug": "voice-agent-online-monitoring",
        "title": "How to Monitor a Voice Agent in Production: Dashboard, Alerts and Runbook",
        "description": "How to monitor a voice agent in production: per-stage latency percentiles, transcription confidence, containment paired with a resolution signal, live false-interruption rate, a handoff trigger review, and call-audio retention, each with what to chart, alert on and do.",
        "kind": "sub",
        "order": 9,
        "html": "https://changegamer.ai/articles/voice-agent-online-monitoring",
        "markdown": "https://changegamer.ai/articles/voice-agent-online-monitoring.md",
        "json": "https://changegamer.ai/api/articles/voice-agent-online-monitoring.json"
      },
      {
        "slug": "voice-agent-vendor-change-management",
        "title": "How to Handle Voice AI Vendor Model Changes Without Regressing Callers",
        "description": "How to handle voice AI vendor model changes: classify the change, record the model id on every trace, replay an offline set with hard calls on old and new, canary before cutover, keep a rollback, and run a deprecation-readiness routine.",
        "kind": "sub",
        "order": 10,
        "html": "https://changegamer.ai/articles/voice-agent-vendor-change-management",
        "markdown": "https://changegamer.ai/articles/voice-agent-vendor-change-management.md",
        "json": "https://changegamer.ai/api/articles/voice-agent-vendor-change-management.json"
      },
      {
        "slug": "voice-agent-launch-checklist",
        "title": "Voice Agent Launch Checklist: The Go/No-Go Gates Before Real Callers",
        "description": "A voice agent launch checklist as yes/no gates: scope, offline replay, per-stage latency, barge-in, tools, transport, handoff, cost, guardrails, monitoring and rollback, each with a pass signal and the article that owns the method.",
        "kind": "sub",
        "order": 11,
        "html": "https://changegamer.ai/articles/voice-agent-launch-checklist",
        "markdown": "https://changegamer.ai/articles/voice-agent-launch-checklist.md",
        "json": "https://changegamer.ai/api/articles/voice-agent-launch-checklist.json"
      },
      {
        "slug": "voice-agent-multilingual-callers",
        "title": "How Does a Voice Agent Handle Callers Who Speak Another Language?",
        "description": "How a live voice agent handles callers who speak another language: detecting the language, choosing speech components per language, slicing evaluation by language and handing off when the language is unsupported, with the thin corpus evidence stated plainly.",
        "kind": "sub",
        "order": 12,
        "html": "https://changegamer.ai/articles/voice-agent-multilingual-callers",
        "markdown": "https://changegamer.ai/articles/voice-agent-multilingual-callers.md",
        "json": "https://changegamer.ai/api/articles/voice-agent-multilingual-callers.json"
      }
    ]
  },
  "navigation": {
    "pillar": {
      "slug": "voice-ai-agent-in-production",
      "title": "Voice AI Agent in Production: Architecture, Latency, Handoff and Launch",
      "description": "How to build and run a voice AI agent in production: cascaded vs speech-to-speech architecture, turn detection and barge-in, the latency budget, tool calls in a voice loop, transport, cost, human handoff and launch sequencing.",
      "kind": "pillar",
      "order": 0,
      "html": "https://changegamer.ai/articles/voice-ai-agent-in-production",
      "markdown": "https://changegamer.ai/articles/voice-ai-agent-in-production.md",
      "json": "https://changegamer.ai/api/articles/voice-ai-agent-in-production.json"
    },
    "previous": {
      "slug": "voice-agent-architecture-cascaded-vs-speech-to-speech",
      "title": "What to Log and Filter in a Voice Agent, by Architecture",
      "description": "What to log and filter in a voice agent depending on architecture: where a cascaded pipeline gives you text seams for logging, redaction and output filters, what a native speech-to-speech model leaves you to do from outside, and what a model swap forces you to re-test.",
      "kind": "sub",
      "order": 3,
      "html": "https://changegamer.ai/articles/voice-agent-architecture-cascaded-vs-speech-to-speech",
      "markdown": "https://changegamer.ai/articles/voice-agent-architecture-cascaded-vs-speech-to-speech.md",
      "json": "https://changegamer.ai/api/articles/voice-agent-architecture-cascaded-vs-speech-to-speech.json"
    },
    "next": {
      "slug": "voice-agent-transport-webrtc-vs-websocket-vs-sip",
      "title": "Voice Agent Transport: WebRTC vs WebSocket, and Where SIP Fits",
      "description": "WebRTC vs WebSocket for voice AI agents: which transport each vendor documents as of the corpus's 2026-07-09 verification, how cascaded stacks use WebSocket components, a decision tree by client type, and a per-transport test checklist.",
      "kind": "sub",
      "order": 5,
      "html": "https://changegamer.ai/articles/voice-agent-transport-webrtc-vs-websocket-vs-sip",
      "markdown": "https://changegamer.ai/articles/voice-agent-transport-webrtc-vs-websocket-vs-sip.md",
      "json": "https://changegamer.ai/api/articles/voice-agent-transport-webrtc-vs-websocket-vs-sip.json"
    }
  },
  "resources": [
    {
      "slug": "voice-realtime-agents",
      "html": "https://changegamer.ai/resources/voice-realtime-agents",
      "markdown": "https://changegamer.ai/resources/voice-realtime-agents.md",
      "json": "https://changegamer.ai/api/resources/voice-realtime-agents.json"
    },
    {
      "slug": "reliable-tool-calling",
      "html": "https://changegamer.ai/resources/reliable-tool-calling",
      "markdown": "https://changegamer.ai/resources/reliable-tool-calling.md",
      "json": "https://changegamer.ai/api/resources/reliable-tool-calling.json"
    },
    {
      "slug": "agent-cost-latency-optimization",
      "html": "https://changegamer.ai/resources/agent-cost-latency-optimization",
      "markdown": "https://changegamer.ai/resources/agent-cost-latency-optimization.md",
      "json": "https://changegamer.ai/api/resources/agent-cost-latency-optimization.json"
    }
  ]
}