In this section: 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 for a person's own agent; OAuth app for an app acting for someone else |
| Tools | 47, listed with every parameter under MCP tools; one flat file for agents at /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.
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.
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 says which and why.