carbon.fyi is readable by agents. Everything on the News and Data tabs is available over the Model Context Protocol — a curated archive of voluntary carbon market stories, live carbon credit prices, and a price history archive we record ourselves.
The endpoint is free, keyless, and read-only. There is no account, no API key, and nothing on this site an agent can change.
https://www.carbon.fyi/api/mcp6 tools. Start with get_market_summary — it returns the archive size, the available story tags, and the current price table in one call, which is usually enough to decide what to ask next.
Any client that speaks Streamable HTTP can connect with the URL alone. Two common cases:
claude mcp add --transport http carbon-fyi https://www.carbon.fyi/api/mcp{
"mcpServers": {
"carbon-fyi": {
"url": "https://www.carbon.fyi/api/mcp"
}
}
}For a client that only speaks stdio, proxy it with npx mcp-remote https://www.carbon.fyi/api/mcp.
Every tool is read-only. The cost column is the only interesting distinction: cached tools are served from a shared cache for up to 15 minutes, so they are cheap to call repeatedly. Live tools query the database on every call and are rate-limited more tightly.
| Tool | Cost | What it does |
|---|---|---|
get_market_summary | cached | One-call orientation: how many stories are published, when the feed last updated, the current price table, and the story-tag breakdown. |
list_sources | cached | The publications and registries carbon.fyi monitors, with tier and type. |
| Tool | Cost | What it does |
|---|---|---|
search_news | cached | Search the curated voluntary-carbon-market story archive by free text, tag, or date. Every result carries its original source name and URL. |
get_story | cached | One story in full by cluster id, with every source that reported it. Story ids are permanent. |
| Tool | Cost | What it does |
|---|---|---|
get_carbon_prices | cached | Current carbon credit prices — per-category min/median and available supply from Carbonmark, plus Klima Protocol carbon-class spot prices. |
get_price_history | live | Daily-averaged price series for a category or carbon class. This archive exists only because we record it; no upstream API serves a historical series. |
The three most recent integrity stories — ICVCM decisions, CCP labels, fraud and quality rulings — straight over JSON-RPC, no client library:
curl -s -X POST https://www.carbon.fyi/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {
"name": "search_news",
"arguments": { "tag": "integrity", "limit": 3 }
}
}'Each story comes back with its headline, the editorial summary, its tag, every publication that reported it, and a permanent link. In an agent, the same thing is just a question — “what has happened with carbon credit integrity rulings this month?” — and the model picks the tool and the tag itself.
There are two key factors that should be considered when utilizing this functionality:
Cite the original source, not carbon.fyi. Our story summaries are editorial rewrites of other people’s reporting, not quotations. Every story carries the publication’s name and URL for exactly this reason — the journalism is theirs, and the link should survive into whatever you build.
Prices are observations, not valuations. Carbonmark category figures are median listed asking prices, not cleared transactions. Klima carbon-class figures are protocol AAM spot prices, inversely related to how much credit is left in a class, so a heavily supplied class prices far below the wider market. Neither is “the price of carbon”, and neither is advice.
Coverage is editorial and not exhaustive. Absence of a story is not evidence that nothing happened — call list_sources to see what is actually monitored.
The version above describes the agent contract — the tools and the shape of their responses — not the website. It moves when the contract moves, and not when the news copy or the styling changes.
v0.1.02026-08-27For crawlers, registries and agents that would rather read a document than a web page:
| MCP server card | https://www.carbon.fyi/.well-known/mcp/server.json |
|---|---|
| Agent card (A2A) | https://www.carbon.fyi/.well-known/agent-card.json |
| Site map for LLMs | https://www.carbon.fyi/llms.txt |
All three are generated from the same tool catalog that the server itself registers from, so they cannot describe a server we do not run.