Give each check a specific job
Authentication, resource scopes, profile filtering and engine permissions govern different boundaries. A visible tool name alone is not a grant of permission to execute it.
Case study 03 / Connected tools
A shared gateway connects agents to separate tools. Identity, access scopes and conversation profiles each answer a different question about what an agent can do.
One request allowed. Another stopped.Try the gateway boundary.Actual gateway responses with fictional local services.A small tool for an everyday question
Trains MCP brings a service’s platform, departure time and status into one answer.
Sample data · 24 May 2026Recorded offline. These are saved examples, not current travel information.
A typeset view of actual recorded tool responses. Selecting a train shows a saved answer; it does not request a new departure time.
The calls used the tool’s original synthetic sample data with networking disabled. The exact names, arguments and returned text are retained in the receipt.
Departures from **København H** (id 008600626, train, s-tog, metro, letbane): - 2026-05-24 14:32 → 14:39 (+7min) | **IC 123** → Aarhus H | platform **5** (changed from 3) - 2026-05-24 14:35 (on time) | **A** → Hillerød St. | platform **1** - 2026-05-24 14:40 (on time) | **Re 5432** → Nykøbing F. | platform **7** **CANCELLED** - 2026-05-24 14:38 (on time) | **B** → Farum St. | platform **2** - 2026-05-24 14:45 → 14:48 (+3min) | **L 45** → Aalborg | platform **4**
The original board labels the cancelled service’s timestamp “on time” alongside “CANCELLED”. The card gives the cancellation priority. These samples do not establish current service conditions, and the original sample does not provide a working route-planning example.
01The starting point
An agent becomes more useful when it can reach the applications and files involved in a task. Connecting several engines to tools on several machines also brings questions about identity, access and availability.
I built a shared gateway so those questions have a consistent place to be answered. Individual tool servers still own their capabilities, and some depend on another machine being available.
Forge / connected by design
PanelForge is the web workspace. The Apple client brings conversations to another screen. Both use the engine services to reach agent runtimes through a shared stream format.
Two ways into the work. A shared engine boundary.
Forge / connected by design
Claude, Codex and OpenCode speak through one client stream contract. The MCP gateway connects those engines to separate tool services. A service may live on a different machine.
Shared boundaries make differences easier to handle.
Forge / distinct permission boundaries
Authentication identifies a caller. Resource scopes govern access. Conversation profiles narrow the tools a model can see. These controls govern different boundaries; the engine also enforces its own execution permissions.
A tool appearing in the catalog is not permission to run it.
02What the workflow looks like
Authentication identifies the caller. Ownership rules and scopes govern which resources that caller may access.
A tool profile narrows the catalog visible to the model. That is a separate control from resource access and the engine’s own execution permissions.
Separate servers provide tools for tasks such as image workflows and canvas editing. Cached descriptions let clients discover them without a fresh handshake with every server.
One request, visible tool activity
This saved showcase turn transfers Spotify playback, sets the volume and plays the requested song. The conversation records the tool calls and their result.
A saved Spotify showcase conversation in the current web interface. Device identifier redacted.Select the image to explore the details.
03Design + engineering
Authentication, resource scopes, profile filtering and engine permissions govern different boundaries. A visible tool name alone is not a grant of permission to execute it.
The schema cache preserves a server’s last working descriptions if a refresh fails. This prevents a discovery failure from emptying that part of the catalog.
The gateway gained a stateful proxy path for InfinitySketch, followed by Freeform support. Canvas tools could use the common entry point while retaining their own session requirements.
Explore the individual features
04Selected release history
These are historical changes recorded in repository tags. The capture and current-state notes below describe what is being shown here.
MCP Bridge introduced its schema cache, separating client discovery from the availability of each underlying tool server.
v1.0.0The bridge moved all eleven tool servers onto the same multiplexer, giving separate stdio capabilities a consistent service boundary.
v3.0.0Freeform joined the gateway’s resources after the stateful InfinitySketch proxy work.
v5.10.0Codex native tool profiles were validated against the installed catalog and enforced across resumed and forked sessions.
v0.6.28MCP Bridge refused an incompatible stateless discovery path and used the cached handshake instead.
v3.10.9About the material shown here
Selected screenshots and edited recordings accompany changes checked against repository history through October 2026.
The gateway gives connected tools a common entry point, with resource scopes, conversation profiles and support for stateful services. The Gateway Lab records 17 actual HTTP/MCP requests through archived gateway source, using fictional local authentication, API and music services. It verifies allowed forwarding, denied actions and authenticated caller identity. Native profiles curate the catalog; execution permissions remain a separate boundary. This fixture does not test production OAuth or provider credentials.
The bridge and gateway grew alongside the agent clients. Their release history shows catalog caching, canvas connections and enforced runtime permissions developing as separate pieces.
Product imagery uses selected material prepared for this portfolio. Recordings show the interface in use. Architecture graphics describe system relationships and do not show live service availability.