# com.greencalculus/api (remote · mcp.greencalculus.com)

Sourced carbon emission factors + audit-traced calculations an AI can cite.

- Trust score: 61/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-20

## Components

- remote · `mcp.greencalculus.com`: 61/100 (this document), [markdown](https://verifymcp.io/servers/com-greencalculus-api/mcp.md), [page](https://verifymcp.io/servers/com-greencalculus-api/mcp)

## Channel facts

- Endpoint: `https://mcp.greencalculus.com`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-20.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 11 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS check failed: the endpoint is reachable over plaintext HTTP.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 66/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2003 tokens (~182/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 96% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-greencalculus-api https://mcp.greencalculus.com/
```

### Codex

```toml
[mcp_servers.com-greencalculus-api]
url = "https://mcp.greencalculus.com/"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-greencalculus-api": {
      "type": "remote",
      "url": "https://mcp.greencalculus.com/",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-greencalculus-api --url https://mcp.greencalculus.com/ --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-greencalculus-api:
    url: "https://mcp.greencalculus.com/"
```

### Other

```json
{
  "mcpServers": {
    "com-greencalculus-api": {
      "type": "http",
      "url": "https://mcp.greencalculus.com/"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-20 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-18 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-17 (score 59, 0)

- [security] Tool “resolve_factor” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 138 → 182
- [functional] Schema quality: good → excellent
- [functional] New tool “explain_absence”
- [cosmetic] “resolve_factor” reworded the description of “description”

### 2026-08-16 (score 59, 0)

- [security] Tool “lookup_factor” rewrote its description, which is the text the model reads

### 2026-08-14 (score 59, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-13 (score 58, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-08-12 (score 58)

First indexed and scored.

## MCP tools (11)

### `lookup_factor` (~142 tokens)

Look up a single greenhouse-gas emission factor by its canonical key. Returns the value plus an audit envelope: provenance (publisher, exact source cell, retrieval date, LICENCE and whether it may be redistributed, with the attribution the licence requires) and verification (whether the per-gas components sum to the headline, the GWP set, and the source note stating what the publisher did NOT provide). If the key does not exist you get candidate keys back rather than a dead end. Use search_factors first if you do not know the key.

Input parameters:

- `key` (string, required): Canonical factor key, e.g. "grid.deu.electricity.location_based".

### `search_factors` (~115 tokens)

Find emission-factor keys by section, key prefix, or free text. Returns matching keys, names, and sections (values are redacted here — call lookup_factor for the value).

Input parameters:

- `key_prefix` (string): Restrict to keys starting with this prefix.
- `limit` (number): Max results (default 20).
- `query` (string): Free-text search over factor names/keys.
- `section` (string): Restrict to a section, e.g. "grid", "fuels", "freight".

### `calculate_activity` (~140 tokens)

Turn activity data into greenhouse-gas emissions: emissions = activity × factor. Give an amount + unit and a factor key; the unit engine converts to the factor basis (MWh→kWh, tonne→kg, gallon→litre, mile→km) and returns the emissions with the working, the GHG Protocol scope, and the source. Use search_factors / lookup_factor to find the factor key.

Input parameters:

- `activity` (object, required): { "value": <number>, "unit": "<unit e.g. kWh, MWh, litres, tonne, km>" }.
- `factor_key` (string, required): Canonical emission-factor key.

### `calculate_embodied` (~142 tokens)

Whole-life embodied carbon for materials, per EN 15978. Give a material key + quantity (+ optional boundary A1-A3 / A1-A4 / A1-A5 / A1-C); it assembles the declared lifecycle modules (A1-A3, B, C1-C4, D) into stages, totals the boundary, reports module D separately, and flags any missing stage as not-assessed (never zero). Find material keys via search_factors (section "materials").

Input parameters:

- `materials` (array, required): Each: { material_key, quantity:{value,unit e.g. m3/kg/tonne/m2}, boundary? }.

### `calculate_pcaf` (~117 tokens)

Compute PCAF Part A financed emissions for a portfolio. Returns each holding's attribution factor and financed emissions, the portfolio total, the outstanding-weighted data-quality score, and the audit trail (formula + PCAF source).

Input parameters:

- `asset_class` (string)
- `holdings` (array, required): Each: { outstanding_amount, denominator:{type:"evic"|"equity_plus_debt", value}, company_emissions:{value,unit?} OR estimate_from_spend:{amount_usd, sector_key}, data_quality_score? }.

### `calculate_electricity` (~173 tokens)

GHG Protocol Scope 2 for purchased electricity, both methods. Always returns location-based (grid-average) emissions; also returns market-based when you supply a contractual supplier_factor (e.g. a green tariff / REC = 0) or a market_factor_key (residual mix). Find grid keys via search_factors (section "grid").

Input parameters:

- `consumption` (object, required): { "value": <number>, "unit": "kWh|MWh|GWh" }.
- `location_factor_key` (string, required): Grid-average factor key, e.g. grid.deu.electricity.location_based.
- `market_factor_key` (string): Optional: residual-mix / supplier grid factor key.
- `supplier_factor` (object): Optional contractual factor { value, unit } (wins over market_factor_key).

### `calculate_freight` (~143 tokens)

Freight & logistics emissions (Scope 3 Cat 4 & 9), GLEC tonne-km method: emissions = tonnes × km × factor. Find mode factors via search_factors (section "freight" or "freight_detailed"), e.g. freight.road_hgv.tonne_km.

Input parameters:

- `distance` (object, required): { "value": <number>, "unit": "km|mi|nmi" }.
- `factor_key` (string, required): Per-tonne-km freight factor key.
- `mass` (object, required): { "value": <number>, "unit": "tonne|kg|lb" }.

### `calculate_spend` (~120 tokens)

Spend-based (EEIO) Scope 3 screening: emissions = spend × economic-intensity factor. Spend must be in the factor's own currency/year (no FX). Find sector factors via search_factors (section "spend_based"), e.g. spend_based.us.naics6.541511.custom_computer_programming.

Input parameters:

- `factor_key` (string, required): Spend-based (EEIO) sector factor key.
- `spend` (object, required): { "value": <number>, "currency": "USD|GBP|EUR|SGD" }.

### `calculate_business_travel` (~113 tokens)

Business travel emissions (Scope 3 Cat 6), distance method: emissions = km × passengers × factor. Air factors come in with_rf / without_rf (radiative forcing) variants. Find factors via search_factors (section "business_travel").

Input parameters:

- `distance` (object, required): { "value": <number>, "unit": "km|mi" }.
- `factor_key` (string, required): Per-passenger-km travel factor key.
- `passengers` (number): Optional, defaults to 1.

### `resolve_factor` (~463 tokens)

Find the best emission-factor key(s) for a plain-language description — the hardest step is picking the right key out of ~16,000. Returns ranked candidates; feed the chosen key to a calculate_* tool or lookup_factor. Prefer this over guessing a key. PUT THE COUNTRY IN THE DESCRIPTION. Geography is read from the description text itself, not from a separate field — "diesel per litre" and "diesel per litre France" resolve differently, and omitting the country will quietly return a factor from somewhere else marked "geo_match":"proxy". ACT ON THE LABEL. Every candidate carries label: "accept" or "review", plus "why". "accept" means confidence >= 0.85 and no demotion applied — right about nine times in ten. "review" means the answer may be usable but something is off (low confidence, only one term matched, a proxy country, or a gate demoted it); confirm it before adopting the number rather than using it silently. Roughly half of CORRECT answers are also flagged "review" — that is the intended trade, so treat "review" as "check this", not "discard this". A MISS MAY EXPLAIN ITSELF. When nothing matches, or the only matches are from the wrong country, the response may carry an "absence" object saying WHY. classification "structural" means no publisher issues this anywhere — STOP, do not retry with reworded queries and do not substitute a different country without saying so. "not_yet_sourced" means a publisher exists and we have not ingested it (the publisher is named). "refused" means we found the data and declined it, with the reason. "coupled" means this reads empty only because a related family is empty. Use explain_absence to ask the same question directly.

Input parameters:

- `description` (string, required): What you need a factor for, INCLUDING the country if it matters, e.g. "UK grid electricity", "diesel per litre France", "hotel stay Japan". Geography is parsed from this string.
- `limit` (number): Optional, default 5.
- `section` (string): Optional section filter, e.g. "fuels", "grid", "freight".

### `explain_absence` (~280 tokens)

Ask why a factor is NOT in the corpus. The reasoned counterpart to coverage: where a country reports zero rows for an inventory family, this says whether that is the world's limit or our backlog. Five classifications: "structural" (no publisher issues this anywhere — stop looking, and do not silently substitute another country), "not_yet_sourced" (a publisher exists and is named; it is our backlog), "refused" (we found it and declined — the reason is stated), "held_not_counted" (we DO hold it — see we_hold for the key), "coupled" (empty only because another family is empty). Each record names the publisher checked, the route tried, a confidence and a review date, and reports stale:true once past review. These are authored judgements about what the world publishes, not values derived from our data. Call this before concluding that a gap is permanent, and before telling a user to look elsewhere.

Input parameters:

- `classification` (string): Filter: structural | not_yet_sourced | refused | held_not_counted | coupled.
- `country` (string): ISO-3166 alpha-3 code, e.g. "can".
- `family` (string): Inventory family, e.g. "water", "wtt", "travel", "spend", "heat".

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-greencalculus-api/mcp#diagnostics

## Score history

- 2026-08-20: 61
- 2026-08-19: 60
- 2026-08-18: 60
- 2026-08-17: 59
- 2026-08-16: 59
- 2026-08-15: 59
- 2026-08-14: 59
- 2026-08-13: 58
- 2026-08-12: 58

## Links

- Remote endpoint: https://mcp.greencalculus.com/
- Authorisation metadata: https://mcp.greencalculus.com/.well-known/oauth-protected-resource
- Website: https://greencalculus.com/developers
- Changelog RSS feed: https://verifymcp.io/servers/com-greencalculus-api/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-greencalculus-api/mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-greencalculus-api/mcp
