Skip to main content
Glama
GeminiGeorge22

Forecast Accuracy & Track Record MCP

Forecast Accuracy & Track Record MCP: forecasts vs actuals, prediction markets, archived reports

Check a forecast against what actually happened, as MCP tools: institutional forecast track records, economic releases with forecast vs actual, earnings estimates vs results, prediction-market prices and leaderboards, plus archived web pages and news for what was said at the time. One hosted endpoint, one Actor per job.

Hosted remote MCP server (Streamable HTTP) on Apify's MCP gateway. Client config plus a small open-source stdio proxy server. No Actor source.

Disclosure: entries marked "(maintained by us)" are Actors I maintain on Apify Store (publisher publicrecords). Every other Actor is independent, made by its own publisher and picked on merit (Store usage, ratings and recent maintenance). This repo is not affiliated with those publishers or with the sites the Actors read.

MCP endpoint

https://mcp.apify.com/?tools=publicrecords/calibration-ledger,pintostudio/economic-calendar-data-investing-com,scrapemint/stock-earnings-estimates,fatihtahta/kalshi-scraper,parsebird/polymarket-scraper,ryanclinton/wayback-machine-search,data_xplorer/google-news-scraper-fast

Auth: sign in with Apify (OAuth) when your client prompts, or send an Apify API token as a Bearer token. Runs are billed on your own Apify account under each Actor's own Store pricing; see each Store page.

Related MCP server: octagon-mcp-server

Tools

Actor

Store page

MCP tool

What it returns

Calibration Ledger (maintained by us)

publicrecords/calibration-ledger

publicrecords--calibration-ledger

Given a claim from an organization (IMF, OECD, Fed/FOMC, SPF, ECB SPF or a listed issuer), returns its forecast track record: error distribution, bias, band coverage and worst misses with source links, or an honest 'no coverage'.

Economic Calendar (Investing.com)

pintostudio/economic-calendar-data-investing-com

pintostudio--economic-calendar-data-investing-com

Economic calendar events across 45+ countries with actual, forecast and previous values and importance.

Stock Earnings Estimates & Results

scrapemint/stock-earnings-estimates

scrapemint--stock-earnings-estimates

US stock EPS estimates vs reported results: beat or miss by quarter and how often a company beats.

Kalshi Scraper

fatihtahta/kalshi-scraper

fatihtahta--kalshi-scraper

Kalshi prediction markets: tickers, categories, prices and volume.

Polymarket Leaderboard Scraper

parsebird/polymarket-scraper

parsebird--polymarket-scraper

Polymarket leaderboard rankings with profit/loss, volume, positions and recent trades, by time range and category.

Wayback Machine Search

ryanclinton/wayback-machine-search

ryanclinton--wayback-machine-search

Internet Archive snapshots of any site: timestamps, URLs and content hashes, to see what a page said and when it changed.

Google News Scraper

data_xplorer/google-news-scraper-fast

data_xplorer--google-news-scraper-fast

Google News results by query: titles, sources, dates and links, to see what was reported at the time.

The Apify gateway also exposes helper tools to read run results (get-actor-run, get-dataset-items). Want fewer tools? Drop any Actor from the tools= list.

Who it's for

  • Analysts and journalists: how accurate has this institution's forecast been before?

  • Macro and markets: did the release beat or miss consensus?

  • Researchers: what did prediction markets price before the outcome?

  • Fact-checkers: what did a page or the news say on a given date?

Example prompts

  • The IMF projects <country> GDP growth of <x>% next year. How accurate have its past projections been?

  • Show this week's economic releases for the US with forecast vs actual.

  • How often has <ticker> beaten its EPS estimate over the last 8 quarters?

  • What did <url> look like in the Wayback Machine around <date>?

Cursor / Claude Code / any remote-MCP client

{
  "mcpServers": {
    "forecast-accuracy": {
      "url": "https://mcp.apify.com/?tools=publicrecords/calibration-ledger,pintostudio/economic-calendar-data-investing-com,scrapemint/stock-earnings-estimates,fatihtahta/kalshi-scraper,parsebird/polymarket-scraper,ryanclinton/wayback-machine-search,data_xplorer/google-news-scraper-fast"
    }
  }
}

