Your Tool Should Return What It Sees, Not What It Did
Every MCP tool I have ever written started life as a wrapper around a function that returned nothing useful.
@tool
def set_headline(text: str) -> str:
page.fill("#headline", text)
return "ok"
talonagent.hashnode.dev5 min read