carbon-fyi
Server Details
Voluntary carbon market news and open carbon price data. Read-only, keyless.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool has a generally distinct purpose, but get_market_summary includes a current price table that overlaps with get_carbon_prices. The descriptions mitigate this by clarifying that get_market_summary is for orientation while get_carbon_prices provides detailed price data from two non-comparable sources.
All tool names follow a consistent verb_noun pattern in snake_case: get_carbon_prices, get_market_summary, get_price_history, get_story, list_sources, and search_news. The naming is predictable and clearly indicates the returned resource.
Six tools is a well-scoped size for a carbon market data and news retrieval server. Each tool covers a distinct need without unnecessary redundancy or bloat.
The tool surface covers the core read-only workflows: current prices, historical prices, market orientation, news search, story retrieval by id, and source coverage discovery. The workflows connect naturally, e.g., get_market_summary provides tags for search_news, and search_news results can be followed by get_story.
Available Tools
6 toolsget_carbon_pricesCurrent carbon pricesARead-onlyInspect
Current voluntary carbon credit prices from two independent sources: per-category minimum/median price and available supply across the Carbonmark marketplace catalog, and spot prices per Klima Protocol carbon class. The two are NOT comparable — read the caveats field on each before using either number.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds meaningful behavioral context beyond this: it warns that the two price sources are NOT comparable and directs attention to the caveats field, which is important for correct interpretation of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The main subject and data provenance are front-loaded, and the crucial caveat about non-comparability is placed prominently. Every sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only tool without an output schema, the description covers the key data categories returned (per-category price/supply and per-class spot prices) and warns about interpretation. It does not spell out exact field names or units, but the caveat pointer and source breakdown provide sufficient operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline of 4 applies. The description appropriately focuses on data semantics and caveats rather than inputs; there are no parameter ambiguities to resolve.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb-resource pair: getting current voluntary carbon credit prices, and uniquely identifies the two data sources (Carbonmark marketplace and Klima Protocol). It clearly distinguishes this from siblings like get_price_history by specifying 'current' prices and from get_market_summary by focusing on prices rather than summary metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use for current voluntary carbon credit prices, and it emphasizes the need to consult caveats before using the numbers. It does not explicitly name alternative tools or when-not-to-use conditions, but its 'current' and 'two sources' framing makes appropriate usage inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_summaryMarket summaryARead-onlyInspect
One call for orientation: how much of the archive is available, when it last updated, the story-tag breakdown (use these as tag values for search_news), and the current price table. Start here.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and openWorldHint annotations already communicate that this is a safe, read-only call in an open world, so the description's main job is to add context. It does add content and cross-tool coupling, but it does not disclose any additional behavioral traits such as staleness, rate limits, or response-shape caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that starts with the key idea ('One call for orientation') and then presents a scannable list of contents. The final 'Start here.' is short, purposeful guidance with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and annotations covering safety, the description carries the full burden of explaining what the agent will get and when to use it. It explains all major output categories and links the story tags to search_news, making the call actionable end to end.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so there is no parameter semantic burcen. The 0-parameter baseline of 4 applies; the description appropriately focuses on what the output contains instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose ('One call for orientation') and enumerates the exact contents: archive availability, last updated, story-tag breakdown, and current price table. This distinguishes it from sibling tools like get_price_history or search_news by describing a cross-cutting summary rather than a targeted retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Start here' explicitly tells the agent when to make this call, and the note to use its story tags as tag values for search_news gives concrete follow-up guidance. It does not spell out when not to use each sibling, but the orientation framing provides clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_historyCarbon price historyARead-onlyInspect
Daily-averaged historical price series. This archive exists only because carbon.fyi records it three times a day: no upstream API serves a historical carbon price series, so these observations cannot be obtained anywhere else and cannot be re-derived. Check seriesStartsAt in the response — the archive began on 2026-08-27, so early windows are necessarily short.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | restrict to one category or class name (exact match, as returned by get_carbon_prices); omit for all | |
| days | No | look-back window in days (default 90) | |
| kind | Yes | which price source: marketplace category medians, or Klima carbon-class spot prices |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the read-only annotation: the archive is populated three times a day, the series is daily-averaged, the archive starts on 2026-08-27, and callers should check seriesStartsAt because early windows are short. This discloses data limitations and response expectations that annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core definition, followed by rationale and an operational caution. Each sentence earns its place with no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, it usefully reveals the response contains seriesStartsAt and that returned windows can be short. It could go further by describing the shape of the observations themselves, but the essentials for invoking and interpreting the archive are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents key, days, and kind thoroughly. The description itself adds only contextual value about daily averaging and archive start date, not new parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as a daily-averaged historical carbon price series and marks it as unique because it cannot be re-derived or obtained elsewhere. It lacks an explicit imperative verb in prose, but the tool name plus the noun-phrase makes the action unambiguous and distinguishes it from the current-price sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it – whenever a historical carbon price series is needed, since no upstream API provides one. However, it does not explicitly state when not to use it or name an alternative such as get_carbon_prices for current prices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storyGet one storyARead-onlyInspect
Fetch a single story by its id, including every source that reported it. Story ids are permanent — a published story keeps its id and its public URL indefinitely — so they are safe to store.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | the story's `id`, as returned by search_news |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description goes further by disclosing that the response includes every source for the story, and that story IDs and public URLs are permanent, making IDs safe to store. These are genuinely useful behavioral details beyond the annotations, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first front-loads the action and scope, the second adds valuable durability information. Every sentence earns its place, and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup tool with no output schema, the definition is complete enough. It specifies what is returned (a story plus all sources), how the id is obtained (schema reference to search_news), and why the id is safe to persist. An agent has what it needs to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single id parameter thoroughly, including its source ('as returned by search_news'), type, and length constraints. With 100% schema description coverage, the description does not need to add parameter-level detail, and it does not add any beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Fetch'), a specific resource ('a single story'), and the key qualifier ('by its id'). It also clarifies that the result includes every source that reported it, which distinguishes this from sibling tools like search_news or list_sources that return different shapes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended usage is clear: fetch a single story when you have its id. The schema's hint that the id comes from search_news reinforces the workflow, and the mention of permanent IDs adds useful guidance about storing and reusing IDs. However, there is no explicit comparison to alternatives or a direct statement of when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sourcesMonitored sourcesARead-onlyInspect
The publications, registries and integrity bodies carbon.fyi monitors. Useful for judging coverage — a topic absent from the archive may simply not be covered by these sources.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=false. The description adds interpretative context about the closed-world nature of the list and its role in coverage judgments, which goes beyond the structured annotation fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentence description with no wasted words. The first sentence states what the tool returns, and the second sentence explains its practical value. Highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only metadata listing tool, the description fully covers what is returned and how to interpret it. No output schema exists, but the simplicity of the tool does not demand more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100%, so there is no parameter information lacking. The description is not required to explain parameters that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('the publications, registries and integrity bodies carbon.fyi monitors') and the operation is implied by the tool name 'list'. It is clearly differentiated from siblings, which deal with prices, summaries, history, stories, and news search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete use case: 'Useful for judging coverage — a topic absent from the archive may simply not be covered by these sources.' This gives clear context for when to use the tool, though it does not explicitly mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_newsSearch VCM newsARead-onlyInspect
Search carbon.fyi's curated voluntary carbon market story archive. Each story is an editorially clustered summary of one development, written from one or more original reports, and always carries the original source name and URL. Supply at least one filter; results are newest-first. Use get_market_summary first if you do not know what tags or date range to ask for.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | restrict to one story category | |
| limit | No | max stories to return (default 20, ceiling 50) | |
| query | No | case-insensitive text match against headline and summary, e.g. 'Verra' or 'biochar' | |
| since | No | only stories first published on or after this UTC day |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false. The description adds useful behavioral context: stories are editorially clustered summaries, always carry source name and URL, results are newest-first, and at least one filter is required. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences pack the core purpose, data characteristics, ordering behavior, filter requirement, and a routing hint with no fillter. The most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with well-documented parameters and no output schema, the description covers the key facts an agent needs: what is searched, what a story contains, the filter requirement, ordering, and how to discover tags/date ranges. It does not enumerate all returned fields, but enough is conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema carries most parameter meaning. The description adds the cross-parameter rule that at least one filter must be supplied, which is valuable, but it does not add individual parameter details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific action and resource: searching carbon.fyi's curated voluntary carbon market story archive. It explains what a story is, but it does not explicitly distinguish this search tool from sibling get_story or list_sources, so it is clear without direct sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: supply at least one filter, expect newest-first results, and call get_market_summary first if tags or date range are unknown. It names an alternative for discovery but does not fully spell out when not to use this tool versus every sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- First observed
get_carbon_prices - First observed
get_market_summary - First observed
get_price_history - First observed
get_story - First observed
list_sources - First observed
search_news
Related MCP Connectors
Verified CO2e for any transaction, activity, flight, shipment or CBAM import. 200+ countries.
- ArbitronOAuthapp.arbitron
Funding rates, cross-venue spreads and listings for crypto perpetual futures. Read-only.
Read energypod.io's weekly energy digests, episode summaries, and transcripts. Read-only.
Crypto prices, Polymarket CLOB, AI research & web rendering. x402 Solana payments.
Related MCP Servers
- AlicenseAqualityAmaintenanceRead-only, source-linked news intelligence for AI agents: search The Neural Ledger's stories, retrieve story details with citations and revision history, and resolve related entities and assets. It is an evidence layer, not a trading or execution service.82MIT
- AlicenseNot gradedqualityDmaintenanceReal-time curated knowledge API for AI agents. Updated Mon/Wed/Fri from 31 sources covering AI/tech, startups, alternative markets, and emerging markets — no scraping or storage required.1MIT
- AlicenseAqualityAmaintenanceConnects real-world news to Polymarket prediction markets by matching headlines to relevant markets with live odds. Read-only by default with optional trading capabilities.5MIT
- AlicenseNot gradedqualityBmaintenanceRead-only XRP Ledger analytics — signed snapshots, AMM pools, token volume, whale activity, NFT tracking. Proof-annotated. Public beta 2026-09.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.