Forecast Accuracy & Track Record MCP
Provides Google News search results by query, returning titles, sources, dates, and links to see what was reported at the time.
Provides Internet Archive Wayback Machine snapshots of any site, including timestamps, URLs, and content hashes, to see what a page said and when it changed.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Forecast Accuracy & Track Record MCPShow this week's US economic releases with forecast vs actual"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-fastAuth: 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) |
| 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) |
| Economic calendar events across 45+ countries with actual, forecast and previous values and importance. | |
Stock Earnings Estimates & Results |
| US stock EPS estimates vs reported results: beat or miss by quarter and how often a company beats. | |
Kalshi Scraper |
| Kalshi prediction markets: tickers, categories, prices and volume. | |
Polymarket Leaderboard Scraper |
| Polymarket leaderboard rankings with profit/loss, volume, positions and recent trades, by time range and category. | |
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 |
| 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.jsOptional 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
ecommerce-search-rankings-mcp: E-commerce search results and rankings
ecommerce-sales-mcp: E-commerce sales signals
sports-betting-stats-mcp: Sports betting odds and stats
sports-odds-mcp: Kambi sportsbook odds
etsy-sales-mcp: Etsy search and shop sales
ats-jobs-mcp: ATS job postings (Greenhouse, Lever, Ashby, SmartRecruiters)
gov-tenders-mcp: Government tenders and grants
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 toolsdata_xplorer--google-news-scraper-fastGoogle News ScraperARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| topics | No | Select one or more predefined Google News topics to scrape. | |
| keywords | No | List 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"') | |
| timeframe | No | Time 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 |
| topicUrls | No | Provide 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 | |
| decodeUrls | No | If 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. | |
| maxArticles | No | Maximum number of news to extract per keyword or topic (0 = no limit) | |
| extractImages | No | Fetches 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_language | No | Region and language for news search | US:en |
| proxyConfiguration | No | Configure Apify Proxy. Residential proxies recommended for best results. | |
| extractDescriptions | No | If enabled, extracts the meta description from each article page. Note: This will significantly slow down the scraping process. |
TDQS
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.
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.
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.
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.
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.
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 & ReliableARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | How many search results to fetch per API call. The actor caps this between 1 and 100. | |
| startUrls | No | Paste any Kalshi market or search result URLs that you want the actor to visit. | |
| targetUrl | No | Paste one Kalshi search or market URL for a quick run. | |
| maxResults | No | Limit how many market listings the actor should collect before stopping. | |
| targetUrls | No | Optional alias for startUrls. Paste more Kalshi search or market URLs here. | |
| searchQueries | No | List the keywords you want to search for. | |
| proxyConfiguration | No | By default it uses Apify Residential proxies. |
TDQS
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.
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.
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.
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.
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.
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 ScraperARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Market 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 |
| timeRange | No | Leaderboard 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 |
| maxResults | No | Maximum number of traders to scrape from the leaderboard (1-1000). | |
| includeActivity | No | Fetch the last 10 trades for each trader. Adds trade details like market title, outcome, side (buy/sell), size, price, and timestamp. | |
| leaderboardType | No | Rank traders by profit/loss (PNL) or trading volume (VOL). Options: PNL = Profit / Loss; VOL = Volume. | PNL |
| includePositions | No | Fetch current open positions for each trader. Adds position details like market title, outcome, size, average price, current value, and PnL. |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| toDate | No | End date for retrieving the economic calendar in 'YYYY-MM-DD' format. If not provided, only the current day's economic calendar will be retrieved. | |
| country | No | A 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: "" | |
| fromDate | No | Start date for retrieving the economic calendar in 'YYYY-MM-DD' format. If not provided, only the current day's economic calendar will be retrieved. | |
| timeZone | No | Time zone in GMT +/- hours:minutes format (e.g., 'GMT +2:00'). If not provided, the local GMT time zone will be used. | |
| countries | No | Select one or more countries/regions. Combined with "Country" above. Leave empty (and Country blank) to include all countries. | |
| categories | No | List of categories to which the events will be related to. If empty or null, all available categories will be taken into consideration. Example: "" | |
| timeFilter | No | Determines 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 |
| importances | No | List 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
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.
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.
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.
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.
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.
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)ARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ISO3 country code, EA, or USA. Required for most score/lookup/compare calls. Example: "CAN" | |
| mode | Yes | text = hand it a sentence ("The IMF expects Canada's economy to grow 1.8% in 2027"). lookup/score/compare use structured fields. | text |
| point | No | Numeric claimed value for lookup mode (string so decimals stay exact). Example: "1.8" | |
| issuer | No | Organization name as it appears on its releases/filings (e.g. Salesforce Inc). Both records are returned: dated promises (newswires) and numeric guidance (EDGAR). | |
| series | No | Generated from rules.yaml — every series the ledger resolves. Example: "RGDP_GROWTH_A" | |
| source | No | imf_weo | oecd_eo | fed_sep | spf | ecb_spf | pbo, or an issuer name; optional in text mode Example: "oecd_eo" | |
| claim_id | No | Ledger claim id for verify mode. | |
| band_kind | No | For Fed SEP score mode: central_tendency or range. | |
| claim_text | No | Free-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_at | No | When the claim was published (YYYY-MM-DD), for lookup/verify. Example: "2026-06-01" | |
| target_period | No | Target period as YYYY, YYYYQn, or YYYY-MM when looking up a specific claim. Example: "2027" | |
| horizon_bucket | No | Optional horizon bucket filter for score mode. |
TDQS
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.
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.
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.
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.
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.
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.
ryanclinton--wayback-machine-searchWayback Machine Scraper - Track Website Changes Over TimeARead-onlyInspect
Wayback Machine Scraper - Track Website Changes Over Time. Search the Internet Archive's Wayback Machine for historical snapshots of any website. Retrieve archived page metadata -- including timestamps, URLs, MIME types, HTTP status codes, and content hashes -- for up to 10,000 snapshots per run.
When to use: Use when you need archived Wayback Machine snapshots of a URL or domain over time, e.g. to see what a page said on a past date.
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 "ryanclinton/wayback-machine-search" 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/ryanclinton/wayback-machine-search
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL or domain to search for snapshots (e.g., "example.com" or "https://example.com/page"). Ignored if you supply a list under URLs (batch). Console UI prefills "apify.com" as a placeholder; programmatic API runs only use this field if you explicitly send it. Example: "apify.com" | |
| urls | No | Optional: query multiple URLs in one run for comparative competitive intelligence. Each URL gets its own snapshots, change detection, and metrics in the output. The single URL above is added if both fields are populated. | |
| query | No | Filter the output to only snapshots whose change content matches a keyword. Searches changeSummary categories (e.g. "pricing"), keyDiffs, added/removed text, and full content. Pure post-filter — no extra API calls. Example: query "pricing" returns only the snapshots where pricing changed. | |
| dateTo | No | End date filter (YYYYMMDD or YYYY format, e.g., "20231231" or "2023") | |
| monitor | No | Turn on for scheduled monitoring runs. One flag enables: change detection, only-changed snapshots, change intelligence + diffs, alerts on moderate-or-major changes, timeline output, insights record, AND delta-since-last-run state tracking. Compose with a Use Case preset for industry-specific defaults. | |
| useCase | No | Pick a preset to auto-configure filters, change detection, and output mode for a common workflow. Set to "custom" to use the raw inputs below. SEO = monthly buckets + 200-only + change-only. Compliance = closest-date evidence with content. Competitor = monthly buckets + only-changed + alerts on moderate-or-major. Forensics = full-domain crawl, no collapsing. Options: custom = Custom (use the inputs below as-is); seo = SEO history audit; compliance = Legal / compliance evidence; competitor = Com… | custom |
| dateFrom | No | Start date filter (YYYYMMDD or YYYY format, e.g., "20200101" or "2020") | |
| matchType | No | How to match the URL. "exact" = exact URL only, "prefix" = URL prefix match, "host" = all pages on same host, "domain" = all subdomains too Options: exact = Exact URL; prefix = URL Prefix; host = Same Host; domain = All Subdomains. | exact |
| collapseBy | No | Collapse duplicate snapshots. "digest" = unique content only, "timestamp:6" = one per month, "timestamp:8" = one per day, "timestamp:10" = one per hour Options: = No collapsing; digest = Unique content only (digest); timestamp:6 = One per month; timestamp:8 = One per day; timestamp:10 = One per hour. | |
| fastLatest | No | Return the most recent snapshots faster by skipping older index segments. Only useful for domains with hundreds of thousands of snapshots — combine with Max Results to fetch the latest N quickly. | |
| maxResults | No | Maximum number of snapshots to return per URL (max 10,000 in a single CDX query — enable Auto-paginate to exceed). Ignored when Target Date is set (always returns one snapshot). | |
| mimeFilter | No | MIME type filter (e.g., "text/html" for HTML pages only) | |
| outputMode | No | What records to emit. "Snapshots" = one row per snapshot (default). "Timeline" = one row per stable version (consecutive identical-digest snapshots collapsed). "Report" = a markdown report in the key-value store + version records + a summary record. Options: snapshots = Snapshots (one row per archive); timeline = Timeline (one row per distinct version); report = Report (markdown + versions). | snapshots |
| targetDate | No | Return the single snapshot closest to this date — useful for legal/compliance evidence ("what did the page say on 2020-06-15?"). Accepts YYYY-MM-DD or YYYYMMDD. When set, overrides Max Results and returns one snapshot with distanceFromTargetDays. | |
| onlyChanged | No | Filter results to only the snapshots where the page actually changed (plus the first "initial" baseline). Requires Detect Changes. Turns 1,000 raw snapshots into ~50 actionable rows. | |
| useJsRender | No | Enable Playwright rendering for archived pages that return as empty React/Next/Gatsby SPA shells (notably HubSpot, late-2024+ Atlassian). Off (default) uses a cheap HTTP fetch only — fastest and cheapest, but returns empty shells for modern SPA pricing pages. Pair with `forceJsRender` to control whether every snapshot is rendered or only the ones that look like SPA shells. | |
| autoPaginate | No | When the CDX API hits its 10,000-row cap, automatically chunk the query year-by-year and merge the results — letting you pull full multi-year domain histories in one run. Costs more proxy time; only enable when you need the complete archive. | |
| statusFilter | No | HTTP status code filter (e.g., "200" for successful pages only) | |
| detectChanges | No | Compare each snapshot to the previous one and flag rows where the content hash or HTTP status changed. Adds a "changed" boolean and "changeType" string to every result. Free — uses metadata you already have. | |
| forceJsRender | No | If `useJsRender` is on, render every snapshot via Playwright instead of falling back from a cheap HTTP fetch. Use when you already know your URLs are SPA shells and don't want to pay for the cheap-fetch attempt. Ignored when `useJsRender` is off. | |
| generateReport | No | Always write a REPORT.md to the run's key-value store, even when Output Mode is "snapshots". Useful when you want both raw rows and a human-readable summary. | |
| includeContent | No | Fetch and include the archived page text content. Required for the diff/keyDiffs fields under Change Intelligence. Slow — fetches each snapshot individually with polite rate limiting. | |
| includeInsights | No | Push a single "insights" record at the top of the dataset with key events, risk signals, business signals, typed events, coverage, cross-URL comparison, and chartData. Turn off if you only want raw rows. | |
| maxContentFetch | No | Maximum number of pages to fetch content for (only used if Include Page Content is enabled) | |
| monitorStateKey | No | Optional override for the key-value-store key used by Delta mode. Auto-derived from the sorted URL list if not set; provide a stable string here if you want to share state across separate runs that have different URL inputs (e.g. weekly batch + ad-hoc spot-checks). | |
| alertOnMagnitude | No | Emit a single "alert" record at the top of the dataset when changes meet the threshold. Pairs well with scheduling: connect a webhook → Slack/email when the alert record fires. Requires Change Intelligence to compute magnitude. Options: none = No alert (default); any = Any change; moderate = Moderate or major change; major = Major change only. | none |
| deltaSinceLastRun | No | Turn on for stateful monitoring without external storage. The actor remembers the events and snapshot URLs returned in the previous run (in a named key-value store) and filters this run to only the events / snapshots that are NEW since then. First run for a given URL set returns everything as new. | |
| changeIntelligence | No | Augment every changed row with a changeSummary (magnitude: minor/moderate/major, categories: pricing/legal/product/layout/etc., keyDiffs: human-readable change phrases) and a structured diff (added/removed text, change score). Best results require Include Page Content so the actor can diff actual text. | |
| proxyConfiguration | No | Proxy used to reach the Wayback Machine CDX API and archived pages. Defaults to AUTO — Apify's smart router uses datacenter IPs where they work and falls back to residential where blocked. Switch to RESIDENTIAL explicitly if you see persistent 403s. Example: {"useApifyProxy":true} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/destructiveHint annotations it discloses that the call starts an Apify Actor run through the hosted MCP gateway, requires the user's own APIFY_TOKEN, bills to the user's Apify account, and emits both dataset rows and run/dataset IDs for paging. That is exactly the operational context an agent needs before invoking a metered remote Actor.
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 front-loaded with purpose, then cleanly sectioned into When to use / Returns / Behavior / Docs, so an agent can stop reading early. The opening sentence largely restates the title and the 'Read-only' sentence duplicates the annotation, which is minor waste but not disruptive.
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 29-parameter Actor wrapper with no output schema, the description supplies the return shape, run/dataset IDs, auth and billing model, and a documentation URL. It does not explain how the presets (useCase, monitor) interact or what the dataset columns beyond metadata look like, but the schema covers configuration and the missing gap is not blocking.
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% with 29 well-documented parameters, so the schema already carries the semantics and a baseline 3 applies. The description adds only a single concrete link to parameters (the 10,000-snapshot / maxResults ceiling) and otherwise leaves enum and preset behavior to the schema, which is acceptable.
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 and resource — searching the Internet Archive's Wayback Machine for historical snapshots of a URL or domain — and states the scope of returned metadata (timestamps, URLs, MIME types, status codes, content hashes) plus the 10,000-snapshot cap. An agent can distinguish this from the sibling scrapers (Kalshi, Polymarket, stock earnings) 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit 'When to use' clause with a concrete scenario ("see what a page said on a past date"). It does not name a when-not condition or a comparison to an alternative tool, but the sibling list contains no overlapping historical-archive tool, so the guidance is sufficient for routing.
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 ActualARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | summary = 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 |
| maxRows | No | Cap on rows returned across all tickers. Controls total cost. | |
| symbols | No | US tickers to look up, e.g. NVDA, TSLA, AAPL. Maximum 200 per run. | |
| minBeatRate | No | Keep only companies that beat expectations in at least this share of their reported quarters. 75 returns serial beaters. 0 = no filter. | |
| includeAnnual | No | Return full year estimates alongside the quarterly ones. | |
| onlyRaisedEstimates | No | Keep 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
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.
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.
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.
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.
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.
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.
7 tool updates
v0.2.0- First observed
data_xplorer--google-news-scraper-fast - First observed
fatihtahta--kalshi-scraper - First observed
parsebird--polymarket-scraper - First observed
pintostudio--economic-calendar-data-investing-com - First observed
publicrecords--calibration-ledger - First observed
ryanclinton--wayback-machine-search - First observed
scrapemint--stock-earnings-estimates
TDQS
Scored across 7 tools
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.
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.
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.
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
Related MCP Connectors
Institutional-grade financial data: earnings, estimates, guidance, stock prices, macro indicators.
Prediction market data and crowd-sourced probability forecasts
Derived prediction-market flow, price changes, trader research and news. 11 read-only tools.
Forecast future events and scan prediction-market edges.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables 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 npm1Apache 2.0
- FlicenseNot gradedqualityAmaintenanceEnables 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.-
- FlicenseNot gradedqualityAmaintenanceEnables 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.-
- FlicenseNot gradedqualityAmaintenanceEnables 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.-