Repository navigation
Serve agentmail-toolkit 0.14.0: get_labs/join_labs plus the tool docs rewrite - #84
Merged
Merged
Conversation
Bump agentmail-toolkit to 0.13.0 (agentmail-toolkit#77) and expect its two Labs tools in the runtime contract. The lockfile, the agentmail SDK pin and mcp-manifest.json follow once 0.13.0 and the SDK release that adds organizations.getLabs()/joinLabs() are published. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Deployment #234 deployed successfully
Deployed on Manufact.com |
shalim786
marked this pull request as ready for review
October 12, 2026 18:30
The toolkit's agentmail dependency resolves to this exact pin, so at 0.5.37 get_labs and join_labs would throw. Checked against toolkit 0.12.0: the server typechecks clean and every test but the Labs contract expectation passes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 13, 2026
Manufact's tool documentation review flags list_organizations and select_organization for output fields with no description, and list_organizations for not saying what it returns. It also flags get_thread's limit for restating its own validation and its pageToken for not saying where the value comes from. All four live in this server rather than agentmail-toolkit, so they're fixed here: the organization outputs say what each field is, list_organizations says what each entry carries, and get_thread's pagination fields say where a page token comes from and which page holds the newest messages. The toolkit-sourced tools change with agentmail-toolkit 0.14.0 (agentmail-toolkit#79), which this branch will pick up once it is published. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
agentmail-toolkit 0.13.0, which this PR was waiting on, is now on npm, and 0.14.0 followed it. 0.14.0 carries the same get_labs and join_labs, plus agentmail-toolkit#79's rewrite of every tool's field docs, descriptions and output schemas for Manufact's tool documentation review. So this pins 0.14.0 directly, with a refreshed lockfile and manifest. That is why CI was red: the lockfile could not resolve an unpublished 0.13.0. - create_draft and update_draft keep their destructive/open-world hint override, but no longer replace the toolkit's descriptions: 0.14.0 ships that same text. - delete_thread is now annotated idempotent. The API has deleted permanently on the first call since 2026-04-03, and a repeat only 404s. - tests/server-tool-docs.test.mjs holds the served catalog to the toolkit's docs floor, so the tools defined or rewritten here (list_organizations, select_organization, get_thread's paging) cannot regress: no field documented only by its own name, and no tool description over Claude Code's 2 KB field. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tvmehta-21
approved these changes
Oct 13, 2026
duharry0915
approved these changes
Oct 13, 2026
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.
Summary
Adds
get_labsandjoin_labsfrom agentmail-to/agentmail-toolkit#77 to the hosted catalog, the MCP path to the public Labs API (agentmail-api#1633).packages/server/package.json:agentmail-toolkit0.12.0 → 0.13.0.tests/server-contract.test.mjs: expects both tools in the runtime contract.join_labsis on both auth paths, consistent withapiKeyOnlyToolsbeing empty: on OAuth the server calls the API with a console JWT, and the API refuses the join (unrestricted_key_required) because the bridge mints that JWT for any org member. The tool's description sends OAuth users to an organization admin in the console.get_labsworks on both paths.Draft: blocked on the toolkit release
Done:
59d11a7is live in prod, agentmail-to/agentmail-docs#311 is published, and Release SDKs shippedagentmail0.5.44.packages/server/package.jsonnow pinsagentmail0.5.44 (was 0.5.37). The toolkit'sagentmaildependency resolves to this pin, so at 0.5.37 both tools would throw. Checked against toolkit 0.12.0: the server typechecks clean, and every root test passes except the Labs contract expectation.Left:
^0.5.44; Revert #75: keep send idempotency owned by the AgentMail API #77 merged before that bump. Then publish agentmail-toolkit 0.13.0.pnpm install(updates the lockfile),pnpm generate:manifest,pnpm test. In the lockfile, confirmagentmail-toolkit@0.13.0depends onagentmail0.5.44.scripts/generate_mcp_tool_catalog.py).Update: unblocked, and now also ships the tool docs rewrite (toolkit 0.14.0)
agentmail-toolkit 0.13.0 and 0.14.0 are both on npm now. 0.14.0 has the same
get_labs/join_labs, plus agentmail-to/agentmail-toolkit#79's rewrite of every tool's field docs, descriptions and output schemas. That rewrite is for Manufact's tool documentation review, where this server scores 83/100. So this PR now pins 0.14.0 directly, and absorbs agentmail-to/agentmail-mcp#86, which is closed in its favor.What the branch adds on top of the two Labs commits:
agentmail-toolkit@0.14.0→agentmail0.5.44, andmcp-manifest.jsonis regenerated. The missing lockfile entry was the CI failure.list_organizationsandselect_organizationdescribe their output fields, andlist_organizationssays what each entry carries.get_thread'slimit,pageTokenandnextPageTokensay where a page token comes from and which page holds the newest messages.create_draft/update_draft. The override keeps only the destructive/open-world hints. 0.14.0 ships the description text the override used to inject.tests/server-tool-docs.test.mjs. It holds the served catalog, the 41 tools including the ones defined here, to the toolkit's docs floor: no field documented only by its own name, and no tool description over 1,800 chars.Visible changes in the served catalog besides docs:
delete_threadis annotated idempotent. The API has deleted permanently on the first call since 2026-04-03; a repeat only 404s.Checks:
pnpm check:contractpassed.node --test tests/*.test.mjs: 176 passed, 1 skipped (the Linux-only backlog check). That includes 82 new docs checks.test:python4/4,check:bridgespassed.After deploy:
tools/listserves 41 tools.🤖 Generated with Claude Code