# `Jido.MCP`
[🔗](https://github.com/agentjido/jido_mcp/blob/v1.0.0/lib/jido_mcp.ex#L1)

Public API for calling MCP servers through direct Anubis client integration.

# `endpoint_id`

```elixir
@type endpoint_id() :: atom()
```

# `result`

```elixir
@type result() :: {:ok, map()} | {:error, map()}
```

# `await_endpoint_ready`

```elixir
@spec await_endpoint_ready(
  endpoint_id(),
  keyword()
) :: :ok | {:error, term()}
```

Ensures an endpoint client is started and MCP initialization is complete.

This is intended for flows that must guarantee server readiness before
subsequent operations (for example runtime tool synchronization).

# `call_tool`

```elixir
@spec call_tool(endpoint_id(), String.t(), map(), keyword()) :: result()
```

# `endpoint_status`

```elixir
@spec endpoint_status(endpoint_id()) :: {:ok, map()} | {:error, term()}
```

# `get_prompt`

```elixir
@spec get_prompt(endpoint_id(), String.t(), map(), keyword()) :: result()
```

# `list_prompts`

```elixir
@spec list_prompts(
  endpoint_id(),
  keyword()
) :: result()
```

# `list_resource_templates`

```elixir
@spec list_resource_templates(
  endpoint_id(),
  keyword()
) :: result()
```

# `list_resources`

```elixir
@spec list_resources(
  endpoint_id(),
  keyword()
) :: result()
```

# `list_tools`

```elixir
@spec list_tools(
  endpoint_id(),
  keyword()
) :: result()
```

# `read_resource`

```elixir
@spec read_resource(endpoint_id(), String.t(), keyword()) :: result()
```

# `refresh_endpoint`

```elixir
@spec refresh_endpoint(endpoint_id()) ::
  {:ok, Jido.MCP.Endpoint.t(), Jido.MCP.ClientPool.client_ref()}
  | {:error, term()}
```

# `register_endpoint`

```elixir
@spec register_endpoint(Jido.MCP.Endpoint.t()) ::
  {:ok, Jido.MCP.Endpoint.t()}
  | {:error,
     {:endpoint_already_registered, atom()} | {:invalid_endpoint, term()}}
```

# `unregister_endpoint`

```elixir
@spec unregister_endpoint(endpoint_id()) ::
  {:ok, Jido.MCP.Endpoint.t()} | {:error, :unknown_endpoint}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
