import type { MantleRuntimeRef } from "./bootRuntimeOnce.js"; export interface CreateMcpApiHandlerOptions { readonly ref: MantleRuntimeRef; readonly surface: "staff" | "public"; /** Canonical RFC 8707/9728 protected resource bound into access-token aud. */ readonly resource: string; /** OAuth scopes required to enter this MCP resource. Defaults to * the existing compatibility scope `mcp`. Target-specific scopes * remain manifest predicates enforced on tools/call. */ readonly requiredScopes?: readonly string[]; } /** * Build a Cloudflare Worker `ExportedHandler` that serves one MCP path. * Better Auth issues resource-bound JWTs; this adapter verifies the token then * re-reads the caller's mutable staff role from D1 on every invocation. * * Note: OAuth scope distinction (`mcp:read` vs `mcp:staff`) used to * differentiate surfaces here. Removed because claude.ai's MCP client * silently omits `scope=` from /authorize when scopes contain colons, * which broke the consent flow. Staff vs public is now purely D1-role * driven. */ export declare function createMcpApiHandler>(options: CreateMcpApiHandlerOptions): ExportedHandler; /** `tool` recorded for a denied request whose body could not be read within * the JSON limit or was not JSON. */ export declare const AUDIT_UNREADABLE_TOOL = "(unreadable)"; //# sourceMappingURL=mountMcp.d.ts.map