mcpay
Version:
SDK and CLI for MCPay functionality - MCP servers with payment capabilities
246 lines • 8.56 kB
TypeScript
import type { CallToolRequest, CallToolResult, ListToolsResult } from "@modelcontextprotocol/sdk/types.js";
import type { FacilitatorConfig, Network, Price } from "x402/types";
import type { Hook, RequestExtra, ListToolsRequestWithContext } from "../hooks.js";
export type RecipientWithTestnet = {
address: string;
isTestnet?: boolean;
};
export type X402ProxyConfig = {
recipient: Partial<Record<Network, string>> | Partial<Record<"evm" | "svm", RecipientWithTestnet>>;
facilitator: FacilitatorConfig;
version?: number;
prices: Record<string, Price>;
};
export declare class X402MonetizationHook implements Hook {
name: string;
private readonly cfg;
private readonly verify;
private readonly settle;
private readonly x402Version;
constructor(cfg: X402ProxyConfig);
private normalizeRecipients;
private buildRequirements;
private paymentRequired;
processCallToolRequest(req: CallToolRequest, extra: RequestExtra): Promise<{
resultType: "continue";
request: {
params: {
[x: string]: unknown;
name: string;
_meta?: {
[x: string]: unknown;
progressToken?: string | number | undefined;
} | undefined;
arguments?: {
[x: string]: unknown;
} | undefined;
};
method: "tools/call";
};
response?: undefined;
} | {
resultType: "respond";
response: {
[x: string]: unknown;
content: ({
[x: string]: unknown;
type: "text";
text: string;
_meta?: {
[x: string]: unknown;
} | undefined;
} | {
[x: string]: unknown;
type: "image";
data: string;
mimeType: string;
_meta?: {
[x: string]: unknown;
} | undefined;
} | {
[x: string]: unknown;
type: "audio";
data: string;
mimeType: string;
_meta?: {
[x: string]: unknown;
} | undefined;
} | {
[x: string]: unknown;
type: "resource_link";
name: string;
uri: string;
_meta?: {
[x: string]: unknown;
} | undefined;
mimeType?: string | undefined;
title?: string | undefined;
description?: string | undefined;
icons?: {
[x: string]: unknown;
src: string;
mimeType?: string | undefined;
sizes?: string | undefined;
}[] | undefined;
} | {
[x: string]: unknown;
type: "resource";
resource: {
[x: string]: unknown;
text: string;
uri: string;
_meta?: {
[x: string]: unknown;
} | undefined;
mimeType?: string | undefined;
} | {
[x: string]: unknown;
uri: string;
blob: string;
_meta?: {
[x: string]: unknown;
} | undefined;
mimeType?: string | undefined;
};
_meta?: {
[x: string]: unknown;
} | undefined;
})[];
_meta?: {
[x: string]: unknown;
} | undefined;
structuredContent?: {
[x: string]: unknown;
} | undefined;
isError?: boolean | undefined;
};
request?: undefined;
}>;
processCallToolResult(res: CallToolResult, original: CallToolRequest, extra: RequestExtra): Promise<{
resultType: "continue";
response: {
[x: string]: unknown;
content: ({
[x: string]: unknown;
type: "text";
text: string;
_meta?: {
[x: string]: unknown;
} | undefined;
} | {
[x: string]: unknown;
type: "image";
data: string;
mimeType: string;
_meta?: {
[x: string]: unknown;
} | undefined;
} | {
[x: string]: unknown;
type: "audio";
data: string;
mimeType: string;
_meta?: {
[x: string]: unknown;
} | undefined;
} | {
[x: string]: unknown;
type: "resource_link";
name: string;
uri: string;
_meta?: {
[x: string]: unknown;
} | undefined;
mimeType?: string | undefined;
title?: string | undefined;
description?: string | undefined;
icons?: {
[x: string]: unknown;
src: string;
mimeType?: string | undefined;
sizes?: string | undefined;
}[] | undefined;
} | {
[x: string]: unknown;
type: "resource";
resource: {
[x: string]: unknown;
text: string;
uri: string;
_meta?: {
[x: string]: unknown;
} | undefined;
mimeType?: string | undefined;
} | {
[x: string]: unknown;
uri: string;
blob: string;
_meta?: {
[x: string]: unknown;
} | undefined;
mimeType?: string | undefined;
};
_meta?: {
[x: string]: unknown;
} | undefined;
})[];
_meta?: {
[x: string]: unknown;
} | undefined;
structuredContent?: {
[x: string]: unknown;
} | undefined;
isError?: boolean | undefined;
};
}>;
processListToolsResult(result: ListToolsResult, originalRequest: ListToolsRequestWithContext, extra: RequestExtra): Promise<{
resultType: "continue";
response: {
[x: string]: unknown;
tools: {
[x: string]: unknown;
name: string;
inputSchema: {
[x: string]: unknown;
type: "object";
properties?: {
[x: string]: unknown;
} | undefined;
required?: string[] | undefined;
};
_meta?: {
[x: string]: unknown;
} | undefined;
title?: string | undefined;
description?: string | undefined;
icons?: {
[x: string]: unknown;
src: string;
mimeType?: string | undefined;
sizes?: string | undefined;
}[] | undefined;
outputSchema?: {
[x: string]: unknown;
type: "object";
properties?: {
[x: string]: unknown;
} | undefined;
required?: string[] | undefined;
} | undefined;
annotations?: {
[x: string]: unknown;
title?: string | undefined;
readOnlyHint?: boolean | undefined;
destructiveHint?: boolean | undefined;
idempotentHint?: boolean | undefined;
openWorldHint?: boolean | undefined;
} | undefined;
}[];
_meta?: {
[x: string]: unknown;
} | undefined;
nextCursor?: string | undefined;
};
}>;
}
//# sourceMappingURL=x402-hook.d.ts.map