From ff6a9223e6d56eb231ccfd5e25290cc46a405b86 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:10:07 +0800 Subject: [PATCH 01/20] docs: add an "Any MCP client" integration item Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index 9babbf608..cc5e9f1e1 100644 --- a/README.md +++ b/README.md @@ -397,6 +397,29 @@ tools = client.agent_tools(doc_id=doc_id) # plain functions returning JSON Every helper above accepts `doc_id=` to point the agent at specific documents and `include_management=True` to also expose document deletion (off by default). Locally, `doc_id` is enforced at the tool layer, not just prompted: out-of-scope lookups return `NOT_FOUND`. +
+ +
+Any MCP client +
+ +Cloud indexes are also reachable over MCP, so an agent that already speaks the protocol needs no SDK at all: + +```json +{ + "mcpServers": { + "pageindex": { + "type": "http", + "url": "https://api.pageindex.ai/mcp", + "headers": { "Authorization": "Bearer your-pageindex-key" } + } + } +} +``` + +The same API key and documents work across the MCP server and the REST API; see the [MCP documentation](https://docs.pageindex.ai/mcp). Local indexes have no standalone server: use `agent_tools()` above, or `as_claude_mcp()` for an in-process one. + +
From 46386cca85208dd69729d59e39a492d0731a0ea1 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:12:01 +0800 Subject: [PATCH 02/20] docs: plainer wording for the MCP item Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cc5e9f1e1..002efad10 100644 --- a/README.md +++ b/README.md @@ -400,10 +400,10 @@ Every helper above accepts `doc_id=` to point the agent at specific documents an
-Any MCP client +MCP server
-Cloud indexes are also reachable over MCP, so an agent that already speaks the protocol needs no SDK at all: +PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP can connect to it without the SDK: ```json { From 139f196175d4c0d02b698d637a2d55ff3bcaa002 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:13:06 +0800 Subject: [PATCH 03/20] docs: tighten the MCP item's opening line Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 002efad10..7ef322117 100644 --- a/README.md +++ b/README.md @@ -403,7 +403,7 @@ Every helper above accepts `doc_id=` to point the agent at specific documents an MCP server
-PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP can connect to it without the SDK: +PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP can connect directly without the SDK: ```json { From d4d26f666c54953bc7215750d0d50403eb25030c Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:14:13 +0800 Subject: [PATCH 04/20] docs: tighten the MCP item's prose Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7ef322117..92abf9383 100644 --- a/README.md +++ b/README.md @@ -403,7 +403,7 @@ Every helper above accepts `doc_id=` to point the agent at specific documents an MCP server
-PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP can connect directly without the SDK: +PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP can connect directly to it without the SDK: ```json { @@ -417,7 +417,7 @@ PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP c } ``` -The same API key and documents work across the MCP server and the REST API; see the [MCP documentation](https://docs.pageindex.ai/mcp). Local indexes have no standalone server: use `agent_tools()` above, or `as_claude_mcp()` for an in-process one. +Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local indexes have no hosted server: use `agent_tools()` above, or `as_claude_mcp()` for an in-process one.
From c89c776f8d2814d7a5edc4de5335b9c686120e74 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:15:11 +0800 Subject: [PATCH 05/20] docs: mark the missing local MCP server as a not-yet Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 92abf9383..9f2537ddf 100644 --- a/README.md +++ b/README.md @@ -417,7 +417,7 @@ PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP c } ``` -Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local indexes have no hosted server: use `agent_tools()` above, or `as_claude_mcp()` for an in-process one. +Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local indexes have no standalone MCP server yet: use `agent_tools()` above, or `as_claude_mcp()` for an in-process one. From e37e4a66b64747aedcbf5eaad41e640e6640952b Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:15:56 +0800 Subject: [PATCH 06/20] docs: don't offer as_claude_mcp() as a general MCP entry point Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f2537ddf..8a028d8ea 100644 --- a/README.md +++ b/README.md @@ -417,7 +417,7 @@ PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP c } ``` -Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local indexes have no standalone MCP server yet: use `agent_tools()` above, or `as_claude_mcp()` for an in-process one. +Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local indexes have no standalone MCP server yet: use `agent_tools()` above, or the Claude Agent SDK's in-process server. From 313fb7e3fcf9b8add7705a76b7566b66bea342be Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:17:18 +0800 Subject: [PATCH 07/20] docs: link the MCP item to the Claude Agent SDK block Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8a028d8ea..9b5704923 100644 --- a/README.md +++ b/README.md @@ -357,7 +357,7 @@ runner = anthropic.Anthropic().beta.messages.tool_runner(
-Claude Agent SDK +Claude Agent SDK
Install with `pip install 'pageindex[claude]'`. The Claude Agent SDK is async-native: @@ -417,7 +417,7 @@ PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP c } ``` -Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local indexes have no standalone MCP server yet: use `agent_tools()` above, or the Claude Agent SDK's in-process server. +Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local indexes have no standalone MCP server yet: use `agent_tools()` above, or the [Claude Agent SDK](#claude-agent-sdk)'s in-process MCP server.
From 55f02f24b4f359512574db851287ad12cdfb20cc Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:17:49 +0800 Subject: [PATCH 08/20] docs: say "local mode", the README's established term Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b5704923..d4b0f46c8 100644 --- a/README.md +++ b/README.md @@ -417,7 +417,7 @@ PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP c } ``` -Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local indexes have no standalone MCP server yet: use `agent_tools()` above, or the [Claude Agent SDK](#claude-agent-sdk)'s in-process MCP server. +Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local mode has no standalone MCP server yet: use `agent_tools()` above, or the [Claude Agent SDK](#claude-agent-sdk)'s in-process MCP server. From 1eb1b6a0688e13752ac23f059c2cedeb26480818 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:19:03 +0800 Subject: [PATCH 09/20] docs: link PageIndex Cloud in the MCP item Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d4b0f46c8..fd642d089 100644 --- a/README.md +++ b/README.md @@ -403,7 +403,7 @@ Every helper above accepts `doc_id=` to point the agent at specific documents an MCP server
-PageIndex Cloud also runs an MCP server, so any agent or app that supports MCP can connect directly to it without the SDK: +[PageIndex Cloud](#pageindex-cloud) also runs an MCP server, so any agent or app that supports MCP can connect directly to it without the SDK: ```json { From db23676d727f8a797237e6ce7f076e3ef2bb678c Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:20:24 +0800 Subject: [PATCH 10/20] docs: parenthesize the tool-runner qualifier Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fd642d089..579012748 100644 --- a/README.md +++ b/README.md @@ -324,7 +324,7 @@ agent = Agent(
-Anthropic SDK tool runner +Anthropic SDK (tool runner)
Install with `pip install 'pageindex[anthropic]'`: From 2c72f9cc3e50df95d71de7c46a89fdd987993cc4 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:22:27 +0800 Subject: [PATCH 11/20] docs: lead with the noun in the local fallback Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 579012748..2be1ff5a7 100644 --- a/README.md +++ b/README.md @@ -417,7 +417,7 @@ Every helper above accepts `doc_id=` to point the agent at specific documents an } ``` -Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local mode has no standalone MCP server yet: use `agent_tools()` above, or the [Claude Agent SDK](#claude-agent-sdk)'s in-process MCP server. +Full details in the [MCP documentation](https://docs.pageindex.ai/mcp). Local mode has no standalone MCP server yet: use `agent_tools()` above, or the in-process MCP server for the [Claude Agent SDK](#claude-agent-sdk).
From fbe7e76e2a7eecc61e8fe6ff8583ba8035de66f3 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:28:52 +0800 Subject: [PATCH 12/20] docs: fix the (b) intro and the messages() model-name rule Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2be1ff5a7..95dce1e80 100644 --- a/README.md +++ b/README.md @@ -285,7 +285,7 @@ Returns the agent's process transcript in `items`. Append those items to the nex client.messages("...", model="claude-sonnet-4-6", doc_id=doc_id) ``` -Uses Anthropic's native Messages API and tool runner. Install it with `pip install 'pageindex[anthropic]'`. +Uses Anthropic's native Messages API and tool runner, so `model=` takes a plain Anthropic model id, without the `anthropic/` prefix. Install it with `pip install 'pageindex[anthropic]'`. Pass a list of ids to `doc_id` to search several documents at once, and keep it identical across a conversation's calls. @@ -293,7 +293,7 @@ Pass a list of ids to `doc_id` to search several documents at once, and keep it ### (b) Integrate PageIndex with your own agent -PageIndex can also be integrated into your own agent. Each example below covers a different framework: +PageIndex can also be integrated into your own agent. Each item below covers a different integration path:
OpenAI Agents SDK From 968c3276532f41add82917f45a8111c988886646 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:32:26 +0800 Subject: [PATCH 13/20] docs: trim the Anthropic model-id note Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 95dce1e80..fbf46c5ed 100644 --- a/README.md +++ b/README.md @@ -285,7 +285,7 @@ Returns the agent's process transcript in `items`. Append those items to the nex client.messages("...", model="claude-sonnet-4-6", doc_id=doc_id) ``` -Uses Anthropic's native Messages API and tool runner, so `model=` takes a plain Anthropic model id, without the `anthropic/` prefix. Install it with `pip install 'pageindex[anthropic]'`. +Uses Anthropic's native Messages API and tool runner, so `model=` takes a plain Anthropic id, no `anthropic/` prefix. Install with `pip install 'pageindex[anthropic]'`. Pass a list of ids to `doc_id` to search several documents at once, and keep it identical across a conversation's calls. From ab9dc7e06f459c543b26010bf485d224a6b6f42d Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:32:54 +0800 Subject: [PATCH 14/20] docs: parenthesize the prefix caveat Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fbf46c5ed..b38068ef3 100644 --- a/README.md +++ b/README.md @@ -285,7 +285,7 @@ Returns the agent's process transcript in `items`. Append those items to the nex client.messages("...", model="claude-sonnet-4-6", doc_id=doc_id) ``` -Uses Anthropic's native Messages API and tool runner, so `model=` takes a plain Anthropic id, no `anthropic/` prefix. Install with `pip install 'pageindex[anthropic]'`. +Uses Anthropic's native Messages API and tool runner, so `model=` takes a plain Anthropic id (no `anthropic/` prefix). Install with `pip install 'pageindex[anthropic]'`. Pass a list of ids to `doc_id` to search several documents at once, and keep it identical across a conversation's calls. From 1a5fec15c8bbf22ff723db2dd48cefd228a12cab Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:33:25 +0800 Subject: [PATCH 15/20] docs: move the whole model-name clause into parentheses Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b38068ef3..46d50c35b 100644 --- a/README.md +++ b/README.md @@ -285,7 +285,7 @@ Returns the agent's process transcript in `items`. Append those items to the nex client.messages("...", model="claude-sonnet-4-6", doc_id=doc_id) ``` -Uses Anthropic's native Messages API and tool runner, so `model=` takes a plain Anthropic id (no `anthropic/` prefix). Install with `pip install 'pageindex[anthropic]'`. +Uses Anthropic's native Messages API and tool runner (so `model=` takes a plain Anthropic id, no `anthropic/` prefix). Install with `pip install 'pageindex[anthropic]'`. Pass a list of ids to `doc_id` to search several documents at once, and keep it identical across a conversation's calls. From 50a71241d4ac96fab73f7ec473015898aec131d4 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 20:34:01 +0800 Subject: [PATCH 16/20] docs: say "plain model id" Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 46d50c35b..2c244c8d3 100644 --- a/README.md +++ b/README.md @@ -285,7 +285,7 @@ Returns the agent's process transcript in `items`. Append those items to the nex client.messages("...", model="claude-sonnet-4-6", doc_id=doc_id) ``` -Uses Anthropic's native Messages API and tool runner (so `model=` takes a plain Anthropic id, no `anthropic/` prefix). Install with `pip install 'pageindex[anthropic]'`. +Uses Anthropic's native Messages API and tool runner (so `model=` takes a plain model id, no `anthropic/` prefix). Install with `pip install 'pageindex[anthropic]'`. Pass a list of ids to `doc_id` to search several documents at once, and keep it identical across a conversation's calls. From 820a48749a2c7c95489705a166963eadc2b3d3d4 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 21:11:29 +0800 Subject: [PATCH 17/20] docs: drop the prefix caveat, explain the Agents SDK model name Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c244c8d3..9ab65752a 100644 --- a/README.md +++ b/README.md @@ -285,7 +285,7 @@ Returns the agent's process transcript in `items`. Append those items to the nex client.messages("...", model="claude-sonnet-4-6", doc_id=doc_id) ``` -Uses Anthropic's native Messages API and tool runner (so `model=` takes a plain model id, no `anthropic/` prefix). Install with `pip install 'pageindex[anthropic]'`. +Uses Anthropic's native Messages API and tool runner. Install with `pip install 'pageindex[anthropic]'`. Pass a list of ids to `doc_id` to search several documents at once, and keep it identical across a conversation's calls. @@ -320,6 +320,8 @@ agent = Agent( ) ``` +The Agents SDK resolves `model` itself, so a non-OpenAI name needs its `litellm/` prefix; `openai_agent_config()` adds that, plus prompt-cache settings for Claude models. +

From c615709ceece44fb33bb5f98a06448f72b9d86a2 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 21:13:05 +0800 Subject: [PATCH 18/20] =?UTF-8?q?docs:=20Claude=20Agent=20SDK=20item=20?= =?UTF-8?q?=E2=80=94=20key,=20model=20rule,=20model=3D=20in=20the=20explic?= =?UTF-8?q?it=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9ab65752a..d52eba862 100644 --- a/README.md +++ b/README.md @@ -362,7 +362,7 @@ runner = anthropic.Anthropic().beta.messages.tool_runner( Claude Agent SDK
-Install with `pip install 'pageindex[claude]'`. The Claude Agent SDK is async-native: +Install with `pip install 'pageindex[claude]'` and set `ANTHROPIC_API_KEY`. The Claude Agent SDK is async-native: ```python from claude_agent_sdk import ClaudeAgentOptions, ResultMessage, query @@ -373,10 +373,11 @@ async for message in query(prompt="Summarize the auditor's concerns.", options=o print(message.result) ``` -`claude_agent_config()` supplies the system prompt, the PageIndex MCP server, and its tool pre-approval. The explicit form: +`claude_agent_config()` supplies the system prompt, the PageIndex MCP server, and its tool pre-approval. The agent runs on Claude only: a Claude `chat_model` carries over, or pass `model=` directly. The explicit form: ```python options = ClaudeAgentOptions( + model="claude-sonnet-4-6", # optional; the SDK's default otherwise system_prompt=client.agent_instructions(doc_id=doc_id), mcp_servers={"pageindex": client.as_claude_mcp(doc_id=doc_id)}, allowed_tools=["mcp__pageindex"], From fd6f9870621dc7617e215576ffff5b82661b0021 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 21:20:32 +0800 Subject: [PATCH 19/20] docs: say chat_model carries over on messages() and the tool runner Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d52eba862..92d3dbb0b 100644 --- a/README.md +++ b/README.md @@ -285,7 +285,7 @@ Returns the agent's process transcript in `items`. Append those items to the nex client.messages("...", model="claude-sonnet-4-6", doc_id=doc_id) ``` -Uses Anthropic's native Messages API and tool runner. Install with `pip install 'pageindex[anthropic]'`. +Uses Anthropic's native Messages API and tool runner; a Claude `chat_model` carries over, or pass `model=` directly. Install with `pip install 'pageindex[anthropic]'`. Pass a list of ids to `doc_id` to search several documents at once, and keep it identical across a conversation's calls. @@ -342,7 +342,7 @@ final = runner.until_done() print(final.content[-1].text) ``` -`anthropic_runner_config()` fills every `tool_runner` slot except `messages`. The explicit form: +`anthropic_runner_config()` fills every `tool_runner` slot except `messages`; a Claude `chat_model` carries over, or pass `model=` directly. The explicit form: ```python runner = anthropic.Anthropic().beta.messages.tool_runner( From 01c8b0d6f2785c630a77d3d320469998addaca86 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 28 Aug 2026 21:22:38 +0800 Subject: [PATCH 20/20] docs: Anthropic examples rely on the carried-over chat_model Claude-Session: https://claude.ai/code/session_01F84VYrC858n9cr5eRjV4Cy --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 92d3dbb0b..c255f9082 100644 --- a/README.md +++ b/README.md @@ -282,10 +282,10 @@ Returns the agent's process transcript in `items`. Append those items to the nex **Use the Anthropic Messages format:** ```python -client.messages("...", model="claude-sonnet-4-6", doc_id=doc_id) +client.messages("...", doc_id=doc_id) ``` -Uses Anthropic's native Messages API and tool runner; a Claude `chat_model` carries over, or pass `model=` directly. Install with `pip install 'pageindex[anthropic]'`. +Uses Anthropic's native Messages API and tool runner; assumes a Claude `chat_model`, otherwise pass `model=`. Install with `pip install 'pageindex[anthropic]'`. Pass a list of ids to `doc_id` to search several documents at once, and keep it identical across a conversation's calls. @@ -335,14 +335,14 @@ Install with `pip install 'pageindex[anthropic]'`: import anthropic runner = anthropic.Anthropic().beta.messages.tool_runner( - **client.anthropic_runner_config(model="claude-sonnet-4-6", doc_id=doc_id), + **client.anthropic_runner_config(doc_id=doc_id), messages=[{"role": "user", "content": "Summarize the auditor's concerns."}], ) final = runner.until_done() print(final.content[-1].text) ``` -`anthropic_runner_config()` fills every `tool_runner` slot except `messages`; a Claude `chat_model` carries over, or pass `model=` directly. The explicit form: +`anthropic_runner_config()` fills every `tool_runner` slot except `messages`; assumes a Claude `chat_model`, otherwise pass `model=`. The explicit form: ```python runner = anthropic.Anthropic().beta.messages.tool_runner(