cookbook/05_agent_os/mcp_demo/TEST_LOG.md
Status: PASS (2026-07-07, construction + full flow via unit harness)
Description: AgentOS(mcp_auth=AgentOSBuiltinAuth.from_env()) — the built-in OAuth
authorization server. Requires Postgres + AGENTOS_URL/MCP_CONNECT_SECRET to run as a server.
Result: The end-to-end connector flow it demonstrates (DCR → consent → PKCE token →
/mcp, refresh rotation, redeploy/second-replica verification, hash-at-rest) is proven
by tests/unit/os/test_mcp_auth_builtin.py (18 tests, pass) over the same code paths on
SQLite. The example file itself is syntax- and lint-clean; a live Postgres run behind
HTTPS against a real claude.ai/ChatGPT connector is a deployment test.
Status: PASS (2026-07-07, construction + seam via unit harness)
Description: AgentOS(mcp_auth=AuthKitProvider(...)) — bring-your-own external AS.
Requires a WorkOS AuthKit tenant + AUTHKIT_DOMAIN to run.
Result: The Tier-2 seam (external-AS token verification, discovery advertising the
external AS, PAT coexistence, AuthKitProvider construction) is proven by
tests/unit/os/test_mcp_auth_tier2.py (7 tests, pass). A live WorkOS tenant run is a
deployment test.
Status: PASS (2026-07-04, v2.7 8-tool surface)
Description: Example AgentOS app with MCP enabled, tested live end-to-end with a Streamable HTTP FastMCP client against the served app.
Result: Server boots with the MCP lifespan; GET / returns 200 JSON (home route now
coexists with the root MCP mount). tools/list returns exactly the 8 built-in tools with
read-only/destructive annotations on the wire. get_agentos_config payload is ~400 chars.
get_sessions works without db_id (single-db default) through the sync-sqlite threadpool
path. run_agent executed a live Claude run: trimmed result was 158 chars total (answer +
run_id/session_id/status), no transcript/system-prompt leakage, and the client received a
progress notification. get_session_runs with auto-detected session type read the
conversation back. Bonus check: running without ANTHROPIC_API_KEY surfaced the real
provider auth error through the MCP tool error (error propagation fix).
Status: PASS
Description: AgentOS exposing a single owner-only custom MCP tool (ask_workspace) routed
through an agent: built-ins disabled via MCPServerConfig(enable_builtin_tools=False), user_id
injected into the tool (hidden from the client schema), an authorize owner-gate, and built-in
DNS-rebinding protection via allowed_hosts — no hand-written middleware classes.
Result: App builds successfully; the MCP server at /mcp exposes only ask_workspace, the
user_id arg is not in the client-facing schema, and both the transport-security and authorize
middlewares are wired (verified with an in-memory FastMCP client). A live model call requires
OPENAI_API_KEY.
Status: PENDING
Description: Example AgentOS app where the agent has MCPTools.
Status: PENDING
Description: Example AgentOS app where the agent has MCPTools.
Status: PENDING
Description: Example AgentOS app where the agent has MCPTools.
Status: PASS (2026-07-04, updated)
Description: Agent operating the AgentOS over MCP (OpenAIResponses/gpt-5.5, per repo
model rules; stale docstring path and enable_mcp flag name fixed).
Result: The equivalent client flow (list tools → get_agentos_config → run_agent →
get_session_runs) was exercised end-to-end against the live server with a raw FastMCP
client and passed. The agent-driven variant in this file additionally requires
OPENAI_API_KEY for the operator model and was not run in this pass.