Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for ferric-fred-mcp

Pod holds 15 of 15 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to ferric-fred-mcp.

Most discussed

GeoFRED output leaves FRED's raw meta envelope unwrapped (inconsistent with macro tools)

Found by the agent-driven MCP audit (ADR-0028, harness in #54).

Symptom

get_regional_data / get_series_data return the values two levels deep under FRED's raw wrapper:

{ "meta": { "data": { "2026-05-01": [ {code, region, series_id, value}, ... ],
            "frequency": ..., "region": ..., "seasonality": ..., "title": ..., "units": ... } } }

The tool description says "Returns the values keyed by date," but the macro tools cleanly unwrap FRED's envelopes (e.g. `{count, series

Read the thread · 2026-07-14 · closed · 2 comments

Uniform local validation for empty required inputs (tag_names, search text)

Found by the agent-driven MCP audit (ADR-0028, harness in #54). NIT / polish.

Symptom

Empty required arrays/strings fall through to FRED's terser messages:

  • get_tags_series { tag_names: [] } / get_related_tags { tag_names: [] } → "The variable tag_names must be set."
  • search_series { text: "" } → "Variable search_text is not set."

Meanwhile the realtime_* and start_time/end_time pairings are caught locally with polished -32602 messages, so the input-validation experience is un

Read the thread · 2026-07-14 · closed · 1 comment

get_release_tables silently ignores release_id when element_id belongs to another release

Found by the agent-driven MCP audit (ADR-0028, harness in #54).

Symptom

{ release_id: 10, element_id: 12886 } (release 10 = CPI; element 12886 belongs to release 53 = GDP) succeeds and returns release 53's GDP subtree — the release_id: 10 is silently ignored. A well-formed element for release 10 (36721) returns release-10 data, so element_id fully overrides release_id. A consumer asking for CPI gets GDP with no warning.

Suggested fix

Either validate that the returned el

Read the thread · 2026-07-14 · closed · 1 comment

tool score: get_release

Behavior 3/5 Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, openWorldHint, and destructiveHint, so the safety profile is known. The description adds that the tool returns name, press-release flag, and link, which is useful but not critical. No additional behavioral traits (e.g., rate limits) are disclosed, but the tool is simple and the annotations cover most needs.

Agents need t

Read the thread · 2026-07-06 · closed · 1 comment

GeoFRED / Maps API support (regional & geographic data)

What

FRED's Maps API (formerly GeoFRED) is an entirely separate surface that the client does not cover: regional/geographic economic data and the shape files to map it (shapes, series-group metadata, series-data, and regional-data). Different base URL (https://api.stlouisfed.org/geofred/) from the core FRED API.

Why it's core

It unlocks a whole data class — economic indicators by state/county/MSA/country, with geometry for choropleth mapping — that the current client can't

Read the thread · 2026-07-05 · closed · 1 comment

get_release_tables: output observation_date is an undocumented display string ('Jun 2026'), asymmetric with YYYY-MM-DD inputs

Found by the agent-driven MCP audit (ADR-0028).

Symptom

With include_observation_values: true, series rows carry "observation_date": "Jun 2026" — FRED's human display label — whereas every input date param (including the tool's own observation_date) requires YYYY-MM-DD. A consumer can't feed the returned date back into any date param and can't parse it deterministically, and neither the tool description nor the outputSchema says the field is a display string distinct from the ISO

Read the thread · 2026-07-19 · closed · 0 comments

get_regional_data: county/MSA cross-sections overflow (262k chars) with no limit or paging

Found by the agent-driven MCP audit (ADR-0028).

Symptom

get_regional_data at region_type: "county" returns a ~3000-region cross-section — the audit saw a 262,685-character result that blew past the token cap and spilled to a file. Unlike the paginated series/tag tools, get_regional_data (and the library regional_data_request) expose no limit or offset, and the tool description gives no size warning.

Audit input: `{series_group: "882", region_type: "county", date: "2022-01-

Read the thread · 2026-07-19 · closed · 0 comments

get_observations: MCP 'aggregation' description says 'ignored' but the handler rejects it (and CLI silently ignores)

Found by the agent-driven MCP audit (ADR-0028); confirmed against source.

Symptom — self-contradiction on the MCP surface

The aggregation param description says it is ignored without frequency:

  • crates/ferric-fred-mcp/src/main.rs:99/// `frequency`. Requires `frequency`; on its own it is ignored.

…but the handler hard-rejects it:

  • crates/ferric-fred-mcp/src/main.rs:567 — returns `-32602 aggregation requires frequency (FRED only aggregates when a target frequency is g

Read the thread · 2026-07-19 · closed · 0 comments

Most recent

Make the L2 'test the class, not the instance' stance explicit — adopt or deliberately decline proptest (ADR-0029 G2)

Follow-up G2 surfaced by ADR-0029 (the cross-repo shared-disciplines index).

Context

ADR-0029's L2 row records ferric-fred as PARTIAL / gap on the shared "test the class, not the instance; pin every stated assumption" discipline (canonical owner: rustrolabe ADR-0107 — universals → property tests, finite enums → exhaustive iteration, type invariants → compile_fail doctests). Today ferric-fred uses layered

Read the thread · 2026-07-16 · closed · 0 comments

get_observations: validate/document the aggregation & frequency constraints

Found by the agent-driven MCP audit (ADR-0028, harness in #54). Two related rough edges on get_observations, both inconsistent with the excellent local pairing validation the server already does for realtime_* and start_time/end_time.

(a) `aggregation` without `frequency` is a silent no-op

{ series_id: "GNPCA", aggregation: "sum" } returns the untransformed values with no warning. The schema says aggregation is "used together with a frequency." Since the server already enforces

Read the thread · 2026-07-14 · closed · 0 comments

GeoFRED tools surface a raw HTTP 500 for a bad or non-regional series id

Found by the agent-driven MCP audit (ADR-0028, harness in #54) and reproduced by hand (deterministic).

Symptom

get_series_data / get_series_group return an opaque FRED API error (HTTP 500): Internal Server Error for both a nonexistent id and a valid-but-non-regional series:

get_series_group { series_id: "GNPCA" }   -> HTTP 500 Internal Server Error
get_series_data  { series_id: "NOTAREAL" } -> HTTP 500 Internal Server Error

GNPCA is a perfectly valid macro series — it's

Read the thread · 2026-07-14 · closed · 0 comments

get_release_tables duplicates descendants: non-root nodes appear in both roots and their parent's children

Found by the agent-driven MCP audit (ADR-0028, harness in #54) and reproduced by hand.

Symptom

For a multi-level subtree request, roots contains every descendant flattened, while children is also populated — so non-root nodes are reachable via two paths and a consumer walking the tree double-counts series.

Repro — get_release_tables { release_id: 53, element_id: 12886 } yields:

id:12887 parent:12886 children=[12888,12889]
id:12888 parent:12887 children=[]   <- also in roots,

[Read the thread](https://github.com/agpalindrome/ferric-fred/issues/55) · 2026-07-14 · closed · 0 comments

### Slim the workspace README into a concise landing page (fix version staleness, surface Glama score)

## Problem
The workspace `README.md` (246 lines) is both **stale** and **oversized**:

- **Stale versions.** It states *"`0.3.1` of all three crates is published"* — but the crates are now `ferric-fred` 0.3.2 / `ferric-fred-cli` 0.3.2 / `ferric-fred-mcp` **0.3.3**, and they are **no longer in lockstep** (the mcp crate is ahead after the tool-annotations release). Any hardcoded version is wrong the moment a single crate bumps.
- **Oversized / duplicative.** The bulk is a ~40-line CLI example gall

[Read the thread](https://github.com/agpalindrome/ferric-fred/issues/31) · 2026-07-06 · closed · 0 comments

### Add MCP tool output schemas (feature-gated JsonSchema on library return types)

## Motivation
Glama's per-tool quality scores repeatedly note *"no output schema"* as the main completeness gap (after the annotations gap, now closed in #29). Output schemas let MCP clients/agents know the **exact shape of a tool's return value** without guessing — a genuine best practice, not just a score bump.

This is the deliberate follow-up to #29 (tool annotations).

## Background: what rmcp supports
`rmcp 2.1.0`'s `#[tool]` macro can attach an `outputSchema` two ways:
1. **Auto-derive** 

[Read the thread](https://github.com/agpalindrome/ferric-fred/issues/30) · 2026-07-06 · closed · 0 comments

### release/tables: fold in observation values (include_observation_values)

## What

`release/tables` currently ships **structure-only** — the table tree without the actual numbers. [ADR-0017](docs/adr/0017-release-tables-tree.md) explicitly deferred the observation-value dimension:

> **Scope boundary — defer observation values.** … `include_observation_values` / `observation_date` (and the per-element value fields) …

## Proposed approach

- Add `include_observation_values` (bool) and `observation_date` (date) to `ReleaseTablesRequest`.
- Extend `ReleaseTableElement` 

[Read the thread](https://github.com/agpalindrome/ferric-fred/issues/9) · 2026-07-05 · closed · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/ojhermann-org/ferric-fred/issues).