kavachOS
Framework adapters

Nuxt

KavachOS adapter for Nuxt (H3).

kavachNuxt(kavach, options?) returns an H3 EventHandler. Mount it in a catch-all server route so all KavachOS paths are handled.

Install

pnpm add kavachos @kavachos/nuxt

Setup

Create the kavach instance

Create this outside the event handler so it is initialized once at server startup:

// server/utils/kavach.ts
import { createKavach, createMcpModule } from 'kavachos';

export const kavach = createKavach({
  database: { provider: 'postgres', url: process.env.DATABASE_URL! },
  baseUrl: process.env.AUTH_BASE_URL!,
  mcp: {
    issuer: process.env.AUTH_BASE_URL!,
    audience: process.env.MCP_BASE_URL!,
  },
});

export const mcp = createMcpModule(kavach);

Create the catch-all route

In Nuxt, a file named [...].ts in the server routes directory catches all sub-paths. Create server/api/kavach/[...].ts:

// server/api/kavach/[...].ts
import { kavachNuxt } from '@kavachos/nuxt';
import { kavach, mcp } from '../utils/kavach';

export default kavachNuxt(kavach, { mcp });

The basePath option defaults to /api/kavach. If your Nuxt app uses a different route prefix, pass basePath to match.

Options

interface KavachNuxtOptions {
  mcp?: McpAuthModule;     // enables MCP OAuth 2.1 endpoints
  basePath?: string;       // defaults to '/api/kavach'
}

MCP endpoints

When mcp is passed, the MCP OAuth 2.1 authorization server is available at:

GET  /api/kavach/.well-known/oauth-authorization-server
GET  /api/kavach/.well-known/oauth-protected-resource
POST /api/kavach/mcp/register
GET  /api/kavach/mcp/authorize
POST /api/kavach/mcp/token

Endpoint reference

MethodPathDescription
POST/agentsCreate an agent
GET/agentsList agents
GET/agents/:idGet an agent
PATCH/agents/:idUpdate an agent
DELETE/agents/:idRevoke an agent
POST/agents/:id/rotateRotate token
POST/authorizeAuthorize by agent ID
POST/authorize/tokenAuthorize by bearer token
POST/delegationsCreate delegation
GET/delegations/:agentIdList delegation chains
DELETE/delegations/:idRevoke delegation
GET/auditQuery audit logs
GET/audit/exportExport audit logs

Full example

// server/api/kavach/[...].ts
import { createKavach, createMcpModule } from 'kavachos';
import { kavachNuxt } from '@kavachos/nuxt';

const kavach = createKavach({
  database: { provider: 'postgres', url: process.env.DATABASE_URL! },
  baseUrl: process.env.AUTH_BASE_URL!,
  mcp: {
    issuer: process.env.AUTH_BASE_URL!,
    audience: process.env.MCP_BASE_URL!,
  },
});

const mcp = createMcpModule(kavach);

export default kavachNuxt(kavach, { mcp });

All KavachOS routes are then available at /api/kavach/... within your Nuxt server.

On this page