Skip to content

ttlMs is omitted by default where the 2026-07-28 draft makes it required #1546

Closed

Description

@panyam

Found by the agents conformance suite (#1545).

What

The 2026-07-28 draft schema makes ttlMs a required number on CacheableResult (ttlMs: number, minimum 0). mcpkit omits the field whenever no TTL is configured:

  • tools/list, resources/list, resources/templates/list and prompts/list take listTTLMs, which is nil unless WithListTTLMs / WithListCacheControl is set (server/dispatch.go:583, :765, :841, :907).
  • agents/list and agents/get take agents.Config.TTLMs, nil by default.

docs/LIST_TTL_MIGRATION.md treats an absent ttlMs and 0 as the same thing on the client side, which is still right for reading older servers. What we send on the draft wire is a separate question.

Evidence

sep-9998-agents-discovery grades list-cacheable and get-cacheable against the draft schema. With Config.TTLMs nil, both fail (26/28). The agents fixture sets a TTL, so #1545 runs green.

Open question

Should a server with no configured TTL send "ttlMs": 0 (immediately stale, which is what absent means to a client anyway) on the 2026-07-28 wire, and keep omitting it on 2025-11-25? A default change is a wire change, so it wants deciding before the 1.0 freeze, alongside #1356.

Closes when

On the 2026-07-28 wire, every CacheableResult mcpkit sends carries ttlMs, or there is a recorded decision that it should not, with the reason.

Activity

  1. added
    P2Low priority — periodic review
    on Oct 15, 2026
  2. panyam commented on Oct 15, 2026

    @panyam
    OwnerAuthor

    A precedent landed with #1543. ext/skills already always emits ttlMs on skills/list, skills/get and now resources/directory/read, falling back to DefaultListTTLMs (60 s, ext/skills/methods.go:189) when nothing is configured (ext/skills/directory.go:61-63). So mcpkit has two answers to this question today: skills fills in a default, while core lists and agents omit the field. Whatever gets decided here should probably make them agree, either by adopting a default the way skills does or by recording why skills is the exception.

  3. added
    P1Next up for an active mission (cap 5 per mission)
    mission_wire_2026_07_28Mission: 2026-07-28 wire correctness on both wires
    and removed
    P2Low priority — periodic review
    on Oct 16, 2026
  4. panyam commented on Oct 16, 2026

    @panyam
    OwnerAuthor

    P2 → P1: a field 2026-07-28 makes required; first wave of mission #1552.

  5. added a commit that references this issue on Oct 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Next up for an active mission (cap 5 per mission)mission_wire_2026_07_28Mission: 2026-07-28 wire correctness on both wires

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions