---
title: "Tool result handling, verified"
description: "What reached the model when each client called a fixture tool: 1063 probe records across 17 clients, generated from data/verified/ by scripts/build-cards.js. Each cell is one run of the live probe (probe/) against the instrumented fixture server with the model mocked, so the verdict is read off..."
canonical: https://canimcp.io/tool-results
last-updated: 2026-11-11
---

# Tool result handling, verified

What reached the model when each client called a fixture tool: 1063 probe records across 17 clients, generated from `data/verified/` by `scripts/build-cards.js`. Each cell is one run of the live probe (`probe/`) against the instrumented fixture server with the model mocked, so the verdict is read off the request the client sent to the model, not inferred from source. Rerun the probe to change a cell.

`[…]` content reached the model · `{…}` structuredContent reached it · `[…]{…}` both · `⟨…⟩` the whole CallToolResult (or a wrapper around it) · `"…"` a placeholder or error text and no fixture payload · `≡` the mirror fixture, text and JSON identical, with the count · `×n` the payload arrived n times · `+_meta` the result `_meta` reached the model · `∅` tool hidden from the model · `↛` offered but never called · `✗` called but no result reached the model · blank: not run.

Columns are the probe scenarios (`probe/registry/scenarios.json`); drop the `tools.result.` prefix. Rows are client version, config and run (transport, and era policy when not both). The At column is the protocol revision seen on the wire.

