> Fetch https://askmiles.ai/llms.txt first: it indexes every public Miles capability. This file is the markdown twin of https://askmiles.ai/docs/mcp/overview.

# MCP overview

The Miles MCP server: its URL, the two scopes, what Membership gates, how a third-party client's results are redacted, and the schema promise.

## The server

`https://mcp.askmiles.ai/mcp`, streamable HTTP, OAuth 2.1 with dynamic client registration. It puts an agent's own reasoning on top of a user's real wallet: their cards, their valuations, their balances, their certificates. Miles returns data and arithmetic; the calling model decides what to do with it, on the caller's tokens. No tool on this server spends a Miles model call.

The server identifies itself as `askmiles` with the display title `Miles`. A client alias is whatever you named it when you added it.

| | |
|---|---|
| Connect | [Connect over MCP](https://askmiles.ai/docs/getting-started/mcp) for a person's own agent; [OAuth app](https://askmiles.ai/docs/getting-started/oauth-app) for an app acting for someone else |
| Tools | 47, listed with every parameter under [MCP tools](https://askmiles.ai/docs/mcp/tools); one flat file for agents at [/docs/mcp/tools.md](https://askmiles.ai/docs/mcp/tools.md) |
| Resource | `miles://guidance/working-with-miles`: how to read a capped or conditional rate, when a missing field means unknown rather than no. Advisory, not enforced. |
| Prompt | `points_question`, taking one `question` argument |

## Scopes

| Scope | Reaches |
|---|---|
| `miles:read` | Every read tool. The default when a client requests nothing. |
| `miles:write` | The sixteen write tools. A toggle on the consent screen, off unless the user turns it on; a token never carries it otherwise. |

A refusal for a missing scope says so in the result and is fixed by a re-grant with the toggle on. It is not the same as a spent ceiling, which resets, or a Membership refusal, which does not; see [Quotas and refusals](https://askmiles.ai/docs/mcp/quotas).

## Membership

Ten of the sixteen write tools need the user to be a Miles Member even with `miles:write` granted: `set_valuation`, `reset_valuation`, `set_certificate_status`, `set_free_night_status`, `set_credit_usage`, `set_elite_status`, `remove_elite_status`, `add_to_watchlist`, `remove_from_watchlist` and `update_watchlist_entry`. Adding, editing and removing cards and gift cards is free. The refusal arrives as an `isError` result with the code `supporter_required`; the code keeps its historical spelling. Nothing about it resets.

## Third-party clients

A token minted to a registered OAuth app is an outside agent. Household member names and similar personal fields are redacted from every tool result at the boundary, and a gift card's number is never echoed back. A person's own agent, connected from their own account, sees everything.

## The schema promise

A shipped tool's declared parameters are never renamed or removed. A breaking change ships as a new tool name with a deprecation window on the old one; a new optional parameter or a new tool can appear at any time. The one exception on record is described on [Stability](https://askmiles.ai/docs/trust/stability).

## Not every capability is a tool

Ten registry entries are deliberately withheld from this server, among them the snapshot generator and an expression calculator. [What is not a tool](https://askmiles.ai/docs/mcp/what-is-not-a-tool) says which and why.
