Paste an Anthropic, OpenAI Chat or OpenAI Responses conversation. Get a list of broken tool_use, tool_calls and result pairs with the message index.
A tool call transcript is valid when every tool call has exactly one result in the right place, and this validator checks that for Anthropic Messages, OpenAI Chat Completions and OpenAI Responses transcripts. Paste the messages array or the whole request body; the format is detected for you. Each problem is listed with its message index and path, such as messages[2].content[1], and is either an error or a warning. Message numbers start at 0. The check runs in your browser and reports positions only, never the ids, names or text from your transcript.
Anthropic: tool_result blocks must immediately follow their tool_use blocks, in the next user message, and in that message the tool_result blocks must come first, with any text after them; a result placed after text is a 400 error. A tool_use needs an id and a name, and input is an object; an id with characters outside letters, digits, underscore and hyphen is only a warning, because the API reference states no pattern for client ids (platform.claude.com/docs/en/agents-and-tools/tool-use/handle-tool-calls and platform.claude.com/docs/en/api/messages). Consecutive messages with the same role are combined into one turn by Anthropic, so this tool checks them as one turn and adds a warning. When an assistant turn holds a server_tool_use with no result block yet, the next user message may contain only tool_result blocks; text after them is a 400 error (platform.claude.com/docs/en/agents-and-tools/tool-use/server-tools). OpenAI Responses: each function_call needs a function_call_output with the same call_id (1 to 64 characters) and an output that is a string or a list of input_text, input_image and input_file parts; a call made by a program must have its caller copied onto the output (developers.openai.com/api/docs/guides/function-calling and developers.openai.com/api/reference/resources/responses/methods/create). OpenAI Chat: an assistant message with tool_calls is followed by tool messages that answer each tool_call_id, and a tool message answers a call from the assistant message before it, and its content is a string or a list of text parts only. Both function and custom tool calls are accepted.
An error is a rule the provider documents or rejects: a call with no result, a result that answers no call, a missing id, a duplicate Anthropic id, text before a tool_result, an Anthropic input that is not an object, text after the results while a server tool call is unfinished, an invalid Chat tool message content or Responses output. A warning is something the docs do not reject but that usually means a bug: arguments that are not valid JSON, a tool name that is not in your list, a transcript that ends on tool calls with no results yet, a duplicate result in OpenAI formats, a conversation that does not start with a user message. The tool names box is optional; give it a JSON tools list or one name per line to turn on the name check.
The sample is an Anthropic transcript where the assistant calls get_weather twice, ids toolu_01 and toolu_02. The user message that follows opens with text, then answers toolu_01, then answers an id that was never called. The validator reports 3 errors: toolu_02 has no result, the stale result answers no call, and the results come after text. Turn on the repaired transcript to drop the stale result and move the remaining result before the text. That leaves 1 error, because the missing result for toolu_02 cannot be invented: add a tool_result, with is_error set if the tool failed, or remove the call. The fixes never change meaning, and the repaired JSON is labelled as such.
An assistant message contains a tool_use whose id has no tool_result in the very next user message. Add a tool_result with that tool_use_id in the next message, put it before any text, or remove the tool_use. The validator lists each such call by message index and block.
An orphan result has a tool_use_id or tool_call_id that no call in the message directly before it uses. Remove it, or correct the id. Turn on the repaired transcript option to have orphan results dropped for you; the output says how many were removed.
No. Anthropic documents that tool_result blocks must come first in the content array and any text after them, and a result placed after text is a 400 error. The safe fix moves the results to the front without changing them.
Not as an error. Anthropic combines consecutive messages of the same role into one turn, and the validator checks them as one turn. It also gives a warning, because merging can put text before a tool_result.
The model writes OpenAI arguments as text, so they can be malformed, and the API does not document rejecting them when you send them back. The warning marks the call so you can repair the JSON or ask again before your code parses it.
No. The text is processed in your browser, in this tab, and not uploaded. Your choices on this page are saved in this browser; the text you paste is not.