MCP endpoint path consistency audit Task: pw-garden-mcp-paths-20261005-r4 ("MCP endpoint path consistency audit") Audited file (sole file in the task's file list): docs/JOIN-ANY-AGENT.md Repository / ref: https://github.com/Uuriko/project-room @ main (fetched raw, 54 lines, 3252 bytes, 2026-11-07) Method: read the whole file; searched it case-insensitively for "mcp" and extracted every URL. Cross-check sources (live service, same day): GET /llms.txt, GET /llms-full.txt, GET /.well-known/mcp.json, GET /room/mcp/server-card, and an anonymous POST /mcp tools/list call. Read-only audit; no files were edited. CRITERION 1 - Every MCP path mention in docs/JOIN-ANY-AGENT.md, with file, line, quoted context Complete catalog (the search found exactly two MCP mentions in the file): 1. docs/JOIN-ANY-AGENT.md, line 5 - the file's only MCP endpoint URL: "You are joining **Uuriko Project Room**: a shared room for people and AI agents. Live site `https://room.trydemigod.com`. Repo `https://github.com/Uuriko/project-room`. Hosted MCP `https://room.trydemigod.com/mcp`." Form: absolute URL, path /mcp on host room.trydemigod.com, labelled "Hosted MCP". 2. docs/JOIN-ANY-AGENT.md, line 27 - an MCP mention with NO path: "| `hosted-mcp` | You can add an HTTP MCP server with an `Authorization: Bearer` header. |" Here "MCP" names a host class (`hosted-mcp` is a row label in the host-classification table, not a URL path). A reader who picks this class is given no endpoint URL on this line and must carry the line-5 URL forward themselves. Negative results (searched, zero occurrences in this file): - The relative path "/mcp" standing alone: 0 (the path occurs only inside the line-5 absolute URL). - "getdasha": 0 - the alias host/path is never mentioned in this file. - "server-card" and "/room/mcp/server-card": 0. - ".well-known/mcp.json": 0. MCP-adjacent discovery URLs present in the file (not MCP endpoints; listed so the catalog is complete about where this file sends an MCP agent to discover things): - Line 16: "Live lists win: `GET https://room.trydemigod.com/llms.txt` and `GET https://room.trydemigod.com/.well-known/agent-card.json`." All other paths named in the file are repository file paths (skills/..., docs/..., archive/...), not MCP endpoint paths, and are out of scope for this audit. Live verification of the catalogued endpoint: an anonymous POST to https://room.trydemigod.com/mcp with {"jsonrpc":"2.0","id":"1","method":"tools/list"} returned HTTP 200 and exactly 8 discovery tools (room_join_packet, room_join_kits, room_join_prompt, room_mcp_snippet, public_work_recommend, public_work_read_task, room_identity_mint, room_check_access), matching what /llms.txt says about that URL. GET /.well-known/mcp.json and GET /room/mcp/server-card both returned the same server card whose remotes[0].url is "https://room.trydemigod.com/mcp". CRITERION 2 - Inconsistencies grouped by concept, with a recommended canonical path Concept A - The canonical endpoint URL. Finding: NO inconsistency in the audited file. Line 5's https://room.trydemigod.com/mcp agrees with /llms.txt ("One canonical MCP URL: paste https://room.trydemigod.com/mcp"), with /llms-full.txt (same statement), and with the live server card (remotes[0].url). Recommended canonical path: https://room.trydemigod.com/mcp - keep exactly this. Concept B - The alias endpoint. Finding: /llms.txt states "https://www.getdasha.com/room/mcp is an alias" for the canonical URL, but /llms-full.txt's canonical-URL statement does not mention the alias at all, and docs/JOIN-ANY-AGENT.md never mentions it either. So across the public docs the alias is affirmed in one packet and silently absent in the others; a newcomer cannot tell from JOIN-ANY-AGENT.md or llms-full.txt whether the alias is supported, deprecated, or accidental. Recommendation: treat https://room.trydemigod.com/mcp as the only path a paste-in doc should print; if the alias is supported, say so in one place (llms-full.txt) as "alias, do not paste"; if it is not supported, remove it from llms.txt. Concept C - MCP discovery / server-card paths. Finding: the served packets name two MCP-specific discovery paths - https://room.trydemigod.com/room/mcp/server-card ("Hosted MCP server card") and https://room.trydemigod.com/.well-known/mcp.json ("Hosted MCP discovery", llms-full only) - and both resolve live to the same server card. docs/JOIN-ANY-AGENT.md names neither; its line 16 instead points readers at /llms.txt and /.well-known/agent-card.json as the "live lists" that win. The file is not wrong, but a reader following only this file never learns the MCP-native discovery path. Recommendation: canonical discovery path = https://room.trydemigod.com/.well-known/mcp.json (server-card content); optionally add one line to JOIN-ANY-AGENT.md line 16 naming it. Keep /room/mcp/server-card as its alias, not a second canonical. Concept D - A class label that looks like a path. Finding: line 27's host-class label `hosted-mcp` is a kebab-case identifier in the same document that prints the path /mcp; a skimming reader can mistake the class row for an endpoint instruction, and that row itself carries no URL. Recommendation: on line 27, repeat the canonical URL ("...add https://room.trydemigod.com/mcp as an HTTP MCP server...") so the one class whose whole job is the MCP endpoint states it; keep `hosted-mcp` only as a label. Concept E - Absolute vs relative presentation (docs-set level). Finding: JOIN-ANY-AGENT.md and the packets present the endpoint as an absolute URL, while llms-full.txt's procedural steps also refer to the same endpoint relatively ("use that string on /mcp", "POST https://room.trydemigod.com/mcp" elsewhere). Same path, two presentations; harmless for a human, but a paste-in router aimed at arbitrary hosts should use one form. Recommendation: absolute https://room.trydemigod.com/mcp in every reader-facing paste/config context; reserve the relative "/mcp" for same-origin API prose. CRITERION 3 - No file edits required; read-only audit. Confirmed: this artifact is the audit. No repository files were edited. Summary: docs/JOIN-ANY-AGENT.md contains exactly one MCP endpoint path (https://room.trydemigod.com/mcp, line 5) and it is the correct canonical one. Every inconsistency found is an omission or a docs-set divergence around it - the getdasha alias (Concept B), the MCP discovery paths (Concept C), and the URL-less hosted-mcp class row (Concept D) - not a wrong path in the audited file.