Skip to main content
Fentaris exposes a few core types to wire middleware, hooks, and transports.

UserContext

type UserContext = {
  id?: string;
  [key: string]: unknown;
};

ToolCallRequest

type ToolCallRequest = {
  serverName: string;
  toolName: string;
  proxyToolName: string;
  arguments: CallToolRequest["params"]["arguments"];
  raw: CallToolRequest["params"];
};

Middleware

type Middleware = (
  request: ToolCallRequest,
  context: MiddlewareContext,
  next: () => Promise<CallToolResult>
) => CallToolResult | void | Promise<CallToolResult | void>;

ListToolsHook

type ListToolsHook = (
  tools: ListToolsResult["tools"],
  context: { user: UserContext; log: Logger }
) => ListToolsResult["tools"] | ListToolsResult | void | Promise<...>;

FentarisTransport

type FentarisTransport = {
  listTools(params?: ListToolsRequest["params"]): Promise<ListToolsResult>;
  callTool(params: CallToolRequest["params"]): Promise<CallToolResult>;
  listResources?(params?: ListResourcesParams): Promise<ListResourcesResponse>;
  readResource?(params: ReadResourceParams): Promise<ReadResourceResponse>;
  listResourceTemplates?(params?: ListResourceTemplatesParams): Promise<ListResourceTemplatesResponse>;
  listPrompts?(params?: ListPromptsParams): Promise<ListPromptsResponse>;
  getPrompt?(params: GetPromptParams): Promise<GetPromptResponse>;
  complete?(params: CompleteParams): Promise<CompleteResponse>;
  close(): Promise<void>;
};
The resource, prompt, template, and completion methods are optional. Tool-only transports remain valid; Fentaris returns empty list responses for unsupported list operations and errors for unsupported read/get/complete operations.

MCP server feature aliases

Fentaris re-exports typed aliases for the new request and result shapes:
type ListResourcesParams = ListResourcesRequest["params"];
type ListResourcesResponse = ListResourcesResult;
type ReadResourceParams = ReadResourceRequest["params"];
type ReadResourceResponse = ReadResourceResult;
type ListResourceTemplatesParams = ListResourceTemplatesRequest["params"];
type ListResourceTemplatesResponse = ListResourceTemplatesResult;
type ListPromptsParams = ListPromptsRequest["params"];
type ListPromptsResponse = ListPromptsResult;
type GetPromptParams = GetPromptRequest["params"];
type GetPromptResponse = GetPromptResult;
type CompleteParams = CompleteRequest["params"];
type CompleteResponse = CompleteResult;