Certopolis

Claude Certified Architect – Foundations

Server tools, server_tool_use and pause_turn

Server tools, such as web search, web fetch, code execution and tool search, run on Anthropic's infrastructure. The call appears as a server_tool_use block followed by its result block in the same response, and you never send a tool_result for it.

Server tools and client tools

Client tools run in your application. That covers your own tools and Anthropic-schema tools such as bash and the text editor. Claude stops with stop_reason: "tool_use" and you send back a tool_result. Server tools run on Anthropic's side. Their call has an id starting srvtoolu_, and the result, for example a web_search_tool_result, follows in the same assistant turn.

Server tools can cost more than tokens. Web search, for example, is charged per search on top of token usage.

pause_turn

Server tools run in a loop on the API side. On a long turn the API may pause and return stop_reason: "pause_turn". This is not an error and the answer was not cut off. Send the request again with the returned content appended as the assistant message, and keep the same tools. A continued turn can pause again, so check stop_reason each time and cap the number of continuations.

Turns that mix server and client tools

Claude can call a server tool and one of your client tools in the same response, such as web_fetch with your run_command. The API then does not run the server tool yet. You get stop_reason: "tool_use", a server_tool_use block with no result block, and your tool_use block.

Run your tool and reply with a user message that holds only tool_result blocks, with the same tools array. The API runs the pending fetch, and the next response starts with its result block. Adding text after your results ends the assistant turn early and returns a 400 saying the web_fetch call has no matching result block. Never send a tool_result for the srvtoolu_ id.

Where the exam catches people

  • Believing pause_turn is a failure or a truncation: it is a paused server-side loop that you continue by sending the content back.
  • Believing a server_tool_use block with no result means the server tool failed: it is waiting for your client tool_result blocks.
  • Believing you can add a text note after the results on a mixed turn: any text ends the turn and causes a 400.
  • Believing server tools need a tool_result from you: you only answer client tool_use blocks.

Written from Anthropic's documentation

Try 3 questions on this

Pick an answer to see why each option is right or wrong.

  1. Your application, using the web search server tool, receives a response whose stop_reason is pause_turn. Your team has never seen this value and is unsure whether it indicates an error; your handler logs it beside the other failure paths and moves on. Which approach should you take?

    Right. In the game that’s Renown for your Tool Design, MCP and Server Tools building.

    Not that one: D is right. In the game your Tool Design, MCP and Server Tools building would lose a little Renown, and this question would come back later.

  2. Your agent on Claude Opus 5 (claude-opus-5) declares web_fetch_20250910 alongside a custom run_command tool. One response has stop_reason: "tool_use" and contains a server_tool_use block for web_fetch with no result block beside it. Your loop treats the missing result as a server failure and retries the whole turn. What change would most effectively resolve the issue?

    Right. In the game that’s Renown for your Tool Design, MCP and Server Tools building.

    Not that one: B is right. In the game your Tool Design, MCP and Server Tools building would lose a little Renown, and this question would come back later.

  3. Your agent on Claude Opus 5 (claude-opus-5) receives a turn holding a web_fetch server_tool_use block with no result plus one client tool_use block. Your client answers with the tool result followed by a short text note asking Claude to be brief. The request fails with a 400 saying the web_fetch tool use was found without a corresponding result block. What is the most likely cause?

    Right. In the game that’s Renown for your Tool Design, MCP and Server Tools building.

    Not that one: A is right. In the game your Tool Design, MCP and Server Tools building would lose a little Renown, and this question would come back later.

    Show the full explanation and doc quotes

    A block added after the results, such as text, tells the API the assistant turn is over, which leaves the deferred web_fetch call unresolved and produces exactly this 400.

    Written from platform.claude.com/docs/en/agents-and-tools/tool-use/server-tools