Free · No auth required

Gold Data MCP Server

Connect any AI assistant to live gold data. Five read-only tools covering spot price, daily history, the intraday series XAUS records itself, central bank reserves and multi-asset comparisons. No API key, no account, no rate limits.

POST
https://xaus.com/mcp

Connect in one line

The server lives at a single URL. There is no key to request, no OAuth flow and no sign up, so most clients need nothing beyond the address itself.

Endpoint
https://xaus.com/mcp

Most desktop assistants read a JSON config file. Add XAUS as a remote server:

JSON, client configuration
{
  "mcpServers": {
    "xaus": {
      "url": "https://xaus.com/mcp"
    }
  }
}

To check the connection by hand, send the handshake a client sends first. The Accept header must list both media types, which is a protocol requirement rather than a quirk of this server:

curl, initialize handshake
curl -X POST https://xaus.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize",
       "params":{"protocolVersion":"2025-06-18","capabilities":{},
                 "clientInfo":{"name":"curl","version":"1"}}}'

Then list the tools over the same connection:

curl, tools/list
curl -X POST https://xaus.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

What the tools do

Five tools, all read-only. Each one is a thin adapter over the public XAUS REST API, so a tool result contains exactly what the matching endpoint returns, provenance included. Call tools/list for the machine-readable schemas.

ToolWhat it returnsArguments
get_gold_priceLive XAU/USD spot price, plus silver, the gold/silver ratio, tokenized gold (XAUT, PAXG) and Bitcoin comparisons.currency ISO 4217 code, default USD
unit oz · gram · kg, default oz
get_gold_historyUp to five years of daily closes with 52 week high and low, trading ranges and period returns.range for example 1m, 6m, 1y, 5y
get_gold_intradayThe price series XAUS records itself, sampled every two minutes from the live quote and retained for 14 days. First-party, not republished from another vendor.symbol xau · xag, default xau
hours 1 to 48, default 24
get_central_bank_reservesOfficial gold holdings in metric tonnes, ranked, with month over month change and the IMF reporting month behind each figure.country optional name filter
compare_gold_to_assetOHLCV series for gold alongside another asset, for relative performance questions.symbol required: silver, btc, sp500, nasdaq, dxy, eurusd, oil, platinum, palladium
range for example 1m, 1y, 5y

A missing price is an answer

XAUS never simulates a number. Every tool result carries the same data_state object the REST API returns, so a model can tell the difference between a live figure and a cached one without guessing:

data_state.statusWhat it meansWhat the tool does
freshThe price came straight from the upstream source.Returns the figure with its timestamp.
staleThe upstream source is down; this is the last real price XAUS saw.Returns it, labelled stale in the text, with its age in seconds.
unavailableThe upstream source is down and there is no cached price.Says so plainly. No number is invented and no protocol error is raised.
Why an absent price is not an error. A tool that throws when data is missing pushes the model toward filling the gap itself. Returning an ordinary result that states the absence lets the assistant say "I could not get a live gold price" instead, which is the truthful answer. Transport failures are different and do set isError: those say nothing about the gold market, only about the connection.

data_state describes freshness at the moment the response was generated. If your client fetches through a caching layer, validate updated_at against the current time yourself.

Protocol details

PropertyValue
Protocol versions2025-11-25 back to 2024-10-07, negotiated during initialize. You do not need to pick one: your client sends what it speaks and the server agrees on the best match.
TransportStateless Streamable HTTP, JSON-RPC 2.0 over POST. Built on the official MCP SDK, so protocol handling is not hand-rolled here.
MethodsThe standard set: initialize · tools/list · tools/call
SessionsNone. The server runs stateless, so each request is independent and no session id is issued.
AuthenticationNone. The data is public and read-only, so there is nothing to authorize.
VerbsPOST only. GET returns 405 rather than opening a streaming connection a serverless function cannot hold open.
Required headersContent-Type: application/json and an Accept listing both application/json and text/event-stream. A request missing either media type is answered 406 by the protocol layer.
Rate limit120 requests per minute per IP. Generous for a conversation, tight enough to stop a runaway retry loop.
CORSFully open. You can call the server from browser JavaScript.

Limits and fair use

No key, no account. The server is free for any use: assistants, agents, research and open-source tools. There is one guard rail, a rate limit of 120 requests per minute per IP, which a conversation will never reach and a runaway retry loop will. The tool list only changes when the server is redeployed, so cache it rather than refetching it every conversation.

Price data is a different matter and should not be cached for long. The spot quote refreshes roughly every 30 seconds. For high-volume commercial use, get in touch via the contact page.

Prices are indicative mid-market rates, not tradable quotes, and nothing here is financial advice. Sources and methodology are documented on the about page.