feat(skills): carry cache attributes on skills/get (ext-skills#139) - #1372
Merged
Conversation
The stable spec page merged `GetSkillResult extends CacheableResult` today, so
`ttlMs` and `cacheScope` are REQUIRED on `skills/get` as they are on
`resources/read`. `handleSkillsGet` returned a bare `{skill}`, which made
mcpkit non-conforming the moment that landed.
Worth recording that this is a behaviour change rather than a clarification.
SEP-2640 says of these fields that "whether the result should also carry the
base protocol's caching attributes ... is left open", so a server conformant to
the SEP text alone omits both and becomes non-conformant to the page. It is a
reading not everyone shares: the MCP Inspector's SEP-2640 writeup argues the
opposite, that the SEP forecloses the requirement and inventing one would
report a reasonable server as broken. The stable page is the authority the
conformance suite grades against, so mcpkit follows it.
The answer matches `skills/list` because it describes the same catalog. A
server wanting to hint differently for a single entry than for the listing has
no knob yet and nothing has asked for one. Neither field is an integrity
property: verification against digest and size is unaffected by how fresh a
held entry is.
Negative control recorded: without the change the new test reports both fields
missing and both absent from the result's top level.
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.
ext-skills#139merged today, so the stable spec page now hasGetSkillResult extends CacheableResult:ttlMsandcacheScopeare REQUIRED onskills/getas they are onresources/read.handleSkillsGetreturned a bare{skill}, which made mcpkit non-conforming the moment that landed.This is a behaviour change, not a clarification
Worth stating plainly, because it affects anyone tracking the SEP rather than the page. SEP-2640 says of these fields that "whether the result should also carry the base protocol's caching attributes … is left open", so a server conformant to the SEP text alone omits both and becomes non-conformant to the page.
It is also a reading not everyone shares. The MCP Inspector's SEP-2640 writeup argues the opposite, that the SEP forecloses the requirement and inventing one would report a reasonable server as broken by the tool whose job is to say whether it conforms. The stable page is what the conformance suite grades against, so mcpkit follows it, but the disagreement is real and worth knowing about.
The answer matches skills/list
Same catalog, so the same freshness answer. A server wanting to hint differently for a single entry than for the listing has no knob yet and nothing has asked for one. The test pins the agreement, because a divergence would tell a host the listing and the entry go stale at different times when they do not.
Neither field is an integrity property: verification against digest and size is unaffected by how fresh a held entry is.
Verification
Negative control recorded. Without the change the new test reports both fields missing and both absent from the result's top level. Upstream, a build with the attributes stripped scores 31/32 on
sep-2640-skills-enumerationwithsep-2640-skills-get-cache-attributesFAILURE; with the change it is 32/32, and 30/30 on the 2025-11-25 wire where the check SKIPs below the version floor.make testand theext/skillssuite are green.