Skip to content

0.0.14-dev.0 advertises memwal_remember_status at cold start, but prod/staging relayers do not serve it #928

Description

@harrymove-ctrl

Found by driving the published bridges over stdio against all three relayers.

What happens

@mysten-incubation/memwal-mcp@0.0.14-dev.0 serves a 9-tool cold-start list that includes memwal_remember_status. The prod relayer does not implement that tool. Measured:

0.0.14-dev.0 -> PROD
  tools/list (cold start)  9 tools  ... includes memwal_remember_status
  tools/list (after swap)  8 tools  ... memwal_remember_status GONE
  memwal_remember_status   -> MCP error -32602: Tool memwal_remember_status not found

0.0.14-dev.0 -> DEV   (control, relayer has the tool)
  tools/list (after swap)  9 tools  ... includes memwal_remember_status
  memwal_remember_status   -> "remember job not found: 000...000"   (reaches the tool)

So during the cold-start window — before the relayer's tools/list_changed swap — an agent on 0.0.14-dev.0 against prod or staging can call a tool that does not exist there.

Why it matters more than a normal drift

The same run produced this:

0.0.14-dev.0 -> PROD
  memwal_remember  90.67s  ERROR
  Tool error: remember job timed out after 90000ms (job_id=f3430edf-66c8-4b40-b3a9-c9732438768f)

The agent is handed a job_id and told to settle it — and on prod there is no memwal_remember_status to settle it with. The recovery path the message points at does not exist in that channel.

For comparison, 0.0.13 against the same prod relayer returned 34.86s ok with a real blob_id.

Full matrix, same session

bridge relayer recall remember
0.0.13 prod 2.87s 34.86s ok
0.0.13 staging 3.88s 25.92s ok
0.0.13 dev 7.08s 29.91s ok
0.0.14-dev.0 prod 2.08s 90.67s ERROR
0.0.14-dev.0 staging 2.73s 31.41s ok
0.0.14-dev.0 dev 6.48s 27.47s ok

The single prod timeout is one sample and could be queue variance rather than a deterministic regression — but the missing status tool is deterministic and verified in both directions.

Suggestions

  • Gate the cold-start advertisement of memwal_remember_status on the relayer actually serving it, or drop it from the static list and let the post-swap list introduce it.
  • Do not let a pending/timeout message name a tool that is absent from the current tools/list.
  • More generally: the cold-start list is written against dev's sidecar, but a published bridge is routinely pointed at prod and staging, which lag. Worth asserting in the release check that the static list is a subset of what the oldest supported relayer serves.

Where

  • packages/mcp/src/auth-required.ts (static cold-start tool definitions)
  • packages/mcp/src/bridge.ts (the tools/list_changed swap)
  • services/server/scripts/mcp/tools/remember.ts (the timeout message that names memwal_remember_status)

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions