Classify stateful and stateless MCP Automatic era classification keeps one client compatible with stateful 2025-11-25 and stateless 2026-07-28 servers. Modern discovery returns supported versions, capabilities, instructions, cache policy, and server identity. typescript academy academy/topics/mcp-dual-era-discovery website/content-src/academy/course.mjs academy Classify stateful and stateless MCP
Unit 9 · Connect to external tools and data

Classify stateful and stateless MCP

Automatic era classification keeps one client compatible with stateful 2025-11-25 and stateless 2026-07-28 servers. Modern discovery returns supported versions, capabilities, instructions, cache policy, and server identity.

discover()9 focused minutesNot started
Worked example

See the idea in context

const discovery = await client.discover();
console.log(client.getEra(), discovery.supportedVersions);
  1. Keep automatic classification

    Pin an era only when deployment policy already knows the endpoint contract.

  2. Read modern discovery

    server/discover is stateless and is available only after the endpoint classifies as modern.

Run itIn your own project
npm install @ax-llm/ax

import { ai, ax } from '@ax-llm/ax';

const llm = ai({ name: 'openai', apiKey: process.env.OPENAI_APIKEY! });
const classify = ax('review:string -> sentiment:class "positive, negative, neutral"');

const result = await classify.forward(llm, {
  review: 'Useful and boring in the best way.',
});

Set OPENAI_APIKEY in your environment before running provider-backed code.

In the ax repo

From a clone of the ax repo:

npm run example -- typescript src/examples/typescript/mcp/native-mcp-tools.ts
Active practice

Show that you can use it

Answer 2 in a row to learn this · attempt 1
Keep exploring

Source-backed follow-up