# SPDX-FileCopyrightText: 2026 James Harton # # SPDX-License-Identifier: Apache-2.0 defmodule BB.MCP.Resources do @moduledoc """ Shared helpers for the resource component modules under `BB.MCP.Resources.*`. """ alias Anubis.MCP.Error alias BB.MCP.Robots alias BB.MCP.Tools @doc """ Resolve a `robot` URI template variable to a robot module. Returns `{:ok, module}` or `{:error, Anubis.MCP.Error.t()}`. """ @spec fetch_robot(map()) :: {:ok, module()} | {:error, struct()} def fetch_robot(%{"params" => %{"robot" => name}}) when is_binary(name) do case Robots.fetch(Tools.robots(), name) do {:ok, module} -> {:ok, module} {:error, :unknown_robot} -> {:error, Error.resource(:not_found, %{ message: "unknown robot #{inspect(name)}; available: #{Tools.available_names()}" })} end end def fetch_robot(_), do: {:error, Error.resource(:not_found, %{ message: "missing robot URI template variable" })} end