/**
 * Studiograph MCP tool definitions
 *
 * Each tool is a thin wrapper around existing WorkspaceManager / BaseGraphManager
 * methods — no new business logic. Results are returned as JSON text so the
 * MCP client (Claude Desktop) can process structured data.
 *
 * Every tool enforces per-user access control via `services/access-control.ts`.
 * Callers (the HTTP /mcp route, the stdio MCP server) must resolve a user
 * identity before registering tools — `registerTools` requires a user in its
 * `McpAccessContext` argument so there is no anonymous MCP path.
 *
 * Note: `inputSchema` is cast to `any` at each call site because the MCP SDK's
 * ZodRawShapeCompat type does not accept ZodObject in TypeScript's strict mode.
 * Runtime schema validation is handled correctly by the SDK regardless.
 */
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { WorkspaceManager } from '../core/workspace-manager.js';
import type { AuthService, AuthUser } from '../services/auth-service.js';
import type { WsHub } from '../server/ws-hub.js';
import type { CommentService } from '../services/comment-service.js';
/** The resolved caller identity for an MCP session. */
export interface McpAccessContext {
    user: AuthUser;
    /**
     * Optional WebSocket hub. When supplied, entity-mutation tools
     * (create_entity, update_entity) broadcast `entity_change` events so
     * connected web clients refresh their views live — matching the HTTP
     * routes in graph-api.ts. Absent in contexts that have no hub (stdio
     * server, tests that don't care about live updates).
     */
    wsHub?: WsHub;
    /**
     * The user-set name on the api_tokens row that authenticated this session
     * (e.g. "Cursor", "Claude Desktop"). Surfaced in `entity_change` and
     * `agent_activity` events so other workspace users can see "Christian's
     * Cursor created entry X" rather than a bare username.
     */
    apiTokenName?: string;
    /**
     * Optional CommentService. When supplied, generic entity tools dispatch
     * `entity_type='comment'` reads through the virtual-entity adapter so
     * agents see comments as first-class typed entities. Absent on stdio
     * MCP contexts that don't construct a CommentService.
     */
    commentService?: CommentService;
}
export declare function registerTools(server: McpServer, wm: WorkspaceManager, authService: AuthService, ctx: McpAccessContext): void;
