"""Discover the actual MCP contract; no direct call to the server function."""
import asyncio
import json
from lab_session import lab_session


async def main():
    async with lab_session() as (session, initialized):
        listing = await session.list_tools()
        assert initialized.protocolVersion == "2025-11-25"
        assert initialized.capabilities.tools is not None
        assert [tool.name for tool in listing.tools] == ["normalize_label"]
        tool = listing.tools[0]
        assert tool.inputSchema["properties"]["text"]["type"] == "string"
        assert "text" in tool.inputSchema["required"]
        result = await session.call_tool("normalize_label", {"text": "  two  words  "})
        assert result.isError is False
        assert result.structuredContent == {"label": "two  words"}
        unknown = await session.call_tool("missing_tool", {"text": "Draft"})
        assert unknown.isError is True
        print("PASS: discovered schema and preserved internal spaces")
        print(json.dumps({"protocol": initialized.protocolVersion, "server": initialized.serverInfo.name, "tool": tool.model_dump(mode="json", exclude_none=True), "success": result.model_dump(mode="json", exclude_none=True), "unknown_tool": unknown.model_dump(mode="json", exclude_none=True)}, ensure_ascii=False, indent=2))


if __name__ == "__main__":
    asyncio.run(main())
