fix(mcp): name the HTML body in the tool descriptions #37
No reviewers
Labels
No labels
waiting-on-julian
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
jlxq0/jmap-mcp!37
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/tool-descriptions-name-html"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Lucy read the descriptions after
v0.2.20landed and both were stale in the direction that hides the capability.send_email's is the worse of the two: a caller reading it has no reason to look forbody_htmland would conclude the tool cannot send HTML at all.The cost is measured rather than hypothetical. On Saturday she read the summary rather than the properties and told two people the parameter did not exist, then retracted it. The description is what an agent reads to decide whether a capability exists, and a stale one is a claim about the system that the system does not make.
What they say now
read_email: names the HTML body, saysbody_htmlisnullwhen there is no HTML part and never a fallback to the text, and that it is escaped for the same injection tokens but not wrapped, since the wrapper would stop it being valid HTML. Both bodies named as untrusted;suspiciousdescribed as covering either.send_email:body_textalways required,body_htmloptional, both parts go out so a client that does not render HTML still shows something, and HTML with an emptybody_textis refused.Nothing outside the repo moves
Tool names, titles and annotations untouched. Diffed for exactly those lines:
So
tool-scope.shgenerates the same deny lines and no mount's scope moves.Why this carries a version bump
A tool description only reaches a caller through the running server, so the fix is not real until deployed.
Cargo.tomlis at 0.2.21.Gate
Toolchain read from
ci.yml:1.93.0, throughbuild-slot.sh.fmtrc=0,clippy -D warningsrc=0,testrc=0, 195 passed.