| Client | Config | Run | At | summary_and_data | mirror | structured_only | sc_empty | with_image | audience_user | is_error | schema_match | schema_mismatch | app_only | large | no_content_key | empty_object | sc_string | sc_null | with_meta | meta_only |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Google ADK (Python) `2.14.0` | default | http | `2025-11-25` | ⟨…⟩ | ⟨…⟩×2 | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | "…" | ⟨…⟩ | ⟨…⟩ | "…" | "…" | "…" | ⟨…⟩ | ⟨…⟩+_meta | ⟨…⟩+_meta |
| Google ADK (Python) `2.14.0` | default | stdio | `2025-11-25` | ⟨…⟩ | ⟨…⟩×2 | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | "…" | ⟨…⟩ | ⟨…⟩ | "…" | "…" | "…" | ⟨…⟩ | ⟨…⟩+_meta | ⟨…⟩+_meta |
| Google ADK (Python) `2.14.0` | anthropic | stdio | `2025-11-25` | […] | ≡ | ⟨…⟩ | […] | […] | […] | […] | […] | "…" | […] | […] | "…" | "…" | "…" | […] | […] | […] |
| Google ADK (Python) `2.14.0` | modern | stdio | `2026-07-28` | ⟨…⟩ | ⟨…⟩×2 | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | "…" | ⟨…⟩ | ⟨…⟩ | "…" | "…" | ⟨…⟩ | ⟨…⟩ | ⟨…⟩+_meta | ⟨…⟩+_meta |
| Google ADK (Python) `2.14.0` | strict-errors | stdio | `2025-11-25` | ⟨…⟩ | ⟨…⟩×2 | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ✗ | ⟨…⟩ | ⟨…⟩ | ✗ | ✗ | ✗ | ⟨…⟩ | ⟨…⟩+_meta | ⟨…⟩+_meta |
| Microsoft Agent Framework `1.25.0` | default | http | `2026-07-28` | {…} | ≡ | {…} | "…" | {…} | {…} | "…" | {…} | "…" | {…} | {…} | "…" | "…" | {…} | […] | {…} | […] |
| Microsoft Agent Framework `1.25.0` | default | stdio | `2026-07-28` | {…} | ≡ | {…} | "…" | {…} | {…} | "…" | {…} | "…" | {…} | {…} | "…" | "…" | {…} | […] | {…} | […] |
| Microsoft Agent Framework `1.25.0` | anthropic | stdio | `2026-07-28` | {…} | ≡ | {…} | "…" | {…} | {…} | "…" | {…} | "…" | {…} | {…} | "…" | "…" | {…} | […] | {…} | […] |
| Microsoft Agent Framework `1.25.0` | both | stdio | `2026-07-28` | […]{…} | ≡×2 | {…} | […] | […]{…} | […]{…} | "…" | […]{…} | "…" | […]{…} | […]{…} | "…" | "…" | […]{…} | […] | […]{…} | […] |
| Microsoft Agent Framework `1.25.0` | content-first | stdio | `2026-07-28` | […] | ≡ | {…} | […] | […] | […] | "…" | […] | "…" | […] | […] | "…" | "…" | […] | […] | […] | […] |
| Microsoft Agent Framework `1.25.0` | content-only | stdio | `2026-07-28` | […] | ≡ | "…" | […] | […] | […] | "…" | […] | "…" | […] | […] | "…" | "…" | […] | […] | […] | […] |
| Microsoft Agent Framework `1.25.0` | responses | stdio | `2026-07-28` | {…} | ≡ | {…} | "…" | {…} | {…} | "…" | {…} | "…" | {…} | {…} | "…" | "…" | {…} | […] | {…} | […] |
| Microsoft Agent Framework `1.25.0` | structured-only | stdio | `2026-07-28` | {…} | ≡ | {…} | "…" | {…} | {…} | "…" | {…} | "…" | {…} | {…} | "…" | "…" | {…} | "…" | {…} | "…" |
| [Cline](/clients/cline.md) `3.0.74` | default | http | `2025-11-25` | ⟨…⟩ | ⟨…⟩×2 | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | "…" | ↛ | […] | ⟨…⟩ | ⟨…⟩ | "…" | "…" | ⟨…⟩+_meta | ⟨…⟩+_meta |
| [Cline](/clients/cline.md) `3.0.74` | default | stdio | `2024-11-05` | ⟨…⟩ | ⟨…⟩×2 | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ↛ | […] | ⟨…⟩ | "…" | ⟨…⟩ | ⟨…⟩ | ⟨…⟩+_meta | ⟨…⟩+_meta |
| [Codex CLI](/clients/openai-codex.md) `0.169.0-alpha.3` | default | http | `2025-06-18` | {…} | ≡ | {…} |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| [Codex CLI](/clients/openai-codex.md) `0.169.0-alpha.3` | default | stdio | `2025-06-18` | {…} | ≡ | {…} | "…" | {…} | {…} | {…} | {…} | {…} | ∅ | {…} | {…} | "…" | {…} | […] | {…} | […] |
| [Codex CLI](/clients/openai-codex.md) `0.169.0-alpha.3` | mcp-2026-07-28 | http | `2026-07-28` | {…} |  |  |  |  |  |  |  |  |  |  |  |  |  |  | {…} | […] |
| [Codex CLI](/clients/openai-codex.md) `0.169.0-alpha.3` | mcp-2026-07-28 | stdio | `2025-06-18` | {…} | ≡ | {…} | "…" | {…} | {…} | {…} | {…} | {…} | ∅ | {…} | {…} | "…" | {…} | […] |  |  |
| crewAI `1.15.37` | default | http | `2025-11-25` | […] | ≡ | {…} | […] | […] | […] | […] | […] | "…" | […] | […] | "…" | "…" | "…" | […] | […] | […] |
| crewAI `1.15.37` | default | stdio | `2025-11-25` | […] | ≡ | {…} | […] | […] | […] | […] | […] | "…" | […] | […] | "…" | "…" | "…" | […] | […] | […] |
| crewAI `1.15.37` | crewai-tools | stdio | `2025-11-25` | […] | ≡ | "…" | […] | […] | […] | […] | […] | "…" | […] | […] | "…" | "…" | "…" | […] | […] | […] |
| deepagents `0.7.34+code-0.2.5` | default | http | `2025-11-25` | […] | ≡ | "…" | […] | […] | […] | […] | […] | ✗ | […] | […] | ✗ | ✗ | ✗ | […] | […] | […] |
| deepagents `0.7.34+code-0.2.5` | default | stdio | `2025-11-25` | […] | ≡ | "…" | […] | […] | […] | […] | […] | ✗ | […] | […] | ✗ | ✗ | ✗ | […] | […] | […] |
| deepagents `0.7.34+code-0.2.5` | hooks | stdio | `2025-11-25` | […]{…} | ≡×2 | {…} | […] | […]{…} | […]{…} | […] | […]{…} | ✗ | […]{…} | […]{…} | ✗ | ✗ | ✗ | […] | […]{…} | […] |
| deepagents `0.7.34+code-0.2.5` | interpreter | stdio | `2025-11-25` | […] | ≡ | "…" | […] | […] | […] | […] | […] | ∅ | […] | […] | ∅ | ∅ | ∅ | […] | […] | […] |
| eve `1.0.0-rc.6` | default | http | `2026-07-28` | {…} | ≡ | {…} | "…" | […] | {…} | […] | {…} | {…} | {…} | {…} | {…} | "…" | {…} | "…" | {…} | […] |
| eve `1.0.0-rc.6` | no-discovery | http | `2025-11-25` | {…} | ≡ | {…} | "…" | […] | {…} | […] | {…} | {…} | {…} | {…} | {…} | "…" | {…} | "…" | {…} | […] |
| [fast-agent](/clients/fast-agent.md) `0.10.53` | default | http | `2026-07-28` | {…} | ≡ | {…} | "…" | {…} | {…} | {…} | {…} | "…" | ∅ | {…} | "…" | "…" | {…} | […] | {…} | […] |
| [fast-agent](/clients/fast-agent.md) `0.10.53` | default | stdio | `2026-07-28` | {…} | ≡ | {…} | "…" | {…} | {…} | {…} | {…} | "…" | ∅ | {…} | "…" | "…" | {…} | […] | {…} | […] |
| [fast-agent](/clients/fast-agent.md) `0.10.53` | anthropic | stdio | `2026-07-28` | {…} | ≡ | {…} | "…" | {…} | {…} | {…} | {…} | "…" | ∅ | {…} | "…" | "…" | {…} | […] | {…} | […] |
| [fast-agent](/clients/fast-agent.md) `0.10.53` | legacy | stdio | `2025-11-25` | {…} | ≡ | {…} | "…" | {…} | {…} | {…} | {…} | "…" | ∅ | {…} | "…" | "…" | "…" | […] | {…} | […] |
| [fast-agent](/clients/fast-agent.md) `0.10.53` | modern | stdio | `2026-07-28` | {…} | ≡ | {…} | "…" | {…} | {…} | {…} | {…} | "…" | ∅ | {…} | "…" | "…" | {…} | […] | {…} | […] |
| fx (native engine) `0.0.16` | default | stdio | `2026-07-28` | ⟨…⟩ | ⟨…⟩×2 | ⟨…⟩ | ⟨…⟩ | […]{…} | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | "…" | "…" | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ |
| [goose](/clients/goose.md) `1.58.0` | default | http | `2026-07-28` | […] | ≡ | "…" |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| [goose](/clients/goose.md) `1.58.0` | default | stdio | `2026-07-28` | […] | ≡ | "…" | […] | […] | […] | […] | […] | […] | ∅ | […] | "…" | "…" | […] | […] | […] | […] |
| [goose](/clients/goose.md) `1.58.0` | anthropic | stdio | `2026-07-28` | […] | ≡ | "…" | […] | […] | […] | […] | […] | […] | ∅ | […] | "…" | "…" | […] | […] | […] | […] |
| [goose](/clients/goose.md) `1.58.0` | code-mode | stdio | `2026-07-28` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | ∅ | ∅ |
| [Hermes Agent](/clients/hermes-agent.md) `0.23.0+689.ga9ff979` | default | http | `2025-11-25` | […]{…} | ≡ | {…} | […] | […]{…} | […]{…} | […] | […]{…} | "…" | […]{…} | […] | "…" | "…" | "…" | […] | […]{…}+_meta | […]+_meta |
| [Hermes Agent](/clients/hermes-agent.md) `0.23.0+689.ga9ff979` | default | stdio | `2025-11-25` | […]{…} | ≡ | {…} | […] | […]{…} | […]{…} | […] | […]{…} | "…" | […]{…} | […] | "…" | "…" | "…" | […] | […]{…}+_meta | […]+_meta |
| [Hermes Agent](/clients/hermes-agent.md) `0.23.0+689.ga9ff979` | legacy | stdio | `2025-11-25` | […]{…} | ≡ | {…} | […] | […]{…} | […]{…} | […] | […]{…} | "…" | […]{…} | […] | "…" | "…" | "…" | […] | […]{…}+_meta | […]+_meta |
| [Hermes Agent](/clients/hermes-agent.md) `0.23.0+689.ga9ff979` | stateless | stdio | `2026-07-28` | […]{…} | ≡ | {…} | […] | […]{…} | […]{…} | […] | […]{…} | "…" | […]{…} | […] | "…" | "…" | […] | […] | […]{…}+_meta | […]+_meta |
| [Hermes Agent](/clients/hermes-agent.md) `0.23.0+689.ga9ff979` | tool-search-off | stdio | `2025-11-25` | […]{…} | ≡ | {…} | […] | […]{…} | […]{…} | […] | […]{…} | "…" | […]{…} | […] | "…" | "…" | "…" | […] | […]{…}+_meta | […]+_meta |
| libfx (fx JavaScript adapter) `0.0.0-eab1401` | default | stdio | `2025-11-25` | […]{…} | ≡ | {…} | […] | […]{…} | […]{…} | […]{…} | […]{…} | "…" | […]{…} | "…" | {…} | "…" | "…" | "…" | […]{…} | […] |
| Mastra `mcp-2.9.0-alpha.1+core-1.83.0-alpha.1` | default | http | `2026-07-28` | {…} | ≡ | {…} |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| Mastra `mcp-2.9.0-alpha.1+core-1.83.0-alpha.1` | default | stdio | `2026-07-28` | {…} | ≡ | {…} | "…" | {…} | {…} | […] | […] | "…" | ∅ | {…} | "…" | "…" | {…} | "…" | {…} | ⟨…⟩+_meta |
| Mastra `mcp-2.9.0-alpha.1+core-1.83.0-alpha.1` | legacy | stdio | `2025-11-25` | {…} | ≡ | {…} |  |  |  |  |  |  |  |  |  |  |  |  | {…} | ⟨…⟩+_meta |
| Mastra `mcp-2.9.0-alpha.1+core-1.83.0-alpha.1` | return-errors | stdio | `2026-07-28` | {…} |  |  |  |  |  | ⟨…⟩ |  |  |  |  |  |  |  |  | {…} | ⟨…⟩+_meta |
| [opencode](/clients/opencode.md) `0.0.0-a98e3fa`, `2.2.6` | default | http | `2025-11-25` | {…} / {…} | ≡ / ≡ | {…} / {…} | "…" / "…" | {…} / {…} | {…} / {…} | […] / […] | {…} / {…} | {…} / "…" | {…} / {…} | {…} / {…} | {…} / {…} | "…" / "…" | "…" / "…" | "…" / "…" | {…} / {…} | […] / […] |
| [opencode](/clients/opencode.md) `0.0.0-a98e3fa`, `2.2.6` | default | stdio | `2025-11-25` | {…} / {…} | ≡ / ≡ | {…} / {…} | "…" / "…" | {…} / {…} | {…} / {…} | […] / […] | {…} / {…} | {…} / "…" | {…} / {…} | {…} / {…} | {…} / {…} | "…" / "…" | "…" / "…" | "…" / "…" | {…} / {…} | […] / […] |
| [opencode](/clients/opencode.md) `0.0.0-a98e3fa`, `2.2.6` | codemode-off | stdio | `2025-11-25` | […] / […] | ≡ / ≡ | {…} / {…} | […] / […] | […] / […] | […] / […] | ⟨…⟩ / ⟨…⟩ | […] / […] | […] / "…" | […] / […] | […] / […] | {…} / {…} | "…" / "…" | "…" / "…" | "…" / "…" | […] / […] | […] / […] |
| [opencode](/clients/opencode.md) `0.0.0-a98e3fa`, `2.2.6` | execute-denied | stdio | `2025-11-25` | […] / […] | ≡ / ≡ | {…} / {…} | […] / […] | […] / […] | […] / […] | ⟨…⟩ / ⟨…⟩ | […] / […] | […] / "…" | […] / […] | […] / […] | {…} / {…} | "…" / "…" | "…" / "…" | "…" / "…" | […] / […] | […] / […] |
| [opencode](/clients/opencode.md) `0.0.0-a98e3fa`, `2.2.6` | protocol-2026-07-28 | stdio | `2026-07-28` | […] / […] | ≡ / ≡ | {…} / {…} | […] / […] | […] / […] | […] / […] | ⟨…⟩ / ⟨…⟩ | […] / […] | […] / "…" | […] / […] | […] / […] | "…" / "…" | "…" / "…" | […] / […] | […] / […] | […] / […] | […] / […] |
| pi `1.5.0` | default | http | `2025-11-25` | […] | ≡ | {…} | […] | […] | […] | […] | […] | […] | […] | […] | {…} | "…" | […] | […] | […] | […] |
| pi `1.5.0` | default | stdio | `2025-11-25` | […] | ≡ | {…} | […] | […] | […] | […] | […] | […] | […] | […] | {…} | "…" | […] | […] | […] | […] |
| pi `1.5.0` | anthropic | stdio | `2025-11-25` | […] | ≡ | {…} | […] | […] | […] | […] | […] | […] | […] | […] | {…} | "…" | […] | […] | […] | […] |
| pi `1.5.0` | codemode | stdio | `2025-11-25` | ⟨…⟩ | ⟨…⟩×2 | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | […] | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ |
| pi `1.5.0` | deferred | stdio | `2025-11-25` | […] | ≡ | {…} | […] | […] | […] | […] | […] | […] | […] | […] | {…} | "…" | […] | […] | […] | […] |
| Strands Agents `1.64.0+mcp-2.3.0` | default | http | `2026-07-28` | […] | ≡ | "…" | […] | […] | […] | […] | […] | "…" | […] | […] | "…" | "…" | […] | […] | […] | […] |
| Strands Agents `1.64.0+mcp-2.3.0` | default | stdio | `2026-07-28` | […] | ≡ | "…" | […] | […] | […] | […] | […] | "…" | […] | […] | "…" | "…" | […] | […] | […] | […] |
| Strands Agents `1.64.0+mcp-2.3.0` | anthropic | stdio | `2026-07-28` | […] | ≡ | "…" | […] | […] | […] | […] | […] | "…" | […] | […] | "…" | "…" | […] | […] | […] | […] |
| Strands Agents `1.64.0+mcp-2.3.0` | responses | stdio | `2026-07-28` | […] | ≡ | "…" | […] | […] | […] | […] | […] | "…" | […] | […] | "…" | "…" | […] | […] | […] | […] |
| ts-sdk-client `2.4.0` | auto | stdio | `2025-11-25` | ⟨…⟩ | ⟨…⟩×2 | ⟨…⟩ |  |  |  |  |  |  |  |  |  |  |  |  | ⟨…⟩+_meta | ⟨…⟩+_meta |
| ts-sdk-client `2.4.0` | legacy | stdio | `2025-11-25` | ⟨…⟩ | ⟨…⟩×2 | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ✗ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ⟨…⟩ | ✗ | ✗ | ⟨…⟩+_meta | ⟨…⟩+_meta |

