Repository navigation
feat(api): an agent asked to connect a service knows the runtime does it - #277
Merged
Merged
Conversation
…ovider and add it here
Asked to connect a service the runtime has a provider for, an agent answered that it had no such
connector and never called the runtime, though search lists the provider and add_connection starts
the connection. The instructions never said that connecting a person's accounts is something this
server does. Where search and add_connection are both listed, they now say so, in place of the
sentence on add_connection, whose two facts its description keeps:
Accounts at services are connected through this server: asked to connect, link, sign in to or
use a service, call search with its words, which lists the providers that match, then
add_connection with a provider's name, which the person approves on the page it links. Say a
service cannot be connected only when no provider or server matches.
The sentences name no service and no vendor, so they hold for any provider the runtime lists, and
a service a server of the org already serves is never called one that cannot be connected.
/mcp took 1,997 of the 2,000 characters its instructions may, so other words make room:
- The answering sentence keeps its idea, two characters shorter: "Say what was done and what the
person can do next, in the words of playbooks, functions, workflows and runs, not the tools'
names, fields or rules; an id or status only where needed to act."
- Seven sentences are tightened without losing an idea: "or in workflows", "or a person and
answers started", "runs a program whose output is the same for the same input", "retrieves run
results", "not your notes", "a build, input { build: {} }" and "on a schedule or an event".
- Three ideas move to the tools' descriptions. get_guide's description names the recipes the
connection's tools can follow, by the rule that offers them as prompts, in place of the recipes
clause. What execute and dry_run do is left to their descriptions, which say it. The paging rule
goes to the paged tools in the commits that follow.
instructionsFor no longer takes the recipes. With every tool the instructions take 1,993 characters
on /mcp, 1,912 on the org endpoint and 1,618 on the playbook endpoint.
The org endpoint's listing bound moves from 13,000 to 13,100 bytes, the least hundred that holds the
listing once search and add_connection carry their new words, 13,019 bytes with every tool at the
end of this series; the listing passes 13,000 with the next words of search. The README records the
step and gives the listings as the server's test pins them at the end of this series.
docs/assets/openapi.json is written again, since the document's description takes the first
sentences of the instructions.
Tests pin the instructions of each endpoint with every tool, the connecting sentences on /mcp and
the org endpoint, their absence where search or add_connection is not listed, that no endpoint
names a recipe, execute or dry_run, the lengths, and the recipes get_guide names on each endpoint,
to a key that may only read and in turn for several. The server's tests follow the words they read:
mcp-endpoint.test.ts drops the recipes argument and the fixture only it read; speaking-to-agents,
asking-in-a-chat and what-the-person-wants-kept read the tightened sentences; served-tools.test.ts
pins the recipes get_guide names on /mcp; and served-schemas.test.ts the listings, at 43,625 bytes
on /mcp, 12,970 on the org endpoint and 30,863 on the playbook endpoint.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… as the person needs The rule that a page of events is read on only as the person needs left the MCP instructions, to make room for what an agent asked to connect a service is told. The cursor sentence of the description of list_playbook_events now ends with it, "and `cursor` is the next_cursor of the page before, to read on only as the person needs." A test pins it, and docs/assets/openapi.json is written again. The server's served-tools.test.ts pins the rule in list_playbook_events, and served-schemas.test.ts the listings, at 43,662 bytes on /mcp, 12,970 on the org endpoint and 30,900 on the playbook endpoint. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…which add_connection takes An agent asked to connect a service has to find its provider. The org's search now says how: "With `terms` naming a service, `providers` lists what a person may connect that no server serves yet, found as tools are, for add_connection by name." It replaces "`providers` lists what a person may connect that no server serves yet.", and keeps its fact, which no MCP tool's output schema carries. "found as tools are" holds, since providers and tools are found by the same scoring. The description took 761 of the 800 characters a description may, so the sentences it shares with the playbook's search, and its own sentence on the org, are tightened without losing a fact: - "which a function names in its tools as server/tool or server/*, and execute calls" becomes "named in a function's tools as server/tool or server/* and called by execute"; - "hold the words" becomes "hold them"; - "Each server is asked for its tools when this is called" becomes "Each server is asked at each call"; - ", and introspect describes a tool whole" becomes "; introspect describes a tool whole"; - "searches the tool servers of the whole org, naming the playbooks each serves" becomes "searches every tool server of the org, with the playbooks each serves". The org's search takes 798 characters and the playbook's 555. search-in-org.test.ts pins the new sentences, and docs/assets/openapi.json is written again. The server's served-tools.test.ts pins search at 798 characters with the new sentence, and add_connection, unchanged here, at 345 in a test of its own; tool-servers-without-a-playbook reads the sentence on the org; and served-schemas.test.ts pins the listings, at 43,699 bytes on /mcp, 13,007 on the org endpoint, past 13,000 and within the 13,100 the api set, and 30,865 on the playbook endpoint. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…erson needs The rule that a page of runs is read on only as the person needs left the MCP instructions, to make room for what an agent asked to connect a service is told. The cursor sentence of the description of list_runs now ends with it, "`cursor` is the next_cursor of the page before, to read on only as the person needs." A test pins it, and docs/assets/openapi.json is written again. The server's served-tools.test.ts pins the rule in list_runs beside list_playbook_events, and served-schemas.test.ts the listings, at 43,736 bytes on /mcp, 13,007 on the org endpoint and 30,902 on the playbook endpoint. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…service that search lists An agent asked to connect a service reads add_connection's description for its situation, so the description now opens with it: "Starts connecting a person's account at a service, named by a provider that search lists, by its name and placeholders, answered pending with a link to Studio's page." It replaces "Connects a service the org's functions should reach: a provider search lists, ...". What it says of a server given by hand and of the page the person finishes on stays. It takes 357 characters, and add-connection.test.ts pins the whole description. docs/assets/openapi.json is written again. The server's served-tools.test.ts pins the opening and the 357 characters, and served-schemas.test.ts the listings, at 43,748 bytes on /mcp, 13,019 on the org endpoint and 30,902 on the playbook endpoint. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…as the person needs The rule that a page of open requests is read on only as the person needs left the MCP instructions, to make room for what an agent asked to connect a service is told. It now ends the sentence on the filters and the cursor of list_interactions: "`cursor` is the next_cursor of the page before, to read on only as the person needs." The description would have taken 802 of the 800 characters a description may, so "as recorded when it was asked" becomes "as recorded when asked", and it takes 795. A test pins the rule, and docs/assets/openapi.json is written again. The server's answering-what-runs-wait-on.test.ts reads the shorter sentence and pins 795 characters in five sentences, served-tools.test.ts pins the rule in each of the three paged tools, and served-schemas.test.ts the listings, at 43,778 bytes on /mcp, 13,019 on the org endpoint and 30,932 on the playbook endpoint. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ice is told The MCP reference's list of what a connecting agent is told now says that, where search and add_connection are both listed, a person's accounts at services are connected through Auto Runtime, by search with the service's words and add_connection with the name of a provider that matches, which the person approves on the page it links, and that the agent says a service cannot be connected only when no provider or server matches. It drops the sentence on add_connection and the paging rule, gives the answering and closing sentences as they now read, and says which tool descriptions carry what the instructions leave out: the recipes in get_guide's, what execute and dry_run do in theirs, and the paging rule in those of list_runs, list_playbook_events and list_interactions. Its tool servers section says that an agent asked to connect a service finds its provider through search, and its prompts section that get_guide's description names the recipes a connection offers as prompts. The engineering reference gives the same contents and the new sizes: 1,993, 1,912 and 1,618 characters of instructions, 798 characters of search's description, and listings of 43,778, 13,019 and 30,932 bytes under bounds of 48,000, 13,100 and 40,000. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
rami-hatoum
force-pushed
the
feat/an-agent-asked-to-connect-a-service
branch
from
October 21, 2026 14:15
afe8983 to
b2221b1
Compare
rami-hatoum
pushed a commit
that referenced
this pull request
Oct 21, 2026
🤖 I have created a release *beep* *boop* --- ## [0.16.0](v0.15.0...v0.16.0) (2026-10-21) ### Features * **api:** an agent asked to connect a service knows the runtime does it ([#277](#277)) ([d4e9d1f](d4e9d1f)) * **secrets:** secrets kept in AWS Parameter Store, moved there and back at start ([#275](#275)) ([eae2d70](eae2d70)) * **secrets:** the secrets key in AWS KMS; a store that cannot answer now fails the call ([#271](#271)) ([374c1b2](374c1b2)) * **server:** the agent's relay reaches its runtime again within seconds, on the protocol's means ([#278](#278)) ([92da8a1](92da8a1)) ### Bug Fixes * **server:** a ledger of another version says where it is, what to do and where to ask ([#273](#273)) ([168a756](168a756)) * **tool-servers:** a path argument that holds a slash is sent encoded as one segment, not refused ([#276](#276)) ([9942eda](9942eda)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: beonautobot[bot] <298957281+beonautobot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A person tells their agent to connect a service their business uses, and the agent answers that it has no such connector of its own, though the runtime lists a provider for it and
add_connectionwould start the consent. The runtime's MCP instructions never said that connecting a person's accounts at services is something this server does, so an agent read "connect" in its own vocabulary. Now, whereversearchandadd_connectionare both served, the instructions say that accounts at services are connected through this server: asked to connect, link, sign in to or use a service, the agent callssearchwith the service's words, which lists the providers that match, thenadd_connectionwith a provider's name, which starts a consent the person finishes on the page it links; it says a service cannot be connected only when no provider matches. The rule names no service, no vendor and no agent, and holds for any provider the runtime lists now or later. The org endpoint'ssearchsays that, with terms naming a service, its answer lists the providers a person may connect now, foradd_connectionby name, andadd_connectionopens with the agent's situation: starting to connect a person's account at a service named by a provider thatsearchlists.The instructions have a bound of two thousand characters, which the own-org endpoint had reached, so three ideas moved from the instructions into the tools they concern, lost nowhere: the recipes a connection can follow are named by
get_guide's own description, whatexecuteanddry_runanswer stays in their descriptions, and the rule to read on only as the person needs sits on the three paged tools. Seven sentences were tightened without losing a word that carries meaning, the sentence on how to answer is shorter, and the org endpoint's listing bound moves from thirteen thousand to thirteen thousand one hundred bytes, the least hundred that holds it, with the step in the README's history of that bound. Every endpoint's instructions, every changed description and every listing size is pinned by the tests, and the MCP reference pages say what a connecting agent is told now.