Skip to content

docs(rfd): Add RFD 107 discoverable tools - #1142

Open
JeanMertz wants to merge 3 commits into
mainfrom
anthropic-tool-reference
Open

docs(rfd): Add RFD 107 discoverable tools#1142
JeanMertz wants to merge 3 commits into
mainfrom
anthropic-tool-reference

Conversation

@JeanMertz

Copy link
Copy Markdown
Collaborator

RFD 107 proposes a third tool enablement state. A discoverable tool sits in the catalogue and is permitted, but its definition is withheld from the model until a search_tools builtin finds it, at which point a ConfigDelta promotes it to offered for the rest of the conversation. This keeps a large MCP catalogue out of the context window without hiding capability from the user, and it works on every provider; only cache preservation across a discovery is Anthropic-specific.

The design turns on two boundaries. The single Vec<ToolDefinition> that today serves the provider array, the describe_tools docs map, executor eligibility, and MCP startup splits into a catalogue and an offered subset, because a discoverable tool has to be searchable and callable while staying out of the provider's tools array. Promotion crosses the boundary RFD 078 closed against builtin config mutation, so it travels a host-owned channel carrying only tool names rather than outcome.config, and is folded against the state at its own position so it cannot silently revert a disable the user approved earlier in the same cycle.

RFD 105 gains a paragraph recording why deferring tool search is not neutral: its initial directive offers every enabled tool and withdraws every disabled one, leaving discovery nowhere to operate until the third state exists. The relationship is recorded as Extends on both RFD 081, whose enablement model 107 widens, and RFD 078.

RFD 107 proposes a third tool enablement state. A `discoverable` tool
sits in the catalogue and is permitted, but its definition is withheld
from the model until a `search_tools` builtin finds it, at which point
a `ConfigDelta` promotes it to offered for the rest of the
conversation. This keeps a large MCP catalogue out of the context
window without hiding capability from the user, and it works on every
provider; only cache preservation across a discovery is
Anthropic-specific.

The design turns on two boundaries. The single `Vec<ToolDefinition>`
that today serves the provider array, the `describe_tools` docs map,
executor eligibility, and MCP startup splits into a catalogue and an
offered subset, because a discoverable tool has to be searchable and
callable while staying out of the provider's tools array. Promotion
crosses the boundary RFD 078 closed against builtin config mutation,
so it travels a host-owned channel carrying only tool names rather
than `outcome.config`, and is folded against the state at its own
position so it cannot silently revert a disable the user approved
earlier in the same cycle.

RFD 105 gains a paragraph recording why deferring tool search is not
neutral: its initial directive offers every enabled tool and withdraws
every disabled one, leaving discovery nowhere to operate until the
third state exists. The relationship is recorded as `Extends` on both
RFD 081, whose enablement model 107 widens, and RFD 078.

Signed-off-by: Jean Mertz <git@jeanmertz.com>
Signed-off-by: Jean Mertz <git@jeanmertz.com>
Signed-off-by: Jean Mertz <git@jeanmertz.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant