Field note

AgentBouncer SDK 0.2.0: MCP request signing, OAuth support, and a new policy wizard

On July 21, 2026, we released @agentbouncer/sdk version 0.2.0 and updated AgentBouncer’s policy management tools. The SDK now supports server-side request signi

AgentBouncer SDK 0.2.0: MCP request signing, OAuth support, and a new policy wizard

On July 21, 2026, we released @agentbouncer/sdk version 0.2.0 and updated AgentBouncer’s policy management tools. The SDK now supports server-side request signing, request-body integrity validation, and user OAuth token forwarding in addition to incoming request verification.

Since launching the public beta, we have been speaking with MCP server developers and learning from their real-world integration scenarios. We are grateful to everyone who shared their architecture, demonstrated their tool collections, and explained the challenges they encountered while configuring access.

A significant part of this update was shaped by that feedback.

A complete toolkit for both sides of an MCP integration

The initial SDK release primarily acted as a verification client: an MCP server forwarded a signed request to AgentBouncer and received a final access decision.

Version 0.2.0 supports both sides of the interaction:

  • AI agents can create signed MCP requests;
  • MCP servers can verify signatures and validate request bodies;
  • a user OAuth access token can be forwarded alongside the verified agent identity.

The release introduces createAgentBouncerSigner(), AgentBouncerSigner, sign(), and signJson(). When signing a request with a body, the SDK automatically creates a Content-Digest and binds the signature to the HTTP method, public authority, request path, body content, and declared agent identity.

import {
  createAgentBouncerSigner,
} from "@agentbouncer/sdk";

const signer =
  createAgentBouncerSigner({
    privateJwk,
    keyId,
    signatureAgent:
      "https://agent.example.com",
  });

const request =
  await signer.signJson({
    url:
      "https://mcp.example.com/api/mcp/weather",
    method: "POST",
    json: {
      city: "Berlin",
    },
    accessToken:
      userOAuthAccessToken,
  });

const response = await fetch(request);

Request-body integrity validation

A signed Content-Digest protects a request body only when the server compares it with the body it actually received. AgentBouncer.verify() now performs this check locally before calling the AgentBouncer Verify API.

If the request body was modified after signing, the SDK returns:

{
  "verified": false,
  "allowed": false,
  "reason": "content_digest_mismatch"
}

The remote verification API is not called when the digest does not match. This rejects the invalid request before its signature can be recorded by replay protection. Content-Digest validation is enabled by default.

User OAuth forwarding

Version 0.2.0 supports integrations that need to verify two identities associated with a request:

  1. the AI agent that signed the MCP request;
  2. the user on whose behalf the agent is performing an action.

The SDK can extract a bearer token from the incoming Authorization header and forward it to AgentBouncer separately from the agent identity. Applications can also provide a token explicitly through userToken or disable automatic forwarding with forwardAuthorization: false.

New types and helpers—including isOAuthRequired(), isOAuthScopeDenied(), and getRequiredOAuthScopes()—make it easier to map AgentBouncer decisions to OAuth-compatible 401 and 403 responses.

OAuth redirects, PKCE, callback handling, and token storage remain the application’s responsibility.

Interactive policy creation wizard

Alongside the SDK release, we have updated the policy management experience.

The new interactive wizard helps developers create access rules without starting from a large JSON document or assembling a complex policy manually. It guides users through selecting:

  • who should be allowed or denied;
  • which actions the rule applies to;
  • which MCP tools the rule covers;
  • whether the rule should use an ALLOW or DENY effect;
  • what should happen when no rule matches.

This is particularly useful for MCP servers exposing many different tools. Instead of applying one broad policy to the entire server, developers can more easily create dedicated rules for search, data access, document creation, messaging, payments, and other operations.

A stronger signing profile

The new release strengthens MCP request integrity. The recommended signing profile covers:

@method
@authority
@path
content-digest
signature-agent

Older clients that do not sign the required components may receive a weak_signature_profile response.

A signed request must also be sent only once. If OAuth authorization is required, the client must create a new signature after the OAuth flow completes instead of retrying the original request. Private JWKs, AgentBouncer API keys, and OAuth access tokens must remain in server-side environments.

Migrating from 0.1.x

Existing verify() integrations remain compatible:

const verification =
  await agentBouncer.verify({
    request,
  });

Developers upgrading from 0.1.x should review two new defaults:

  • bearer tokens from incoming Authorization headers are forwarded as user OAuth tokens;
  • when Content-Digest is present, the SDK validates it against the actual request body locally.

Install the new version with:

npm install @agentbouncer/sdk@0.2.0

AgentBouncer SDK 0.2.0 is now available on npm, with the source code and complete release notes published in the GitHub repository.

Thank you to the MCP server developers who continue to share their use cases and feedback with us. We will keep improving the tools needed to verify AI agent identities and control access to individual actions and MCP tools.