Claude Code:

claude mcp add --transport http forecast-accuracy "https://mcp.apify.com/?tools=publicrecords/calibration-ledger,pintostudio/economic-calendar-data-investing-com,scrapemint/stock-earnings-estimates,fatihtahta/kalshi-scraper,parsebird/polymarket-scraper,ryanclinton/wayback-machine-search,data_xplorer/google-news-scraper-fast"

Claude Desktop (local bridge)

{
  "mcpServers": {
    "forecast-accuracy": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server", "--actors", "publicrecords/calibration-ledger,pintostudio/economic-calendar-data-investing-com,scrapemint/stock-earnings-estimates,fatihtahta/kalshi-scraper,parsebird/polymarket-scraper,ryanclinton/wayback-machine-search,data_xplorer/google-news-scraper-fast"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}

Local stdio server (open source)

This repo also ships a small MCP server in src/ for clients that only run local stdio servers. It answers initialize and tools/list locally from tools.json, which is generated from each Actor's public input schema and checked for drift in CI and weekly, so any client or directory can inspect the tools with no token. tools/call is forwarded to the hosted Apify MCP endpoint above with your own APIFY_TOKEN; without a token a call returns a clear error instead of running anything. The token is only sent in the Authorization header and is never logged.

{
  "mcpServers": {
    "forecast-accuracy": {
      "command": "npx",
      "args": ["-y", "github:GeminiGeorge22/forecast-accuracy-mcp"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}

Or from a clone:

git clone https://github.com/GeminiGeorge22/forecast-accuracy-mcp.git
cd forecast-accuracy-mcp && npm install
APIFY_TOKEN=YOUR_APIFY_TOKEN node src/server.js

Optional env: APIFY_ACTORS (comma-separated subset of the Actors above) and APIFY_MCP_URL (full endpoint override).

Tests run against an in-memory mock server, with no network and no token: npm test. Requires Node.js 18+.

See also

Registry

Official MCP Registry name: io.github.GeminiGeorge22/forecast-accuracy-mcp

License

MIT, for this documentation, config and the proxy server code in src/. Each Actor belongs to its publisher.

Available Tools

7 tools
data_xplorer--google-news-scraper-fastGoogle News ScraperA
Read-only
Inspect

Google News Scraper. Scrape Google News in real time, including images and descriptions. This tool extracts complete structured data: high-resolution visuals, full, titles, sources, dates, and direct URLs.

When to use: Use when you need recent Google News articles for a query (title, source, date, URL, image).

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "data_xplorer/google-news-scraper-fast" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/data_xplorer/google-news-scraper-fast

NameRequiredDescriptionDefault
topicsNoSelect one or more predefined Google News topics to scrape.
keywordsNoList of keywords to search for. You can use Google News search operators: - Use '-' to exclude words (e.g. 'bitcoin -ethereum') - Use 'site:' to filter by specific website (e.g. 'bitcoin site:cnn.com') - Use 'OR' to search for multiple terms (e.g. 'bitcoin OR ethereum') - Use quotes for exact match (e.g. '"bitcoin price"')
timeframeNoTime period for the news search. Note: this filter applies mainly to keyword searches. Topic pages return their own curated results. Options: 1h = Last hour; 1d = Last day; 7d = Last week; 30d = Last month; 1y = Last year; all = Anytime.1h
topicUrlsNoProvide custom Google News topic or section URLs to scrape. Useful for niche topics not in the predefined list. Example: https://news.google.com/topics/CAAqJggKIiBDQkFTRWdvSUwyMHZNRGx1YlY4U0FtVnVHZ0pWVXlnQVAB
decodeUrlsNoIf enabled, decodes Google News URLs to get the original article URLs. Note: This will significantly slow down the scraping process as each URL needs to be decoded individually.
maxArticlesNoMaximum number of news to extract per keyword or topic (0 = no limit)
extractImagesNoFetches the og:image from each article page when no image is available (mainly for RSS/topic results). When this option is not explicitly set, images are extracted by default. Toggle OFF to skip image extraction and speed up scraping.
region_languageNoRegion and language for news searchUS:en
proxyConfigurationNoConfigure Apify Proxy. Residential proxies recommended for best results.
extractDescriptionsNoIf enabled, extracts the meta description from each article page. Note: This will significantly slow down the scraping process.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, so the safety profile is covered; the description adds genuinely non-obvious context: it starts one run of the Apify Actor through mcp.apify.com using your own APIFY_TOKEN and your Apify account, and returns run/dataset IDs for paging. The repeated "Read-only" claim is consistent with annotations. It stops short of disclosing run cost or concurrency behavior, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and organized into labeled sections (When to use, Returns, Behavior, Docs), which makes scanning easy. There is minor redundancy and a typo ("full, titles") from the opening list being echoed by the fields enumeration, but no sentence is wasted overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A 10-parameter tool with no output schema is well served by the explicit "Returns" paragraph describing one-row-per-result JSON plus run/dataset IDs for paging. The main gap is that all parameters are optional and the description never states what a zero-argument call does or which of the three query inputs is required in practice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (topics, keywords, timeframe, decodeUrls, maxArticles, proxyConfiguration, etc.) is already documented in the schema. The description adds no parameter-level guidance such as which of topics/keywords/topicUrls to prefer or what happens when all are left empty. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ("Scrape Google News") and then enumerates exactly what fields come back (titles, sources, dates, URLs, images). An agent can tell this apart from the stock/market/archive siblings without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"When to use: Use when you need recent Google News articles for a query" gives a clear positive trigger tied to the returned fields. There are no exclusions or alternatives named, but no sibling here overlaps the news-scraping domain, so the omission is low-risk.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fatihtahta--kalshi-scraperKalshi Scraper | Fast & ReliableA
Read-only
Inspect

Kalshi Scraper | Fast & Reliable. Get live prediction market data from Kalshi.com with tickers, categories, prices, and volume metrics. Fast, reliable, and structured for analysis. Ideal for traders, researchers, and data teams.

When to use: Use when you need current Kalshi prediction-market prices, volumes and categories.

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "fatihtahta/kalshi-scraper" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/fatihtahta/kalshi-scraper

NameRequiredDescriptionDefault
pageSizeNoHow many search results to fetch per API call. The actor caps this between 1 and 100.
startUrlsNoPaste any Kalshi market or search result URLs that you want the actor to visit.
targetUrlNoPaste one Kalshi search or market URL for a quick run.
maxResultsNoLimit how many market listings the actor should collect before stopping.
targetUrlsNoOptional alias for startUrls. Paste more Kalshi search or market URLs here.
searchQueriesNoList the keywords you want to search for.
proxyConfigurationNoBy default it uses Apify Residential proxies.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/openWorld/destructive=false), the description discloses that each call triggers one Apify Actor run via the hosted MCP gateway, requires the caller's own APIFY_TOKEN, and consumes the caller's Apify account — useful operational context an agent could not infer from annotations. It restates read-only, which the annotations already cover, and says nothing about credit cost or run duration/rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled sections (When to use / Returns / Behavior / Docs) are well organized and front-loaded. However, the entire first block — the title restated plus 'Fast, reliable, and structured for analysis. Ideal for traders, researchers, and data teams' — is promotional filler that adds no selecting or invoking value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Returns are explained (one dataset row per result plus run/dataset IDs for paging), and with no output schema that is necessary and done well. But for a 7-parameter, zero-required tool with redundant URL inputs and a nested proxy object, the description leaves the caller without any input-shaping guidance, which is the main thing missing before invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The description adds no guidance on the parameter set at all, which is a real gap here: startUrls, targetUrl and targetUrls (self-described as 'optional alias for startUrls') overlap, and nothing tells the agent which to prefer or whether searchQueries can be combined with URLs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: fetch live prediction-market data (tickers, categories, prices, volume) from Kalshi.com. That is clearly distinguishable from most siblings, though the opening line is padded with marketing ('Fast & Reliable', 'Ideal for traders, researchers, and data teams') and it never explicitly contrasts itself with the Polymarket scraper sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A dedicated 'When to use' line gives a concrete condition: when you need current Kalshi prices, volumes and categories. It does not state when NOT to use it, nor does it point at alternatives among the sibling scrapers, so it stops short of the full routing guidance a 5 requires.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsebird--polymarket-scraperPolymarket Leaderboard ScraperA
Read-only
Inspect

Polymarket Leaderboard Scraper. Scrape Polymarket leaderboard rankings with full trader profiles. Extract wallet addresses, usernames, profit/loss, volume, positions, recent trades, bios, and social links. Filter by time range, category, and ranking type.

When to use: Use when you need Polymarket leaderboard rankings and trader profiles (profit/loss, volume, positions).

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "parsebird/polymarket-scraper" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/parsebird/polymarket-scraper

NameRequiredDescriptionDefault
categoryNoMarket category to filter the leaderboard. OVERALL includes all categories. Options: OVERALL = All Categories; POLITICS = Politics; SPORTS = Sports; CRYPTO = Crypto; FINANCE = Finance; CULTURE = Culture; MENTIONS = Mentions; WEATHER = Weather; ECONOMICS = Economics; TECH = Tech.OVERALL
timeRangeNoLeaderboard time period. DAY = today, WEEK = this week, MONTH = this month, ALL = all time. Options: DAY = Today; WEEK = This Week; MONTH = This Month; ALL = All Time.MONTH
maxResultsNoMaximum number of traders to scrape from the leaderboard (1-1000).
includeActivityNoFetch the last 10 trades for each trader. Adds trade details like market title, outcome, side (buy/sell), size, price, and timestamp.
leaderboardTypeNoRank traders by profit/loss (PNL) or trading volume (VOL). Options: PNL = Profit / Loss; VOL = Volume.PNL
includePositionsNoFetch current open positions for each trader. Adds position details like market title, outcome, size, average price, current value, and PnL.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, openWorld, non-idempotent, non-destructive), the description discloses that it starts one Apify Actor run via mcp.apify.com, requires the caller's own APIFY_TOKEN, consumes the caller's Apify account quota, and only reads public web data. This auth, billing, and run-lifecycle context is exactly the kind of behavior the annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled structure (purpose, When to use, Returns, Behavior, Docs) front-loads the key information and each block carries distinct content. The opening sentence slightly duplicates the title, and the field enumeration is long, but nothing is genuinely redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by explaining the return shape (dataset rows as JSON, plus run and dataset IDs for paging) and the run-based execution model. It stops short of mentioning cost implications of large maxResults or failure behavior, but an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with enums, defaults, and per-value explanations already present for category, timeRange, leaderboardType, and both boolean toggles. The description only restates the filtering axes ('time range, category, and ranking type') and adds no format or interaction details beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Scrape Polymarket leaderboard rankings with full trader profiles') and enumerates the extracted fields (wallet addresses, P/L, volume, positions, trades, bios, social links). It is clearly distinct from the listed siblings, though it never names an alternative (e.g. the Kalshi scraper) to sharpen that boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

An explicit 'When to use' line gives the triggering condition: needing Polymarket leaderboard rankings and trader profiles with P/L, volume, and positions. There are no exclusion rules or named alternatives, so an agent knows when to call it but not when to prefer something else.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pintostudio--economic-calendar-data-investing-comEconomic Calendar Data (Investing.com)A
Read-only
Inspect

Economic Calendar Data (Investing.com). Extract structured economic calendar events (actual, forecast, previous, importance) from Investing.com across 45+ countries. Built for algorithmic trading systems, AI trading agents, RAG pipelines, and financial research. Filter by country, importance, category, and date range.

When to use: Use when you need scheduled macro releases with actual vs forecast vs previous values (Investing.com economic calendar) by country, importance and date range.

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "pintostudio/economic-calendar-data-investing-com" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/pintostudio/economic-calendar-data-investing-com

NameRequiredDescriptionDefault
toDateNoEnd date for retrieving the economic calendar in 'YYYY-MM-DD' format. If not provided, only the current day's economic calendar will be retrieved.
countryNoA single country to retrieve economic calendar events for (e.g. United States, Euro Zone). To select several countries, use "Countries (multiple)" below. Leave both blank to include all countries. Example: ""
fromDateNoStart date for retrieving the economic calendar in 'YYYY-MM-DD' format. If not provided, only the current day's economic calendar will be retrieved.
timeZoneNoTime zone in GMT +/- hours:minutes format (e.g., 'GMT +2:00'). If not provided, the local GMT time zone will be used.
countriesNoSelect one or more countries/regions. Combined with "Country" above. Leave empty (and Country blank) to include all countries.
categoriesNoList of categories to which the events will be related to. If empty or null, all available categories will be taken into consideration. Example: ""
timeFilterNoDetermines how time is displayed: 'time_only' shows the event time, 'time_remain' shows remaining time until event. Default is 'time_only'. Options: time_only = Time Only; time_remain = Time Remaining.time_only
importancesNoList of importance ratings for events. Can contain 'high', 'medium', and 'low'. If empty or null, all importance ratings including holidays will be considered. Options: high = High; medium = Medium; low = Low; = All.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, but the description adds meaningful context beyond them: it starts a run of a specific Apify Actor through the hosted MCP gateway, requires the caller's own APIFY_TOKEN, and consumes the caller's Apify account — cost/auth implications an agent would otherwise not know. It does not disclose latency, run failure modes, or rate limits, so it stops short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (When to use / Returns / Behavior / Docs) make it easy to scan and the critical scoping info is front-loaded. The 'Built for algorithmic trading systems, AI trading agents, RAG pipelines, and financial research' sentence is pure marketing filler, and the title is repeated verbatim at the start.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by explaining the return shape (one row per result) and the run/dataset IDs used for paging a full dataset. For a credential-dependent, run-based scraper it covers the essentials, though it omits what happens on run failure or whether results are truncated on the first page.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries parameter meaning and the baseline is 3. The description's line 'Filter by country, importance, category, and date range' only maps loosely onto four of the eight parameters and adds nothing about interactions (e.g. country vs countries merging, empty-string defaults) beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Extract structured economic calendar events') and enumerates the payload fields (actual, forecast, previous, importance) plus coverage (45+ countries), so an agent knows exactly what it gets. It does not explicitly contrast itself with any sibling, though the sibling list is dominated by unrelated scrapers, so confusion risk is low.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a labeled 'When to use' section, but its content largely restates the purpose ('scheduled macro releases with actual vs forecast vs previous values ... by country, importance and date range') rather than stating a genuine decision rule. No when-not-to-use, no alternative tool named, and no guidance on paging the dataset instead of re-running.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publicrecords--calibration-ledgerCalibration Ledger — trust a forecast, with evidence (beta)A
Read-only
Inspect

Calibration Ledger — trust a forecast, with evidence (beta). Given a claim from an organization (IMF, OECD, Fed/FOMC, SPF, ECB SPF, or a listed issuer), returns that organization's track record: error distribution, intervals, bias, band coverage, worst misses with source links — or honest 'no coverage' (free). Organizations only, never people.

When to use: Use when someone cites a forecast from an institution (IMF, OECD, Fed/FOMC, SPF, ECB SPF or a listed issuer) and you need to know how accurate that institution's past forecasts were. Returns error distribution, bias and worst misses with source links, or an explicit no-coverage answer.

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "publicrecords/calibration-ledger" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/publicrecords/calibration-ledger

NameRequiredDescriptionDefault
geoNoISO3 country code, EA, or USA. Required for most score/lookup/compare calls. Example: "CAN"
modeYestext = hand it a sentence ("The IMF expects Canada's economy to grow 1.8% in 2027"). lookup/score/compare use structured fields.text
pointNoNumeric claimed value for lookup mode (string so decimals stay exact). Example: "1.8"
issuerNoOrganization name as it appears on its releases/filings (e.g. Salesforce Inc). Both records are returned: dated promises (newswires) and numeric guidance (EDGAR).
seriesNoGenerated from rules.yaml — every series the ledger resolves. Example: "RGDP_GROWTH_A"
sourceNoimf_weo | oecd_eo | fed_sep | spf | ecb_spf | pbo, or an issuer name; optional in text mode Example: "oecd_eo"
claim_idNoLedger claim id for verify mode.
band_kindNoFor Fed SEP score mode: central_tendency or range.
claim_textNoFree-text claim for text mode (e.g. "The IMF expects Canada's economy to grow 1.8% in 2027"). Example: "The IMF expects Canada's economy to grow 1.8% in 2027."
published_atNoWhen the claim was published (YYYY-MM-DD), for lookup/verify. Example: "2026-06-01"
target_periodNoTarget period as YYYY, YYYYQn, or YYYY-MM when looking up a specific claim. Example: "2027"
horizon_bucketNoOptional horizon bucket filter for score mode.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing that each call starts a run of the Apify Actor 'publicrecords/calibration-ledger' through mcp.apify.com using the caller's own APIFY_TOKEN and Apify account (a real cost/quota implication). It confirms the operation only reads public web data and mutates nothing on the source site, and explains the return shape plus run/dataset IDs for paging — none of which the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence restates the title verbatim, and the 'When to use' and 'Returns' paragraphs repeat the error distribution/bias/worst misses list already given in the first paragraph. The auth/Apify and read-only sentences earn their place, but the definition is roughly twice the length it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, seven-mode tool with no output schema, the description covers what is returned (dataset rows as structured JSON, plus run/dataset IDs for paging), the auth requirement, the billing/free distinction, and the organizations-only scope. Weakness is mode selection: the seven modes and their required fields are only implicit, so an agent must read the schema carefully to know which fields each mode needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the mode enum itself documents text vs lookup/score/compare, so the description adds no parameter-level meaning beyond a restatement of the text-mode example. Baseline 3 is appropriate when the schema already carries all twelve parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: given a claim from a named institution, it returns that organization's track record (error distribution, intervals, bias, band coverage, worst misses with source links). The scope boundary 'Organizations only, never people' and the concrete source list (IMF, OECD, Fed/FOMC, SPF, ECB SPF, listed issuer) make the resource unambiguous; no sibling tool overlaps this function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'When to use' block gives an explicit trigger: someone cites an institutional forecast and you need to know how accurate that institution has been. It also states a when-not (people are out of scope) and that 'no coverage' is an acceptable honest answer. It does not route between the seven modes, but that guidance lives in the schema's mode description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapemint--stock-earnings-estimatesStock Earnings Estimates & Results: EPS Forecast vs ActualA
Read-only
Inspect

Stock Earnings Estimates & Results: EPS Forecast vs Actual. Keyless earnings data for any US stock from NASDAQ: what analysts expect the company to earn next quarter, what it actually earned in past quarters, the percentage it beat or missed by, how often it has beaten, and whether analysts raised or cut their forecast in the last four weeks.

When to use: Use when you need analyst EPS estimates vs reported earnings for a US stock, beat/miss history and recent estimate revisions.

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "scrapemint/stock-earnings-estimates" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/scrapemint/stock-earnings-estimates

NameRequiredDescriptionDefault
modeNosummary = one row per ticker: what analysts expect next quarter, what the company delivered last quarter, how often it has beaten, and whether estimates are being raised or cut. surprises = one row per reported quarter. forecasts = one row per forecast period. Options: summary = Summary (one row per ticker); surprises = Surprises (reported quarters); forecasts = Forecasts (forward estimates).summary
maxRowsNoCap on rows returned across all tickers. Controls total cost.
symbolsNoUS tickers to look up, e.g. NVDA, TSLA, AAPL. Maximum 200 per run.
minBeatRateNoKeep only companies that beat expectations in at least this share of their reported quarters. 75 returns serial beaters. 0 = no filter.
includeAnnualNoReturn full year estimates alongside the quarterly ones.
onlyRaisedEstimatesNoKeep only tickers where more analysts raised their forecast than cut it in the last four weeks. Estimate revision direction is the forward looking half of this data.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is carried by structured data. The description adds real value beyond that: it discloses the APIFY_TOKEN auth requirement, that the run executes against the caller's Apify account (billing implication), that maxRows drives cost, and that run/dataset IDs enable paging. The 'Read-only' sentence largely restates the annotation, but the auth, account, and cost disclosures justify above-baseline credit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then clearly labelled When to use / Returns / Behavior / Docs sections, with no filler clauses. The title and tagline are duplicated at the start and the read-only remark is redundant with annotations, costing it the top band.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six optional parameters and no output schema, the description still covers everything an agent needs: what the rows contain, that results are per-row JSON with dataset IDs for paging, the auth/billing model, and the cost lever. Nothing required for a correct first call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so mode, symbols, maxRows, minBeatRate, includeAnnual and onlyRaisedEstimates are already fully documented in the schema. The description only echoes the concepts (beat frequency, raised/cut forecasts) in prose without adding syntax, units, or edge-case behavior, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource — analyst EPS estimates vs reported earnings for any US stock, sourced from NASDAQ — and enumerates the concrete content (next-quarter consensus, past actuals, beat/miss percentage, beat frequency, four-week estimate revisions). No sibling tool covers this data, and an agent can tell exactly what it gets without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

An explicit 'When to use' line states the triggering need (analyst EPS estimates vs reported earnings, beat/miss history, recent revisions). It gives clear positive guidance but names no exclusions or alternative tools, so it stops short of full routing guidance.

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.

  1. 7 tool updatesv0.2.0
    • First observeddata_xplorer--google-news-scraper-fast
    • First observedfatihtahta--kalshi-scraper
    • First observedparsebird--polymarket-scraper
    • First observedpintostudio--economic-calendar-data-investing-com
    • First observedpublicrecords--calibration-ledger
    • First observedryanclinton--wayback-machine-search
    • First observedscrapemint--stock-earnings-estimates

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation4/5

Each tool targets a distinct data source (institutional calibration, economic calendar, EPS estimates, Kalshi, Polymarket, Wayback, Google News), so misselection risk is low. Minor overlap: Kalshi and Polymarket both return prediction-market pricing, and Wayback/Google News could be confused as generic 'search news/history' utilities in a forecast-accuracy context.

Naming Consistency4/5

All seven tools follow a uniform 'vendor--actor-slug' convention with descriptive kebab-case suffixes, which is predictable and scannable. It deviates from the verb_noun ideal and the vendor prefixes add noise, but consistency is high.

Tool Count5/5

Seven tools is well-scoped for a curated research bundle, and each contributes a distinct angle on forecast accuracy or its corroborating evidence. No filler or duplicated capabilities.

Completeness3/5

Core coverage exists (institutional track records, analyst estimate vs actual, prediction-market odds, historical snapshots for verification), but the surface is thin on lifecycle operations like scoring a custom forecast or comparing multiple institutions head-to-head. Wayback and Google News feel like auxiliary gap-fillers rather than completing the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables clients to search, read, and verify sealed forecasts and public-record cards, inspect resolution calendars, engine strands, sensor alerts, and wire headlines, and check whether stories are independent events or echoes. All access is read-only and requires no key, account, or dependencies.
    9 npm
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables users to ask natural-language questions and receive structured, source-backed answers across public filings, earnings transcripts, company financials, stock and crypto market data, news, and prediction markets research.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables natural-language research and structured, source-backed answers across SEC filings, earnings transcripts, company financials, stock and crypto market data, and prediction markets news and research.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables users to ask natural-language questions and receive structured, source-backed answers across public filings, earnings transcripts, company financials, stock and crypto market data, and prediction market news and research.
    -