## Scenarios

| Scenario | Capability | Question |
|---|---|---|
| summary_and_data | `tools.result.structuredContent` | Both fields present and different: which one does the model read? |
| mirror | `tools.result.structuredContent` | Text mirrors the JSON exactly: once, twice, or deduplicated? |
| structured_only | `tools.result.structuredContent` | content is empty: does the data reach the model, or a placeholder? |
| sc_empty | `tools.result.structuredContent` | structuredContent is {}: treated as present or absent? |
| with_image | `tools.result.media` | Does an image block change which field wins, and does the image survive? |
| audience_user | `tools.result.audience` | Does a block with audience [user] reach the model? |
| is_error | `tools.result.isError` | On isError, which field carries the error text the model sees? |
| schema_match | `tools.result.outputSchema` | With a declared outputSchema that matches, which field reaches the model? |
| schema_mismatch | `tools.result.outputSchema` | With a declared outputSchema that does not match, what does the model see? |
| app_only | `apps.visibility` | Is a tool with _meta.ui.visibility [app] offered to the model? |
| large | `tools.result.content` | Over 64 KiB: what is dropped, truncated, or reordered? |
| no_content_key | `tools.result.content` | No content key at all: parse failure, empty, or the data? |
| empty_object | `tools.result.content` | An empty result object: parse failure, empty, or placeholder? |
| sc_string | `tools.result.structuredContent` | A non-object structuredContent (legal since 2026-07-28): same path as an object? |
| sc_null | `tools.result.structuredContent` | structuredContent null: absent or present? |
| with_meta | `tools.result._meta` | Result-level _meta next to both payload fields: does it reach the model, and does its presence change which field wins? |
| meta_only | `tools.result._meta` | Result-level _meta with content only: does _meta alone switch the client to an envelope or another path? |

