Skip to content

feat(connections): a connect link names what its page cannot know, and the agent shows it as a link - #290

Merged
rami-hatoum merged 1 commit into
mainfrom
feat/a-connect-link-names-what-its-page-cannot-know
Oct 22, 2026
Merged

rami-hatoum merged 1 commit into
mainfrom
feat/a-connect-link-names-what-its-page-cannot-know

Conversation

@rami-hatoum

Copy link
Copy Markdown
Contributor

What this changes

The connect link names only what its page cannot know. On the Studio the runtime serves itself, the page at the runtime's own origin knows its server and asks the runtime for its org, so the link there is …/studio/connect?connection=…&token=…. On the hosted Studio, which serves many runtimes, the link keeps naming the server and the org. The HTTP reference shows both forms.

The agent is told how to show it. The answer of add_connection ends by saying that the person approves the connection, and gives its credential where it takes one, on the page the link opens, within ten minutes, shown to them as a link named "Approve the connection", never as its address. A server given by hand names the link "Approve the connection".

The tools claim the request. A service a playbook will use is connected on this server, whatever connector the agent has of its own for it: the instructions say so where they introduce connecting a service, and the description of add_connection says it in its own words. The description of add_connection also says that nothing is granted by the call and no credential passes through it: the person allows it at the service, or gives its credential, on the page the link opens, or nothing happens. The org endpoint's listing grows past its bound, which moves to the least hundred that holds it, as the api README records.

Tests

  • The served link names the connection and the token alone; the hosted link names the server, the org, the connection and the token, in that order; the served Studio's routes read the short form.
  • The answer's words with a provider's title and for a server given by hand, over HTTP and as the MCP tool.
  • The instructions' and the descriptions' pinned texts and the listings' pinned sizes; the OpenAPI document as served.

Checklist

  • The PR title is a conventional commit with a workspace scope, such as feat(reasoning): .... It becomes the squash commit and the changelog entry.
  • pnpm check passes locally, with every file at 100% coverage.
  • I've signed the Contributor License Agreement (the CLA bot asks on your first PR).

…d the agent shows it as a link

An agent showed a person the connect link as its raw address, which named the server and the
org though the Studio the runtime serves knows both, and nothing told the agent to show it as a
named link. A safety check of an agent's client also read add_connection as the agent granting
itself access, when the call grants nothing.

The link. connectPageOf sets server and org only where Studio is the hosted one, studio.served
false. On the Studio the runtime serves, the link holds connection and token alone, since that
page knows the runtime that serves it and asks it for the org.

The words. The outcome of add_connection ends with linkWordsOf, which says the link is shown to
the person as a link named "Approve the <title> connection", with the title of the provider the
connection was added from, looked up by its name in the provider list the addition was resolved
against, or "Approve the connection" for a server given by hand, never as its address.

The description of add_connection says after its first sentence "A service a playbook will use
is connected here, whatever connector the agent has of its own for it." and ends with "Nothing
is granted by this call and no credential passes through it: the person allows it at the
service, or gives its credential, on the page the link opens, or nothing happens." It takes 637
of its 800 characters, in 5 sentences. The listing of /mcp grows to 45,187 bytes and that of the
org endpoint to 13,435, so the org endpoint's bound moves from 13,200 to 13,500, the least
hundred that holds it, as the api README records.

The instructions, where search and add_connection are both listed, open their connecting
sentence with "A service a playbook will use is connected on this server, whatever connector
the agent has of its own", and take 1,993 of their 2,000 characters on /mcp and on the org
endpoint.

The HTTP and MCP tests of add_connection, the tests of the served Studio's routes, the HTTP, MCP
and self-hosting references, the api and connections READMEs and the OpenAPI document follow.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@rami-hatoum
rami-hatoum merged commit 8d1de91 into main Oct 22, 2026
20 checks passed
@rami-hatoum
rami-hatoum deleted the feat/a-connect-link-names-what-its-page-cannot-know branch October 22, 2026 12:19
rami-hatoum pushed a commit that referenced this pull request Oct 22, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.17.0](v0.16.0...v0.17.0)
(2026-10-22)


### Features

* **api:** the instructions and the playbook tools claim a request for a
playbook ([#288](#288))
([e4e6f86](e4e6f86))
* **connections:** a client names the scopes it may ask, and a way takes
the one covering its scope
([#289](#289))
([e05a127](e05a127))
* **connections:** a connect link names what its page cannot know, and
the agent shows it as a link
([#290](#290))
([8d1de91](8d1de91))
* **definitions:** the overview is its author's markdown, and a read
names what uses a definition
([#287](#287))
([7c1c637](7c1c637))
* **ledger:** a layout number, written at creation and checked at open,
replaces the shape checks
([#281](#281))
([a48be0e](a48be0e))


### Bug Fixes

* **operations:** a version 7 uuid made in the same millisecond as the
last sorts after it
([#285](#285))
([846a36d](846a36d))
* **prediction:** a model loads with the telemetry of onnxruntime off,
so its process leaves nothing
([#283](#283))
([ea1a6d8](ea1a6d8))
* **server:** the start's waits run on Effect's clock and the restart
mark names its port
([#282](#282))
([db6c858](db6c858))

---
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>
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