The split is one field. A publicly reachable server is configured with `server_url`, and a tunneled one with `tunnel_id`, which is what lets an endpoint inside your network boundary stay unreachable from the internet while OpenAI still calls it. Everything else about the integration is the same.
robots.txt, llms.txt, Content-Signal and AIPREF all describe what an agent may fetch. The 2,000 packages uploaded to RubyGems in May went through a signup form and a publish endpoint, which none of those files govern. Read controls are advisory. Write paths need identity and rate limits.
SEP-2640 reached Final status and landed in the MCP docs on 13 September 2026. It requires hosts to verify every skill file against a SHA-256 digest and byte size, and binds approval to that manifest so one changed file revokes it. The tools primitive specifies none of this. MCP now has two content surfaces with opposite integrity models.