## Every record

The full verdict line per run, with a link to the record and its captures, one page per client.

- [Google ADK (Python)](/tool-results/adk-python.md): 85 records, version 2.14.0, no registry entry yet. Overlay data/verified/adk-python.json.
- [Microsoft Agent Framework](/tool-results/agent-framework.md): 136 records, version 1.25.0, no registry entry yet. Overlay data/verified/agent-framework.json.
- [Cline](/tool-results/cline.md): 34 records, version 3.0.74, registry entry cline. Overlay data/verified/cline.json.
- [Codex CLI](/tool-results/codex.md): 38 records, version 0.169.0-alpha.3, registry entry openai-codex. Overlay data/verified/codex.json.
- [crewAI](/tool-results/crewai.md): 51 records, version 1.15.37, no registry entry yet. Overlay data/verified/crewai.json.
- [deepagents](/tool-results/deepagents.md): 68 records, version 0.7.34+code-0.2.5, no registry entry yet. Overlay data/verified/deepagents.json.
- [eve](/tool-results/eve.md): 34 records, version 1.0.0-rc.6, no registry entry yet. Overlay data/verified/eve.json.
- [fast-agent](/tool-results/fast-agent.md): 85 records, version 0.10.53, registry entry fast-agent. Overlay data/verified/fast-agent.json.
- [fx (native engine)](/tool-results/fx.md): 17 records, version 0.0.16, no registry entry yet. Overlay data/verified/fx.json.
- [goose](/tool-results/goose.md): 39 records, version 1.58.0, registry entry goose. Overlay data/verified/goose.json.
- [Hermes Agent](/tool-results/hermes-agent.md): 85 records, version 0.23.0+689.ga9ff979, registry entry hermes-agent. Overlay data/verified/hermes-agent.json.
- [libfx (fx JavaScript adapter)](/tool-results/libfx.md): 17 records, version 0.0.0-eab1401, no registry entry yet. Overlay data/verified/libfx.json.
- [Mastra](/tool-results/mastra.md): 29 records, version mcp-2.9.0-alpha.1+core-1.83.0-alpha.1, no registry entry yet. Overlay data/verified/mastra.json.
- [opencode](/tool-results/opencode.md): 170 records, versions 0.0.0-a98e3fa, 2.2.6, registry entry opencode. Overlay data/verified/opencode.json.
- [pi](/tool-results/pi.md): 85 records, version 1.5.0, no registry entry yet. Overlay data/verified/pi.json.
- [Strands Agents](/tool-results/strands.md): 68 records, version 1.64.0+mcp-2.3.0, no registry entry yet. Overlay data/verified/strands.json.
- [ts-sdk-client](/tool-results/ts-sdk-client.md): 22 records, version 2.4.0, no registry entry yet. Overlay data/verified/ts-sdk-client.json.
