Repository navigation
feat(logic_extensions/http): post hooks inspect and override MCP content - #31
Merged
Merged
Conversation
A remote MCP server's result can carry content blocks alongside its structured result, and MCP clients receive that text. A post hook that sees only `output` cannot redact or scan it. Add optional `content` to PostHookRequest and PostHookOverride, as MCP content blocks in wire shape. An absent override forwards the request's content unchanged, the same as `output`. The fields are additive and optional, so hook servers that ignore them keep working. Bump the contract to 1.2.0-beta. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Spec-defined fields are forwarded, but a resource_link block may arrive without title, size, icons, or _meta, and fields outside the MCP specification may be dropped. `content` is also absent on error results, whose text arrives in `execution_error`. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…-28 spec An empty `override.content` removes every upstream block, and MCP clients then receive `output` rendered as a single text block. The ContentBlock description now links the 2026-07-28 tools specification. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
wdawson
marked this pull request as ready for review
September 24, 2026 23:05
sdreyer
reviewed
Sep 24, 2026
…eutral `content` is Arcade's protocol-neutral content-block format. It follows MCP's content-block model, so MCP tooling and documentation apply, and content a server returns in another protocol would be converted into it. Remote MCP servers are its only source today. The MCP link stays as the block definitions the format follows. Wording only. The JSON shape and every semantic are unchanged, and the version stays 1.2.0-beta. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
sdreyer
approved these changes
Sep 24, 2026
wdawson
added a commit
to ArcadeAI/docs
that referenced
this pull request
Sep 28, 2026
…90] (#1217) Post-hook requests now include `content`, the blocks a remote MCP server returned alongside its result, and hooks can replace them with `override.content` (ArcadeAI/monorepo#4556, ArcadeAI/schemas#31). The Contextual Access guides now document both fields, and note that a hook that redacts `output` should redact `content` too.
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.
Warning
Please don't merge yet. This has to land right before the engine PRs (see the merge order below). Merging it early breaks the monorepo engine's
go generatecheck for every other PR.Summary
contenttoPostHookRequest: the content blocks a remote MCP server returned alongside its structured result, in MCP wire shape (every block type, with annotations and_meta).contenttoPostHookOverride. It replaces the blocks. Omitting it forwards them unchanged, the same asoutput.ContentBlockschema: a requiredtype, plus the fields that type defines per the MCP spec.1.2.0-beta. The change is additive and optional, so it stayshttp/1.0. A hook server that strictly validates requests against the old schema, rejecting unknown fields, will reject requests carryingcontentwith a 400. Loosen that validation before upgrading the engine.A post hook that redacts
outputmust now redactcontenttoo. A hook that leavescontentalone lets the server's text through unchanged.Companion PRs
Merge order: this PR first. Then the stacked PR merges into ArcadeAI/monorepo#4556 once its
go:generatepoints back atrefs/heads/main, and ArcadeAI/monorepo#4556 merges to main, in quick succession. Once this merges, the monorepo engine'sgo generatecheck fails on any PR that lacks the new fields, until ArcadeAI/monorepo#4556 (with the stacked PR merged into it) lands on main.🤖 Generated with Claude Code