Skip to content

Add blog post for Tool Annotations#2230

Merged
localden merged 75 commits intomodelcontextprotocol:mainfrom
olaservo:blog/tool-annotations
Mar 18, 2026
Merged

Add blog post for Tool Annotations#2230
localden merged 75 commits intomodelcontextprotocol:mainfrom
olaservo:blog/tool-annotations

Conversation

@olaservo
Copy link
Copy Markdown
Member

@olaservo olaservo commented Feb 10, 2026

Drafting a blog post to help share more background around tool annotations: what problems they're meant to solve, and ongoing work to make the best use of both existing annotations and potential new ones.

Original draft co-edited by Claude and based on GitHub research, with ongoing additions and rewrites by me + other contributors.

Copy link
Copy Markdown
Contributor

@SamMorrowDrums SamMorrowDrums left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fantastic @olaservo, I think we might also want to mention the schism that exists between the autonomy maximalists (vibe coders and OpenClawd style agents) and enterprise AI adopters, where the former can't imagine why you'd want hints, policies or confirmations while the latter can't imagine touching the tools without significant guardrails, and in a way that impacts adoption of hints.

Also I think it's fair to say a lot of server examples also skip annotations as a sort of optional extension and the choice to make them implicit/optional by default was a choice with consequences in terms of adoption.

@olaservo
Copy link
Copy Markdown
Member Author

olaservo commented Feb 13, 2026

I think we might also want to mention the schism that exists between the autonomy maximalists (vibe coders and OpenClawd style agents) and enterprise AI adopters, where the former can't imagine why you'd want hints, policies or confirmations while the latter can't imagine touching the tools without significant guardrails, and in a way that impacts adoption of hints.

Also I think it's fair to say a lot of server examples also skip annotations as a sort of optional extension and the choice to make them implicit/optional by default was a choice with consequences in terms of adoption.

Thanks for all the comments and I think these are useful callouts. I added a couple paragraphs referencing these points, too. Plus I threw the maximalists a bone that sometimes they just have a different risk mitigation strategy (such as sandboxing or containerization vs applying careful rules or policies to individual tool approval).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@olaservo olaservo changed the title Add draft blog post for Tool Annotations Add blog post for Tool Annotations Feb 13, 2026
@SamMorrowDrums
Copy link
Copy Markdown
Contributor

Awesome loving the direction, it really does help to frame the challenge.

Another interesting discussion and framing was here too with security ig talking about which parts of trust/privacy annotation proposal fits in protocol versus a separate security standard, and I think that a point you definitely mentioned in final section is actually quite key. Mechanisms to apply policies and security/privacy considerations aren't the thing, they are additional tools that can help to do the thing better.

@SamMorrowDrums
Copy link
Copy Markdown
Contributor

Looking pretty close to be ready to go out of draft. Would be nice to have a link to actual WG.

I suppose I haven't created a charter PR for it, so maybe I need to do that.

olaservo and others added 2 commits February 19, 2026 20:51
Apply suggested edits: reword prompt injection framing, merge
conservative defaults paragraphs, fix taskHint characterization,
trim active landscape section, soften protocol "encourages" language,
add openWorldHint to framework examples, simplify closing line.
Add DXT/Google Calendar incident as concrete lethal trifecta example.

Co-authored-by: Luca Chang <131398524+LucaButBoring@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@olaservo olaservo force-pushed the blog/tool-annotations branch from 2266f64 to 7c1f1a8 Compare February 20, 2026 03:52
@LucaButBoring
Copy link
Copy Markdown
Contributor

LGTM

@localden localden added the blog label Feb 21, 2026
@localden
Copy link
Copy Markdown
Contributor

@olaservo just checking if this is ready for review?

@localden
Copy link
Copy Markdown
Contributor

/stageblog

@github-actions
Copy link
Copy Markdown
Contributor

Blog staging triggered by @localden for 40d17e2. Watch the stage-blog.yml workflow for the preview link.

@localden
Copy link
Copy Markdown
Contributor

/stageblog

@github-actions
Copy link
Copy Markdown
Contributor

Blog staging triggered by @localden for 79eca2a. Watch the stage-blog.yml workflow for the preview link.

@github-actions

This comment has been minimized.

@localden
Copy link
Copy Markdown
Contributor

@SamMorrowDrums @olaservo @jonathanhefner please review this - would love to make sure that my edits didn't lose your WG/IG context.

Copy link
Copy Markdown
Contributor

@SamMorrowDrums SamMorrowDrums left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@localden I am happy, obviously Luca left some feedback and ideally instead of the agents wg hopefully the IG is being created next week if the vote passes so a direct link.

Cloudflare also interested and could be added to list.

localden and others added 3 commits March 18, 2026 14:33
Co-authored-by: Ola Hungerford <olahungerford@gmail.com>
- Call out local code execution as the linchpin of the LayerX exploit;
  clarify the risk is shared by any agent with shell access and MCP's
  contribution is the ease of assembling the chain
- Note that no client surfaces annotations in approval prompts alongside
  the existing observation that none filter by them
- Reframe the prompt-injection limitation: annotations can't make the
  model resist it, but a seesUntrustedData-style hint could let the
  client taint the session and tighten approvals
- Caveat the _meta recommendation: only viable when you control both
  sides; off-the-shelf clients won't honor unknown keys so ecosystem-wide
  UX still needs a real annotation
- Add Cloudflare to the IG participant list
- Drop the 'watch for the formal IG proposal' bullet now that the
  #tool-annotations-ig channel exists

:house: Remote-Dev: homespace
@localden
Copy link
Copy Markdown
Contributor

/stageblog

@github-actions
Copy link
Copy Markdown
Contributor

Blog staging triggered by @localden for 1ff8ae5. Watch the stage-blog.yml workflow for the preview link.

@localden
Copy link
Copy Markdown
Contributor

@SamMorrowDrums @olaservo @LucaButBoring one last peek at this before I am planning to make this live?

@github-actions
Copy link
Copy Markdown
Contributor

📰 Blog Preview (staged via /stageblog)

Preview (stable) https://pr-2230.mcp-blog-preview.pages.dev
This commit https://b1fbaa3f.mcp-blog-preview.pages.dev
Commit 1ff8ae5

Includes drafts and future-dated posts. All pages served with noindex, nofollow — search engines will not crawl this preview.

@LucaButBoring
Copy link
Copy Markdown
Contributor

LGTM

@localden
Copy link
Copy Markdown
Contributor

/lgtm

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved on behalf of @localden via /lgtm.

@localden localden merged commit 39acde6 into modelcontextprotocol:main Mar 18, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants