/** * Federation MCP Server — Vercel Serverless (Streamable HTTP, stateless) * * All pricing/availability logic lives in lib/ — single source of truth. * This file only handles JSON-RPC transport + tool dispatch. * * Endpoints: * POST /mcp — JSON-RPC (initialize, tools/list, tools/call, prompts/list, prompts/get) * GET /mcp — transport info * HEAD /mcp — transport liveness for uptime monitors */ import type { VercelRequest, VercelResponse } from "./_types.js"; export { SERVER_DESCRIPTION, SERVER_INSTRUCTIONS } from "../lib/server-metadata.js"; export declare const CONFIG_SCHEMA: { type: string; properties: { propertyDomain: { type: string; description: string; }; region: { type: string; description: string; }; currency: { type: string; description: string; }; language: { type: string; description: string; }; }; additionalProperties: boolean; }; export declare const TOOLS: { name: string; description: string; inputSchema: import("../lib/tool-definitions-base.js").ToolInputSchema; outputSchema: import("../lib/tool-definitions-base.js").ToolOutputSchema; annotations: import("../lib/tool-definitions-base.js").ToolAnnotations; _meta?: Record; }[]; export declare const PROMPTS: { name: string; description: string; arguments: { name: string; description: string; required: boolean; }[]; }[]; export declare const RESOURCES: { uri: string; name: string; description: string; mimeType: string; _meta: { readonly "openai/widgetDescription": "Renders a verified HemmaBo stay offer from MCP tool results with host-domain trust, live availability, final price, and the signed direct host-domain booking URL."; readonly "openai/widgetPrefersBorder": true; readonly "openai/widgetDomain": string; readonly "openai/widgetCSP": { readonly connect_domains: readonly ["https://hemmabo-mcp-server.vercel.app", "https://www.hemmabo.com", "https://hemmabo.com", "https://*.supabase.co"]; readonly resource_domains: readonly ["https://vfalgymbhyfqsyxkvpqg.supabase.co", "https://www.hemmabo.com", "https://*.hemmabo.com", "https://*.supabase.co", "https://*.vercel.app", "https://www.villaakerlyckan.se", "https://villaakerlyckan.se"]; readonly redirect_domains: readonly ["https://www.villaakerlyckan.se", "https://villaakerlyckan.se", "https://checkout.stripe.com", "https://*.stripe.com"]; }; readonly ui: { readonly prefersBorder: true; readonly domain: string; readonly csp: { readonly connectDomains: readonly ["https://hemmabo-mcp-server.vercel.app", "https://www.hemmabo.com", "https://hemmabo.com", "https://*.supabase.co"]; readonly resourceDomains: readonly ["https://vfalgymbhyfqsyxkvpqg.supabase.co", "https://www.hemmabo.com", "https://*.hemmabo.com", "https://*.supabase.co", "https://*.vercel.app", "https://www.villaakerlyckan.se", "https://villaakerlyckan.se"]; }; }; }; }[]; export declare function readResource(uri: string, mcpEndpointUrl?: string): { contents: { uri: string; mimeType: string; text: string; _meta?: Record; }[]; } | null; export declare const ANON_TOOLS: ReadonlySet; /** * Returns true if the given JSON-RPC message requires Bearer auth. * * Auth-required iff method is "tools/call" AND the requested tool name is * NOT in ANON_TOOLS. Unknown/missing tool names default to requiring auth * (fail-closed) so a typo can never bypass the gate. */ export declare function isAuthRequiredMessage(msg: unknown): boolean; export default function handler(req: VercelRequest, res: VercelResponse): Promise;