chore(release): v1.1.4 — MCP annotations + tool description polish - #7
Merged
Merged
Conversation
Adds `annotations` to every tool (readOnly/destructive/idempotent/openWorld
+ title) per MCP spec 2025-06-18. MCP clients can now reason about a tool
before they call it — e.g. render a "read-only, safe to call" badge on the
three catalog tools, or route the chat tool through an approval workflow.
Per-tool hints:
orcarouter_chat readOnly:F idempotent:F openWorld:T
orcarouter_models_list readOnly:T idempotent:T openWorld:T
orcarouter_model_card readOnly:T idempotent:T openWorld:T
orcarouter_providers_list readOnly:T idempotent:T openWorld:T
Tool descriptions tightened to close gaps Glama's TDQS reviewer flagged:
- chat: explain models fallback chain, isError surface,
ORCAROUTER_API_KEY requirement.
- model_card: explain when to use vs. models_list; note isError.
- models_list: enumerate returned fields, note filter composition.
- providers_list: enumerate returned fields, note zero-arg call shape.
No wire-level behavior change. tools/call response shapes are unchanged.
Test: new `tools/list response includes MCP annotations on every tool`
case in test/server.test.ts asserts per-tool annotation values. Existing
115 tests unchanged; full suite is 116/116 green.
Member
Author
|
@codex review |
|
Codex Review: Didn't find any major issues. Swish! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
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.
Why
Glama's score page flagged the same root cause across all four tools — no MCP annotations declared, so reviewer scoring penalizes the
Behaviordimension (2-4 out of 5) for every tool. Sample reviewer comment fromorcarouter_model_card:This PR closes that gap. It also tightens descriptions for the other low-scoring dimensions (Usage Guidelines, Completeness, Parameters).
What changes
src/tools/types.tsToolAnnotationsinterface + optionalannotationsfield onToolDefinition.src/server.tsannotationsthrough to thetools/listresponse (spread...(t.annotations ? { annotations: t.annotations } : {})).src/tools/chat.tsannotations(readOnly:false,idempotent:false,openWorld:true) + describemodelsfallback chain interaction,isError:truesurface, ORCAROUTER_API_KEY requirement.src/tools/models_list.tsannotations(readOnly:true,idempotent:true,openWorld:true) + enumerate returned fields + note filter composition.src/tools/model_card.tsannotations(read-only / idempotent / open-world) + explain when to use vs.models_list+ noteisError:truesurface.src/tools/providers_list.tsannotations+ enumerate returned fields + note zero-arg call shape.test/server.test.tstools/list response includes MCP annotations on every toolasserts the per-tool annotation map (4 tools × 5 fields).package.json,server.jsonCHANGELOG.mdPer-tool annotations table
orcarouter_chatorcarouter_models_listorcarouter_model_cardorcarouter_providers_listReasoning: catalog tools are read-only queries against the public OrcaRouter catalog API — same inputs give the same outputs (idempotent), and they reach an external service (open world). The chat tool reaches an external service too, but isn't read-only (it triggers an LLM completion, which the upstream provider may count, log, and bill), and isn't idempotent (same prompt produces different completions).
What it unlocks downstream
Behaviordimension should jump from 2-4 to ~5 across all tools. Expected overall TDQS average: 4.2 → ~4.6. Already at grade A; this firms up the score.tools/listget richer signal about each tool's character.Verification
npm run typecheck— cleannpm test— 116/116 (115 existing + 1 new annotations test)npm run build— 26.51 KB ESM bundle, cleanserver.jsonvalidates against the official MCP Registry schemaRelease plan
After merge, push the version tag and the CI auto-publish workflow (introduced in #3) takes over:
git tag v1.1.4 git push origin v1.1.4 # CI: typecheck → test → build → npm publish → mcp-publisher publishOnce npm + MCP Registry are updated, Glama auto-syncs from GitHub (typically within a few hours), re-runs TDQS scoring, and the new annotations land in the public score.