*/ interface ReferenceRegistryInterface { /** * Gets server capabilities based on registered elements. */ public function getCapabilities(): ServerCapabilities; /** * Registers a tool with its handler. * * @param Handler $handler */ public function registerTool(Tool $tool, callable|array|string $handler, bool $isManual = false): void; /** * Registers a resource with its handler. * * @param Handler $handler */ public function registerResource(Resource $resource, callable|array|string $handler, bool $isManual = false): void; /** * Registers a resource template with its handler and completion providers. * * @param Handler $handler * @param array $completionProviders */ public function registerResourceTemplate( ResourceTemplate $template, callable|array|string $handler, array $completionProviders = [], bool $isManual = false, ): void; /** * Registers a prompt with its handler and completion providers. * * @param Handler $handler * @param array $completionProviders */ public function registerPrompt( Prompt $prompt, callable|array|string $handler, array $completionProviders = [], bool $isManual = false, ): void; /** * Clear discovered elements from registry. */ public function clear(): void; /** * Get the current discovery state (only discovered elements, not manual ones). */ public function getDiscoveryState(): DiscoveryState; /** * Set discovery state, replacing all discovered elements. * Manual elements are preserved. */ public function setDiscoveryState(DiscoveryState $state): void; }