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. python 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
Unit example (nearest native match)

See the idea in context

mcp = AxMCPClient(AxMCPStreamableHTTPTransport(endpoint), {"namespace": "inventory"})
llm = OpenAICompatibleClient(api_key=api_key, model="gpt-5.4-mini")
program = ax(
    'request:string -> answer:string "Use the inventory MCP tool."',
    {"mcp": mcp},
)
try:
    catalog = mcp.inspect_catalog()
    print({
        "tools": [tool["name"] for tool in catalog["tools"]],
        "resources": catalog["resources"],
        "resourceTemplates": catalog["resourceTemplates"],
    })
    print(program.forward(llm, {"request": "Reindex inventory."}))
finally:
    mcp.close()
  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
pip install axllm

from axllm import ai, ax

llm = ai('openai', api_key=os.environ['OPENAI_API_KEY'])
classify = ax('review:string -> sentiment:class "positive, negative, neutral"')

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 -- python src/examples/python/mcp/native-mcp-tools.py
Active practice

Show that you can use it

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

Source-backed follow-up