MCP Auth vs Tool-Call Authorization After the 2026-07-28 Spec

- Share:





2938 Members
On July 28, 2026, many teams achieved a significant operational milestone with MCP, gaining benefits like stateless request handling, improved load balancing, and header-based routing. However, this success also raised a crucial security issue: if any instance can process any request, who decides if a model should execute a specific tool call at that moment? The 2026-07-28 MCP specification release strengthened identity and transport security, but highlighted a key architectural truth: OAuth provides the delegated-access framework, while runtime authorization requires policy enforcement mechanisms beyond OAuth scopes to determine whether each action should execute.
The 2026-07-28 release reinforced both authentication and authorization with specific measures. It emphasized RFC 9207 issuer validation, the OAuth authorization-server issuer identification mechanism that requires clients to validate the iss parameter before using authorization codes, thereby closing authorization-server mix-up vulnerabilities. Credentials are now more tightly bound to specific issuers, reducing credential reuse risk across different issuers.
This release also deprecated Dynamic Client Registration (DCR) in favor of Client ID Metadata Documents (CIMD) within the MCP authorization model, while maintaining DCR for backward compatibility during transitions. The WorkOS analysis of the 2026 auth changes explains this evolution: CIMD is now the strategic endpoint, not DCR.
At the transport edge, Streamable HTTP now mandates Mcp-Method and Mcp-Name headers, allowing gateways to route and inspect semantics without parsing the body, as detailed in the MCP 2026-07-28 release and the MCP authorization and security tutorial.
OAuth is essential for delegated user consent, token lifecycle, and scope-carrying credentials, while OpenID Connect carries identity assertions in many deployments. Cloud operators, like Google Cloud, use this stack for delegated tokens and token management patterns.
However, OAuth is not designed to address every action-time question. A bearer token might be valid but still too risky for a specific operation in the current context. OAuth scopes influence baseline access, while runtime authorization decides if the current call should proceed, considering factors like tool, target, risk tier, user role, environment state, and recent behavior.
This distinction is crucial when teams expose high-impact tools, because OAuth is not sufficient for high-risk operations that need runtime authorization.
Authentication verifies who (or what) is calling. MCP tool-call authorization assesses whether that caller can perform a specific operation with the current parameters. They are related but distinct processes.
A valid token might allow tools/call, but authorization must evaluate if tools/call on delete_customer is permissible for this principal, workspace, time, dataset, model mode, and confidence path.
This distinction is increasingly important in the post-session model. As the 2026-07-28 spec release removed protocol-level session assumptions and promoted stateless calls, enforcement must shift to explicit, per-invocation decisions rather than relying on implicit trust from connection state.

Mcp-Method and Mcp-Name: risk tiering and decision loggingThe Mcp-Method and Mcp-Name headers enhance enforcement efficiency. Instead of parsing JSON payloads at every edge component, a gateway can quickly classify requests and consult a policy decision layer to allow, deny, challenge, or escalate.
This supports a clear risk model. Mcp-Method=tools/call with Mcp-Name=read_ticket might be low-risk, while Mcp-Name=issue_refund or Mcp-Name=drop_table could require stronger checks, step-up consent, or human approval. These standardized headers ensure consistency between headers and body semantics, improving decision logs and incident timelines.
The enforcement process is straightforward: route and pre-classify at the gateway, validate header-body consistency, and make policy decisions based on method, tool identity, and context. This design aligns with the header-based routing goals in the 2026-07-28 MCP release notes.

The practical question now is where to host the policy brain. Permit offers a way to externalize runtime decisions, allowing gateways and MCP services to enforce consistent, auditable policy without embedding fragile authorization logic in every tool handler.
A typical setup involves using OAuth and OIDC for identity and delegation, then calling Permit as the Policy Decision Point (PDP) for each sensitive invocation. The request context includes principal, tenant, Mcp-Method, Mcp-Name, tool arguments metadata, environment posture, and trust signals. Permit returns allow, deny, or conditional responses, which enforcement points apply before forwarding to MCP servers or downstream APIs.
This maintains a clear division: identity management from OAuth, action governance from policy.
A production-grade flow usually involves this sequence: MCP client sends a request to the gateway, the gateway validates protocol and authentication, queries a PDP, and forwards only approved requests to an MCP server or target API.
The gateway should enforce header presence and validity (MCP-Protocol-Version, Mcp-Method, Mcp-Name where required), verify token basics, and enrich context for policy checks. The PDP evaluates policy and risk tier. The MCP server remains focused on business logic, with optional local authorization for additional security.
This architecture fits well with enterprise federation patterns like Enterprise Managed Authorization (EMA), where centralized identity-provider control can provision access while runtime policy governs executable actions.
Begin with a deny-by-default approach, then allow explicitly by method and tool family. Read-only tools should have broader access and lower friction. Write tools need tighter principal and scope constraints. Destructive tools require the strictest controls, often including approval gates and temporal limits.
Step-up approval should be policy-native, not hardcoded per tool. If a request crosses a risk threshold, require stronger user presence, manager approval, or secure second-factor confirmation before proceeding.
Delegated authority boundaries are important for agents acting on behalf of users. Define who can delegate, to which agent identity, for which tool classes, for how long, and with what resource limits.
Mid-session trust adaptation should re-evaluate each call. Even in stateless MCP, trust can change quickly: new destination, unusual volume, abnormal time window, unexpected tool switching, or prompt-injection indicators should dynamically adjust privileges.
The key change is that authorization became both stricter and more interoperable. Issuer validation and issuer-bound credentials reduce mix-up risk, while DCR deprecation in favor of CIMD sets a clearer registration direction. The spec now defines safer defaults instead of leaving critical behavior implicit.
OAuth is necessary but not sufficient on its own. It provides authenticated, delegated access with token lifecycle controls, which is foundational. However, it does not automatically determine if a specific high-risk tool action should be performed in the current context.
Authentication verifies identity and token legitimacy. Tool-call authorization evaluates permission for a specific action, usually considering richer context like tool name, target resource, tenant, and risk posture. Both layers are needed for production MCP security.
tools/call requests?The gateway should validate required MCP headers, authenticate the token, classify the call by method and tool name, then consult a PDP for a decision before forwarding. This prevents duplicating policy logic across every MCP server instance and ensures consistent decision logging and easier incident response.
Mcp-Method and Mcp-Name change enforcement design so much?They provide intermediaries with a reliable, standardized signal for the operation being attempted. This enables deterministic routing, risk tiering, and policy checks without costly body parsing. They also enhance audit quality because policy logs can directly reference method and tool identity.
EMA adds centralized enterprise control over server access through the organization’s IdP, including ID-JAG-based delegated flows. It reduces per-user, per-server authorization friction and improves governance posture. It still benefits from runtime action authorization for per-tool control.
Teams should plan migration now, even if they retain DCR for backward compatibility during the transition. The 2026-07-28 direction clearly favors CIMD, and delaying too long increases upgrade challenges. A staged dual-support period is typically the safest approach for mixed-client ecosystems.

Co-Founder / CEO at Permit.io