# `AttestoMCP.Scopes`
[🔗](https://github.com/XukuLLC/attesto_mcp/blob/v1.0.5/lib/attesto_mcp/scopes.ex#L1)

MCP-oriented scope naming conventions.

These helpers are deliberately small string builders. They do not decide
which principal is allowed to hold a scope, and they do not require a server
to use this catalog. The host authorization server remains responsible for
issuing scopes and the host MCP server remains responsible for selecting
which scopes protect each operation.

# `all`

```elixir
@spec all() :: [String.t()]
```

The default generic MCP scope conventions.

# `prompts_read`

```elixir
@spec prompts_read() :: String.t()
```

Scope convention for reading MCP prompts.

# `resources_read`

```elixir
@spec resources_read() :: String.t()
```

Scope convention for reading MCP resources.

# `server`

```elixir
@spec server(String.t(), atom() | String.t()) :: String.t()
```

Prefix the generic scope suffix with a server-specific namespace.

    iex> AttestoMCP.Scopes.server("search", :tools_call)
    "search:mcp:tools:call"

# `tools_call`

```elixir
@spec tools_call() :: String.t()
```

Scope convention for invoking MCP tools.

# `tools_read`

```elixir
@spec tools_read() :: String.t()
```

Scope convention for listing or reading MCP tool definitions.

---

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