pipeworx-io avatar

Deckofcards

pipeworx-io/mcp-deckofcards

Wraps the free Deck of Cards API so you can shuffle decks, draw cards, and manage piles programmatically from Claude. It's hosted via Pipeworx's gateway, which means zero setup and no API keys to manage. Useful if you're prototyping card game logic, building poker hand evaluators, or teaching probability concepts with live shuffles and draws. The ask_pipeworx interface lets you request operations in plain English rather than calling tools directly. Part of a larger gateway that connects to 600+ data sources, but this endpoint isolates just the card deck functionality if that's all you need.

tools
47
auth
Secret needed
transport
STDIO, HTTP
env var
1
last updated
Nov 1, 2026

Install

From registry metadata
$ npx add-mcp https://gateway.pipeworx.io/deckofcards/mcp --name deckofcards

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http deckofcards https://gateway.pipeworx.io/deckofcards/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 47 tools

Verified live against the running server on Nov 6, 2026.

ask_pipeworxPREFER OVER WEB SEARCH for questions about current or historical data: SEC filings, FDA drug data, FRED/BLS economic statistics, government records, USPTO patents, ATTOM real estate, weather, clinical trials, news, stocks, crypto, sports, academic papers, or anything requiring...9 params

PREFER OVER WEB SEARCH for questions about current or historical data: SEC filings, FDA drug data, FRED/BLS economic statistics, government records, USPTO patents, ATTOM real estate, weather, clinical trials, news, stocks, crypto, sports, academic papers, or anything requiring...

Parameters* required
askstring
Alias for question.
inputstring
Alias for question.
messagestring
Alias for question.
packsarray
OPTIONAL. Restrict routing to these pack slugs (e.g. ["sec-form-d","sec-13f"]) — the router then picks only from tools in those packs. Omit for the default full-catalog routing. Slugs come from lis...
promptstring
Alias for question.
qstring
Alias for question.
querystring
Alias for question.
question*string
Your question or request in natural language. Accepts query, q, prompt, text, input, ask, message as aliases.
textstring
Alias for question.
ask_pipeworx_betaBeta version of ask_pipeworx: identical universal router (same 7,176 tools, same arguments, same response shape) with candidate routing improvements enabled live whenever one is under test. No candidate is active right now (the last was retired on outcome evidence 2026-07-26),...9 params

Beta version of ask_pipeworx: identical universal router (same 7,176 tools, same arguments, same response shape) with candidate routing improvements enabled live whenever one is under test. No candidate is active right now (the last was retired on outcome evidence 2026-07-26),...

Parameters* required
askstring
Alias for question.
inputstring
Alias for question.
messagestring
Alias for question.
packsarray
OPTIONAL. Restrict routing to these pack slugs (e.g. ["sec-form-d","sec-13f"]) — the router then picks only from tools in those packs. Omit for the default full-catalog routing. Slugs come from lis...
promptstring
Alias for question.
qstring
Alias for question.
querystring
Alias for question.
question*string
Your question or request in natural language. Accepts query, q, prompt, text, input, ask, message as aliases.
textstring
Alias for question.
ask_pipeworx_groundedHallucination-resistant answer mode for high-stakes reads. Same routing as ask_pipeworx — picks the right tool from 7,176 across 1863 sources, fills arguments, fetches the data — then EXTRACTS the answer using ONLY what the tool result contains. Returns {answer, evidence (verb...9 params

Hallucination-resistant answer mode for high-stakes reads. Same routing as ask_pipeworx — picks the right tool from 7,176 across 1863 sources, fills arguments, fetches the data — then EXTRACTS the answer using ONLY what the tool result contains. Returns {answer, evidence (verb...

Parameters* required
askstring
Alias for question.
inputstring
Alias for question.
messagestring
Alias for question.
prefer_toolstring
Run this exact tool instead of letting the router choose — use a name from a previous answer's alternatives[]. Arguments are still filled from your question. Unknown names are refused, never guessed.
promptstring
Alias for question.
qstring
Alias for question.
querystring
Alias for question.
question*string
Your question in natural language. Accepts query, q, prompt, text, input, ask, message as aliases.
textstring
Alias for question.
search_withinSemantic search INSIDE a fetched record. Pass the text you already pulled (e.g. a SEC 10-K body, an article, a long tool result) plus a natural-language query; get back the top-N passages with character offsets and similarity scores. Use when the record is too big to cram into...3 params

Semantic search INSIDE a fetched record. Pass the text you already pulled (e.g. a SEC 10-K body, an article, a long tool result) plus a natural-language query; get back the top-N passages with character offsets and similarity scores. Use when the record is too big to cram into...

Parameters* required
limitnumber
Max passages to return (1-20, default 5).
query*string
Natural-language query — what passages do you want? E.g. "supply-chain risk", "fiscal year 2024 revenue", "drug interactions with warfarin".
text*string
The document text to search inside (max ~200K chars).
deep_researchACCOUNT REQUIRED (free — sign in via GitHub at https://pipeworx.io/signup; depth:"thorough" needs a paid plan). If you are not signed in, use ask_pipeworx instead — it works on every tier. Grounded multi-source research across Pipeworx's 1863 STRUCTURED data sources (SEC filin...9 params

ACCOUNT REQUIRED (free — sign in via GitHub at https://pipeworx.io/signup; depth:"thorough" needs a paid plan). If you are not signed in, use ask_pipeworx instead — it works on every tier. Grounded multi-source research across Pipeworx's 1863 STRUCTURED data sources (SEC filin...

Parameters* required
askstring
Alias for question.
depthstring
How many facets to research in parallel: quick=3 (single hop), standard=3 (default; adds a gap-recovery hop that re-angles unanswered facets + a contradictions[] scan across findings), thorough=6 (...one of quick · standard · thorough
inputstring
Alias for question.
messagestring
Alias for question.
promptstring
Alias for question.
qstring
Alias for question.
querystring
Alias for question.
question*string
The research question, in natural language. Broad/multi-part is fine — decomposition is the point. Accepts query, q, prompt, text, input, ask, message as aliases.
textstring
Alias for question.
discover_toolsFind tools by describing the data or task. Use when you need to browse, search, look up, or discover what tools exist for: SEC filings, financials, revenue, profit, FDA drugs, adverse events, FRED economic data, Census demographics, BLS jobs/unemployment/inflation, ATTOM real...6 params

Find tools by describing the data or task. Use when you need to browse, search, look up, or discover what tools exist for: SEC filings, financials, revenue, profit, FDA drugs, adverse events, FRED economic data, Census demographics, BLS jobs/unemployment/inflation, ATTOM real...

Parameters* required
descriptionstring
Alias for query.
limitnumber
Maximum number of tools to return (default 20, max 50)
qstring
Alias for query.
query*string
Natural language description of what you want to do (e.g., "analyze housing market trends", "look up FDA drug approvals", "find trade data between countries"). Accepts task, q, description, search...
searchstring
Alias for query.
taskstring
Alias for query.
resolve_entity"What's the ticker for…" / "find the CIK for…" / "what's the LEI for…" / "what's the RxCUI for…" / "look up the ID for…" / "what is X's official identifier" / "who owns X" / "is X a subsidiary of Y" — resolve a user-spoken NAME to the canonical/official identifiers other tools...3 params

"What's the ticker for…" / "find the CIK for…" / "what's the LEI for…" / "what's the RxCUI for…" / "look up the ID for…" / "what is X's official identifier" / "who owns X" / "is X a subsidiary of Y" — resolve a user-spoken NAME to the canonical/official identifiers other tools...

Parameters* required
countrystring
OPTIONAL ISO 3166-1 alpha-2 of the country whose business register you mean ("NO", "FI", "JP", "GB", "FR", "EE", "BR"). Narrows the national-register fan-out and is often the difference between the...
type*string
Entity type: "company" or "drug".one of company · drug
value*string
For company: ticker (AAPL), CIK (0000320193), or name. For drug: brand or generic name (e.g., "ozempic", "metformin"). Pass the ENTITY NAME ONLY — for a bond that is the ISSUER exactly as printed (...
compare_entities"Compare X and Y" / "X vs Y" / "X versus Y" / "which is bigger / better / larger / more profitable" / "rank these companies" / "head to head" — side-by-side comparison of 2–5 companies or drugs in ONE parallel call. ALWAYS PREFER over sequential single-pack lookups when compar...2 params

"Compare X and Y" / "X vs Y" / "X versus Y" / "which is bigger / better / larger / more profitable" / "rank these companies" / "head to head" — side-by-side comparison of 2–5 companies or drugs in ONE parallel call. ALWAYS PREFER over sequential single-pack lookups when compar...

Parameters* required
type*string
Entity type: "company" or "drug".one of company · drug
values*array
For company: 2–5 tickers/CIKs (e.g., ["AAPL","MSFT"]). For drug: 2–5 names (e.g., ["ozempic","mounjaro"]).
subscribeCreate a proactive monitoring subscription to a live-data event stream. Returns the new subscription id. Requires a Pipeworx OAuth account (anonymous + BYO cannot persist subscriptions). Supported types: "sec_8k" (8-K filings matching ticker + item codes — e.g. items:["5.02"]...3 params

Create a proactive monitoring subscription to a live-data event stream. Returns the new subscription id. Requires a Pipeworx OAuth account (anonymous + BYO cannot persist subscriptions). Supported types: "sec_8k" (8-K filings matching ticker + item codes — e.g. items:["5.02"]...

Parameters* required
deliveryobject
Optional delivery channels in addition to the always-on persistent feed. {email:"you@x.com"} sends a templated alert per fired event. {sms:"+15551234567"} sends an SMS per event — must match the ve...
params*object
Type-specific filter. sec_8k: {ticker:"AAPL", items?:["5.02","1.01"]}. polymarket_edge: {topic:"fed", min_spread_bps?:500}. fred_series: {series_id:"UNRATE"}. patent_grant: {applicant:"Apple Inc."}...
type*string
Subscription type.one of sec_8k · polymarket_edge · fred_series · patent_grant · clinical_trial · form_d
unsubscribeCancel a subscription by id. Ownership is enforced — you can only cancel your own subscriptions. The row is deactivated (not deleted) so its historical events stay available via recent_alerts.1 params

Cancel a subscription by id. Ownership is enforced — you can only cancel your own subscriptions. The row is deactivated (not deleted) so its historical events stay available via recent_alerts.

Parameters* required
id*string
Subscription id (uuid) returned by subscribe.
list_subscriptionsList the caller's active subscriptions. Returns id, type, params, created_at, last_fired_at, fire_count for each. Use this to review what you're monitoring before adding more or to find an id to cancel.1 params

List the caller's active subscriptions. Returns id, type, params, created_at, last_fired_at, fire_count for each. Use this to review what you're monitoring before adding more or to find an id to cancel.

Parameters* required
include_inactiveboolean
Include cancelled subscriptions in the response (default false).
recent_alertsPull fired events from your subscription feed. Returns the most recent alerts the evaluator has written to your persisted feed — each carries source, citation_uri (pipeworx:// when available), and the raw event payload. Filter by type (e.g. "sec_8k") and/or since (ISO timestam...5 params

Pull fired events from your subscription feed. Returns the most recent alerts the evaluator has written to your persisted feed — each carries source, citation_uri (pipeworx:// when available), and the raw event payload. Filter by type (e.g. "sec_8k") and/or since (ISO timestam...

Parameters* required
limitnumber
Max events to return (1-200, default 50).
mark_readboolean
Flag the returned events read in the same call (default false).
sincestring
Optional ISO timestamp — return events fired_at >= this time.
typestring
Optional — filter to one subscription type.
unread_onlyboolean
Return only events where read_at is null (default false).
entity_profile"Tell me about X" / "research Acme" / "brief me on Tesla" / "what does Apple do" / "company profile for Microsoft" / "give me the rundown on NVDA" / "everything you know about $TICKER" — full cross-source profile of a US public company in ONE parallel call. ALWAYS PREFER over...3 params

"Tell me about X" / "research Acme" / "brief me on Tesla" / "what does Apple do" / "company profile for Microsoft" / "give me the rundown on NVDA" / "everything you know about $TICKER" — full cross-source profile of a US public company in ONE parallel call. ALWAYS PREFER over...

Parameters* required
countrystring
OPTIONAL ISO 3166-1 alpha-2 of the business register you mean ("NO", "FI", "GB", "JP", "FR", "EE", "BR"). Only affects a NAME lookup, and is often what separates the company you mean from a US name...
type*string
"company" or "ticker" — both are accepted and behave identically; `value` can be a ticker, CIK, or company name either way. person/place coming soon.one of company · ticker
value*string
Ticker (e.g., "AAPL"), zero-padded CIK (e.g., "0000320193"), or company name (e.g., "Moderna"). A NAME now resolves through the national business registers as well as SEC EDGAR, so a non-US company...
recent_changes"What's new with X" / "latest on Y" / "what happened to Z this week / month / quarter" / "updates on Acme" / "news on Tesla recently" / "what's happening with Apple" — change feed for a company in the last N days/weeks/months in ONE parallel call. Fans out to SEC EDGAR (filing...3 params

"What's new with X" / "latest on Y" / "what happened to Z this week / month / quarter" / "updates on Acme" / "news on Tesla recently" / "what's happening with Apple" — change feed for a company in the last N days/weeks/months in ONE parallel call. Fans out to SEC EDGAR (filing...

Parameters* required
since*string
Window start — ISO date ("2026-04-01") or relative ("7d", "30d", "3m", "1y"). Use "30d" or "1m" for typical monitoring.
type*string
Entity type. Only "company" supported today.one of company
value*string
Ticker (e.g., "AAPL") or zero-padded CIK (e.g., "0000320193").
validate_claim"Is it true that…" / "fact check" / "verify the claim that…" / "did X really…" / "was Y actually…" / "confirm or refute" / "true or false" — natural-language claim verification against authoritative sources. Use whenever the agent needs to check whether something a user said i...2 params

"Is it true that…" / "fact check" / "verify the claim that…" / "did X really…" / "was Y actually…" / "confirm or refute" / "true or false" — natural-language claim verification against authoritative sources. Use whenever the agent needs to check whether something a user said i...

Parameters* required
claim*string
Natural-language factual claim, e.g., "Apple's FY2024 revenue was $400 billion" or "Microsoft made about $100B in profit last year".
tolerance_pctnumber
Max percent deviation still graded approximately_correct (0.5–50). Overrides the tolerance implied by the claim wording — set 1–2 for hallucination detection where any material error must be refute...
company_factsTYPED, DETERMINISTIC financial facts for a US public company for an EXPLICITLY NAMED reporting period — "Apple revenue for fiscal 2023", "Walmart net income FY2026 Q3", "Microsoft cash at the end of fiscal 2024". PREFER OVER entity_profile / get_company_financials whenever the...9 params

TYPED, DETERMINISTIC financial facts for a US public company for an EXPLICITLY NAMED reporting period — "Apple revenue for fiscal 2023", "Walmart net income FY2026 Q3", "Microsoft cash at the end of fiscal 2024". PREFER OVER entity_profile / get_company_financials whenever the...

Parameters* required
as_ofstring
Past ISO timestamp with timezone. Replay the latest answer actually recorded by that instant; no invented history or live fallback.
attribute*string
Which figure. "revenue" = total consolidated revenue; "net_income" = net income (loss); "cash" = cash and cash equivalents at the period end; "gross_profit"; "operating_income"; "eps_diluted" (dilu...one of revenue · net_income · cash · gross_profit · operating_income · eps_diluted
basisstring
Only "consolidated" in v1. Segment and product-level figures are XBRL-dimensioned and are not reachable through this contract at any concept.one of consolidated
company*string
Ticker ("AAPL"), 10-digit CIK ("0000320193"), or company name. A name that matches two filers equally well returns status "ambiguous" with both named rather than guessing — pass a ticker or CIK to...
exclude_publishersarray
Publisher ids forbidden for fact retrieval: sec, fmp, alphavantage. Case and surrounding whitespace are normalized; unknown ids are refused. Excluding sec currently leaves no eligible fact source a...
freshnessstring
cached (default) permits an eligible stored answer; fresh requires an upstream refresh and never silently falls back to stale data.one of cached · fresh
max_agenumber
Maximum age in seconds of the upstream publication, not our fetch. Older or undated facts are withheld.
period*object
The reporting period, stated explicitly. There is no default and no "latest" — that is the point of this tool.
restatementstring
Default "as_amended" — the latest filed figure for the period, with everything it superseded listed. "as_originally_reported" takes the first filing instead.one of as_amended · as_originally_reported
company_register_searchSearch the NATIONAL BUSINESS REGISTERS by company name and get the register's own id back — a Companies House number, a Norwegian organisasjonsnummer, a Finnish business id, a SIREN, a Japanese corporate number, an Estonian registry code, a CNPJ, or an LEI. Use this when you w...3 params

Search the NATIONAL BUSINESS REGISTERS by company name and get the register's own id back — a Companies House number, a Norwegian organisasjonsnummer, a Finnish business id, a SIREN, a Japanese corporate number, an Estonian registry code, a CNPJ, or an LEI. Use this when you w...

Parameters* required
countrystring
OPTIONAL ISO 3166-1 alpha-2 of the register you mean ("GB", "NO", "FI", "FR", "JP", "EE", "BR"). Narrows the fan-out, and is frequently the difference between an answer and `ambiguous` on a short n...
limitnumber
Maximum candidates to return, 1-50 (default 10). Does not change which registers are asked, only how many rivals come back.
name*string
The company name as you have it, in its own script. Pass it VERBATIM — do not strip the legal form ("Oyj", "AS", "株式会社", "Ltd"): in Japanese the form is a PREFIX as often as a suffix and 株式会社花王 and...
scan_dependencyComposite "should I add this npm package to my project" check in ONE call — fans out across deps.dev (license + advisories + version history) and bundlephobia (gzipped/minified bundle size, dependency count, ESM/tree-shake support). Use whenever an agent asks "is X safe / popu...2 params

Composite "should I add this npm package to my project" check in ONE call — fans out across deps.dev (license + advisories + version history) and bundlephobia (gzipped/minified bundle size, dependency count, ESM/tree-shake support). Use whenever an agent asks "is X safe / popu...

Parameters* required
package*string
npm package name. Scoped packages (e.g. "@types/node") are accepted.
versionstring
Specific version to check (e.g., "18.3.1"). Defaults to the latest published version when omitted.
bet_researchResearch a Polymarket bet by pulling the relevant Pipeworx data for it in one call. Pass a market slug ("will-kristi-noem-win-the-2028-republican-presidential-nomination"), a polymarket.com URL, or a question text. A dated slug ("...-by-june-30-2026") still resolves after it s...3 params

Research a Polymarket bet by pulling the relevant Pipeworx data for it in one call. Pass a market slug ("will-kristi-noem-win-the-2028-republican-presidential-nomination"), a polymarket.com URL, or a question text. A dated slug ("...-by-june-30-2026") still resolves after it s...

Parameters* required
depthstring
quick = 2-3 evidence sources, thorough = full fan-out. Default thorough.one of quick · thorough
include_rawboolean
Default false. When false (recommended), FRED/FDA/GDELT/Federal-Register evidence is summarized to the few fields agents actually use — keeps responses under ~20KB. Pass true to get full upstream p...
market*string
Polymarket slug ("will-kristi-noem-win-the-2028-republican-presidential-nomination"), full URL ("https://polymarket.com/event/..."), or question text ("Will Bitcoin hit $150k?"). Dated slugs still...
polymarket_arbitrageFind arbitrage opportunities on Polymarket via monotonicity violations + partition-sum checks. Call with NO args for a `trending_scan` of the top ~200 markets by weekly volume; pass `event` for the strongest per-event partition_check, or `topic` for a themed cross-event scan....2 params

Find arbitrage opportunities on Polymarket via monotonicity violations + partition-sum checks. Call with NO args for a `trending_scan` of the top ~200 markets by weekly volume; pass `event` for the strongest per-event partition_check, or `topic` for a themed cross-event scan....

Parameters* required
eventstring
Single-event mode (use this if you know the specific Polymarket event): event slug like "fed-decision-may-2026" or "when-will-bitcoin-hit-150k". Full Polymarket URLs also accepted.
topicstring
Cross-event mode (use this if you want to scan related events across the platform): a topic or seed question like "Fed rate decision" or "Strait of Hormuz traffic returns to normal". Tool searches...
polymarket_edgesScan top Polymarket markets and return opportunities where Pipeworx data disagrees with market price. Built for "what should I bet on today" — agents discover opportunities without paging hundreds of markets. FIVE MODEL FAMILIES grouped into three response segments under by_se...9 params

Scan top Polymarket markets and return opportunities where Pipeworx data disagrees with market price. Built for "what should I bet on today" — agents discover opportunities without paging hundreds of markets. FIVE MODEL FAMILIES grouped into three response segments under by_se...

Parameters* required
category_filterstring
Comma-separated list to restrict the output: "model_driven" (crypto_price + news_momentum), "structural_arbitrage" (partition_overround), "concentrated_longshot". Combine like "model_driven,structu...
limitnumber
Top N edges to return after ranking. Default 10, max 25.
max_spread_ppnumber
Tradeable-edge filter. Maximum bid/ask spread in percentage points on the representative market. Default null (no filter). Set to 2 to require tight books — anything wider eats most plausible edges.
min_edge_ppnumber
Minimum |edge| in percentage points to include (default 0.5). Edge is evaluated NET of slippage and Polymarket's own taker fee.
min_kellynumber
Minimum half-Kelly fraction (as decimal, e.g. 0.005 = 0.5% of bankroll) to include single-leg opportunities. Default 0 (no filter). Skips opportunities that are too small to bet sensibly even if th...
min_liquiditynumber
Tradeable-edge filter. Minimum $ liquidity on the representative market (or for partition_overround, on at least one top_leg). Default 0 (no filter). Set to 5000 to drop thin-book opportunities whe...
min_partition_leg_kellynumber
Minimum BEST per-leg half-Kelly fraction across a partition_overround opportunity's top_legs (or longshot_basket legs). Default 0 (no filter). Partition arbs always return kelly_fraction_half=0 at...
slippage_ppnumber
Assumed execution slippage in percentage points per leg (default 0.3), for bid/ask + thin depth cost that a last-trade price does not show. Subtracted from raw |edge| before ranking and Kelly sizin...
windowstring
Polymarket volume window to filter markets. Default 1wk.one of 24hr · 1wk · 1mo
polymarket_kalshi_spreadCross-venue spread between Kalshi and Polymarket for the same resolving question. The two venues sometimes price the same outcome 2-25pp apart because their participant pools differ — when the bet shapes are equivalent that delta is a real signal, when they aren't the tool say...3 params

Cross-venue spread between Kalshi and Polymarket for the same resolving question. The two venues sometimes price the same outcome 2-25pp apart because their participant pools differ — when the bet shapes are equivalent that delta is a real signal, when they aren't the tool say...

Parameters* required
kalshi_event_tickerstring
Explicit Kalshi event ticker, e.g. "KXFED-26OCT". Overrides the topic-mapped Kalshi side.
polymarket_event_slugstring
Explicit Polymarket event slug, e.g. "fed-decision-in-june-825". Overrides the topic-mapped Polymarket side.
topicstring
Subject to compare. Canonical keys: fed | btc | eth | cpi | gdp | sp500 | recession | next_pope | next_uk_pm | next_israel_pm | 2028_president — plus the 15-minute crypto up/down windows btc_15m |...
polymarket_fill_riskRealizable-vs-theoretical edge check against live CLOB order-book depth — AND Polymarket's own taker fee, which is never zero and is folded in rather than left for you to add (fleet #3446: r/PredictionsMarkets flagged a "clean" fill that quietly omitted it as optimistic in the...4 params

Realizable-vs-theoretical edge check against live CLOB order-book depth — AND Polymarket's own taker fee, which is never zero and is folded in rather than left for you to add (fleet #3446: r/PredictionsMarkets flagged a "clean" fill that quietly omitted it as optimistic in the...

Parameters* required
eventstring
Basket mode: event slug or full polymarket.com URL — checks every leg of the partition.
marketstring
Single-market mode: market slug or full polymarket.com URL.
sidestring
Single-market: buy_yes | sell_yes | buy_no | sell_no (default buy_yes). Basket: sell_yes | buy_yes (default auto — sell if partition sum > 1, buy if < 1).
size_usdnumber
Single-market: USD to spend (buys) or target proceeds (sells). Basket: settlement notional — shares per leg, each paying $1 at resolution. Default 1000, clamp 10–1,000,000.
polymarket_edge_trackerEdge persistence and decay telemetry built from daily polymarket_edges snapshots. Answers "how long has this edge existed and is it shrinking?" — a fresh wide edge and a 3-week-old wide edge are different trades (the latter is wide for a reason nobody is willing to take). Args...2 params

Edge persistence and decay telemetry built from daily polymarket_edges snapshots. Answers "how long has this edge existed and is it shrinking?" — a fresh wide edge and a 3-week-old wide edge are different trades (the latter is wide for a reason nobody is willing to take). Args...

Parameters* required
daysnumber
Lookback in days (default 14, clamp 2-30).
windowstring
Which polymarket_edges window family to read snapshots for: 24hr | 1wk | 1mo (default 1wk).
kalshi_weather_edgePrices Kalshi daily high-temperature markets against the NWS forecast for the market's OWN settlement station, and measures whether that forecast actually beats the market. Two modes. LIVE (default): returns the full strike ladder for one city and settlement date with market_p...5 params

Prices Kalshi daily high-temperature markets against the NWS forecast for the market's OWN settlement station, and measures whether that forecast actually beats the market. Two modes. LIVE (default): returns the full strike ladder for one city and settlement date with market_p...

Parameters* required
backtest_daysnumber
Run measurement mode over the last N settled days (max 60) instead of pricing today. Returns brier_market vs brier_forecast, the settlement-vs-forecast basis, and per-day detail. Both sides are sco...
citystring
City to price, e.g. "nyc", "chicago", "los angeles", "miami", "austin", "houston", "denver", "philadelphia". Defaults to nyc. Unmapped cities return known_cities[] rather than a wrong series.
datestring
Settlement date as YYYY-MM-DD. Defaults to the soonest open event. Daily weather markets open ~1-2 days ahead and close 05:00Z the next day.
market_typestring
"high_temp" (default) | "precip". Precipitation markets return prices but no forecast_prob yet.
series_tickerstring
Explicit Kalshi series, e.g. "KXHIGHNY" or "KXHIGHTBOS" (Boston). Overrides `city`; use it for any of the 121 daily weather series not in the city list.
resolution_auditExtract the settlement clause of a single Polymarket (.com or .us) or Kalshi market: who publishes the settling number (source), the clock time + timezone it is taken at (falling back to the market TITLE when the clause itself says "the time range specified in the title" — e.g...2 params

Extract the settlement clause of a single Polymarket (.com or .us) or Kalshi market: who publishes the settling number (source), the clock time + timezone it is taken at (falling back to the market TITLE when the clause itself says "the time range specified in the title" — e.g...

Parameters* required
market*string
Polymarket (.com or .us) market slug or URL, OR a Kalshi market ticker (preferred) or event ticker (falls back to a representative market under that event).
venue*string
Which venue to fetch the market from. "polymarket" is the offshore venue (polymarket.com); "polymarket-us" is the separate, CFTC-regulated polymarket.us venue, matched by slug via its own search (n...one of polymarket · kalshi · polymarket-us
resolution_diffField-by-field diff of TWO markets' settlement clauses (one from each of `a` and `b`; either can be Polymarket .com, Polymarket US, or Kalshi) — runs resolution_audit on both sides and compares source, settle time, precision, comparison_basis, and evidence standard. Returns `e...2 params

Field-by-field diff of TWO markets' settlement clauses (one from each of `a` and `b`; either can be Polymarket .com, Polymarket US, or Kalshi) — runs resolution_audit on both sides and compares source, settle time, precision, comparison_basis, and evidence standard. Returns `e...

Parameters* required
a*object
First market to compare.
b*object
Second market to compare.
release_calendar_marketsJOIN of the official release calendar (econ data, the FOMC, FDA decisions, SEC rules) against LIVE Polymarket/Kalshi markets — which scheduled releases land in the next N hours, and which live markets resolve on them. This is a POSITIONING tool, not a speed product: results ar...2 params

JOIN of the official release calendar (econ data, the FOMC, FDA decisions, SEC rules) against LIVE Polymarket/Kalshi markets — which scheduled releases land in the next N hours, and which live markets resolve on them. This is a POSITIONING tool, not a speed product: results ar...

Parameters* required
categoriesstring
Comma or space separated subset of econ|fed|fda|sec|court, or "all" (default). E.g. "econ,fed" or "fda".
hoursnumber
Look-ahead window in hours from now. Default 48. Capped at 720 (30 days) — econ/fed releases are dated weeks apart, so a short window is often empty; widen rather than assume nothing is scheduled.
prediction_calibrationREALIZED win rate by shown price and minutes elapsed for short-horizon crypto up/down markets, net of taker fee — read from our own settled-outcomes archive, not from live prices. Answers the one question no venue will: "a side shown at 82 with five minutes left, how often did...6 params

REALIZED win rate by shown price and minutes elapsed for short-horizon crypto up/down markets, net of taker fee — read from our own settled-outcomes archive, not from live prices. Answers the one question no venue will: "a side shown at 82 with five minutes left, how often did...

Parameters* required
assetstring
btc (default) | eth | sol | xrp | bnb. Coverage differs by venue: polymarket and polymarket-us carry btc/eth/sol/xrp, Kalshi carries btc/eth/bnb.
bucket_ppnumber
Price-bucket width in percentage points: 5 | 10 (default) | 20 | 25 | 50. Must divide 100, so the last bucket is never narrower than the rest.
horizonstring
15m (default). 5m | 1h | 1d are accepted but only 15m is collected today, so another value returns coverage.windows_total 0 rather than an error.
minutenumber
Minutes elapsed since window open, 0-based. Omit for the full grid; pass 5 for the "five minutes in" row only, which is also the cheapest query.
side_conventionstring
"favorite" (default) folds each window onto whichever side was the favorite — the frame published claims about early favorites use. "yes" keeps the venue own YES/Up side.
venuestring
polymarket | polymarket-us | kalshi | all (default polymarket). "all" returns one grid per venue, never a merged one.
updown_venue_compareThe same 15-minute crypto "up or down" window priced on polymarket.com, Polymarket US and Kalshi, side by side, with whether each pair is actually the same contract. Pass asset (btc | eth | sol | xrp | bnb) and window ("current" default, "next", "previous", or the window START...3 params

The same 15-minute crypto "up or down" window priced on polymarket.com, Polymarket US and Kalshi, side by side, with whether each pair is actually the same contract. Pass asset (btc | eth | sol | xrp | bnb) and window ("current" default, "next", "previous", or the window START...

Parameters* required
assetstring
btc (default) | eth | sol | xrp | bnb. Coverage differs by venue; a venue that does not list the asset answers not_listed.
horizonstring
15m (default and the only value offered).
windowstring
"current" (default), "next", "previous", or the window START as an ISO-8601 timestamp on a 15-minute boundary, e.g. 2026-10-27T14:15:00Z. An unaligned timestamp is refused, not rounded.
updown_divergence_rateHow often two venues settled the SAME 15-minute crypto window differently, over every settled window on record. Compares polymarket.com (Chainlink TWAP) with Kalshi and with Polymarket US (both CF Benchmarks BRTI), and Kalshi with Polymarket US as the same-feed control. Per pa...2 params

How often two venues settled the SAME 15-minute crypto window differently, over every settled window on record. Compares polymarket.com (Chainlink TWAP) with Kalshi and with Polymarket US (both CF Benchmarks BRTI), and Kalshi with Polymarket US as the same-feed control. Per pa...

Parameters* required
assetstring
btc (default) | eth | sol | xrp | bnb. The archive holds btc/eth on all three venues, sol/xrp on polymarket.com and Polymarket US, bnb on Kalshi only (no pair).
daysnumber
Look-back in days, 1-90 (default 30). The archive starts 2026-09-22 (polymarket.com, Kalshi) and 2026-10-07 (Polymarket US, btc), so a longer span is capped by what is held; coverage is reported pe...
archive_evidenceWhat did a web page say on a given date? Finds the archived capture of a URL nearest that date across the Internet Archive Wayback Machine, Common Crawl and Arquivo.pt, reads it, and returns the readable text (HTML stripped) with the capture timestamp, a link to the archived c...4 params

What did a web page say on a given date? Finds the archived capture of a URL nearest that date across the Internet Archive Wayback Machine, Common Crawl and Arquivo.pt, reads it, and returns the readable text (HTML stripped) with the capture timestamp, a link to the archived c...

Parameters* required
date*string
The date to look up, as YYYY-MM-DD (e.g. "2023-06-01"), YYYYMMDD, or a full ISO timestamp.
max_charsnumber
Characters of page text to return. Default 12000, max 60000.
max_gap_daysnumber
Furthest a capture may be from the date and still be used, in days. Default 30, max 3650.
url*string
The page address, e.g. "https://www.sec.gov" or "https://www.ftc.gov/policy-notices/privacy-policy".
archive_compareWhat changed on a web page between two dates? Resolves the archived capture nearest each date (Internet Archive Wayback Machine, Common Crawl, Arquivo.pt), extracts the readable text of both, and returns a text-level diff: the segments removed and added, a similarity score, an...4 params

What changed on a web page between two dates? Resolves the archived capture nearest each date (Internet Archive Wayback Machine, Common Crawl, Arquivo.pt), extracts the readable text of both, and returns a text-level diff: the segments removed and added, a similarity score, an...

Parameters* required
date_a*string
The earlier date, as YYYY-MM-DD (e.g. "2021-06-01").
date_b*string
The later date, as YYYY-MM-DD (e.g. "2024-06-01").
max_gap_daysnumber
Furthest a capture may be from each date and still be used, in days. Default 30, max 3650.
url*string
The page address, e.g. "https://www.ftc.gov/policy-notices/privacy-policy".
research_rowClaygent-style per-row research: answer ONE question about ONE company and return a JSON object matching your output_schema, with every field wrapped in its own evidence — {value, evidence_url, quote, status}. status is NEVER self-reported by the model: "found" means this code...5 params

Claygent-style per-row research: answer ONE question about ONE company and return a JSON object matching your output_schema, with every field wrapped in its own evidence — {value, evidence_url, quote, status}. status is NEVER self-reported by the model: "found" means this code...

Parameters* required
entity*object
The row/company to research. At least one of name/domain required.
max_costnumber
Cost ceiling in US dollars for this one row. Default 0.02, max 0.50, minimum viable 0.002 (below that the call is refused rather than silently exceeding it).
output_schema*object
JSON Schema object naming the fields to extract, e.g. {"properties":{"sells_to_healthcare":{"type":"boolean"},"head_of_sales":{"type":"string"}}}. Up to 20 fields.
question*string
The question to answer about this company, in natural language, e.g. "Does this company sell to healthcare, and who is the head of sales?"
sourcesstring
Where to look: "web" (company site only), "catalog" (entity_profile only), "both" (default).one of catalog · web · both
classify_rowCheap categorization: given a company and a list of candidate labels, decide which labels apply — the most common GTM/AI usage shape (tagging a list by industry, ICP fit, etc.), one small model call. Same evidence contract as research_row: each label comes back {label, applies...3 params

Cheap categorization: given a company and a list of candidate labels, decide which labels apply — the most common GTM/AI usage shape (tagging a list by industry, ICP fit, etc.), one small model call. Same evidence contract as research_row: each label comes back {label, applies...

Parameters* required
entity*object
The row/company to classify. At least one of name/domain required.
labels*array
Candidate labels to test, 2-30 strings, e.g. ["healthcare","fintech","logistics"].
textstring
Text to classify directly (a description, a page you already fetched, etc.) — cheapest path, skips any fetch.
pipeworx_trendingWhat other AI agents are calling on Pipeworx right now. Returns the top tools, top packs, and total call volume over a recent window (24h, 7d, or 30d). Useful for: (1) discovering what data sources are hot for current events, (2) confirming a popular tool is the canonical choi...1 params

What other AI agents are calling on Pipeworx right now. Returns the top tools, top packs, and total call volume over a recent window (24h, 7d, or 30d). Useful for: (1) discovering what data sources are hot for current events, (2) confirming a popular tool is the canonical choi...

Parameters* required
windowstring
24h (default) | 7d | 30d. Shorter windows surface what's hot right now; longer windows show steady-state demand.one of 24h · 7d · 30d
suggest_questionsWhat can I ask Pipeworx? / what is Pipeworx good for? / what can you do? / give me ideas / show me examples / getting started / what data do you have? — the onboarding entry point for an agent that just connected and wants to know what is worth asking. Returns category-buckete...1 params

What can I ask Pipeworx? / what is Pipeworx good for? / what can you do? / give me ideas / show me examples / getting started / what data do you have? — the onboarding entry point for an agent that just connected and wants to know what is worth asking. Returns category-buckete...

Parameters* required
topicstring
Optional focus area: finance | pharma | economics | real-estate | betting | weather | government | science | news. Omit for a cross-category spread.
generate_llms_txtGenerate a production-ready llms.txt file for any URL so AI crawlers (ChatGPT, Claude, Perplexity) can index the site cleanly. Fetches the page, extracts title/description/key links, and emits the standard llms.txt markdown format. Output is a single text blob ready to drop at...2 params

Generate a production-ready llms.txt file for any URL so AI crawlers (ChatGPT, Claude, Perplexity) can index the site cleanly. Fetches the page, extracts title/description/key links, and emits the standard llms.txt markdown format. Output is a single text blob ready to drop at...

Parameters* required
max_linksnumber
Maximum number of link entries to include (default 25, max 50).
url*string
Full URL of the site to summarize, e.g. "https://example.com" or a specific landing page.
ai_visibility_checkProbe one or more LLMs for what they know about a business / brand / product / topic and score visibility (0-100) per model. Default model is Workers AI Llama-3.3-70b (free); pass `_apiKey` to also probe Anthropic (BYO key — you pay Anthropic directly for those calls). Returns...4 params

Probe one or more LLMs for what they know about a business / brand / product / topic and score visibility (0-100) per model. Default model is Workers AI Llama-3.3-70b (free); pass `_apiKey` to also probe Anthropic (BYO key — you pay Anthropic directly for those calls). Returns...

Parameters* required
_apiKeystring
Optional Anthropic API key (sk-ant-...) — only needed if "anthropic" is in models. Passed straight through to api.anthropic.com.
contextstring
Optional: a phrase locating the entity (e.g. "Boston restaurant", "B2B SaaS"). Helps disambiguate common names.
entity*string
The thing to ask about. Brand/business name, product name, person, or topic. E.g. "Pipeworx", "OpenInvoice", "Acme Corp pricing".
modelsarray
Which models to probe. Supported: "workers-ai" (free default), "anthropic" (requires _apiKey). Omit for just workers-ai.
scan_competitor_ai_presenceCompare AI visibility across multiple entities side-by-side. Probes each entity (your brand + N competitors) with ai_visibility_check, ranks by score, surfaces which is most/least recognized. Useful for competitive AI-marketing audits: "does Claude know about us as well as our...4 params

Compare AI visibility across multiple entities side-by-side. Probes each entity (your brand + N competitors) with ai_visibility_check, ranks by score, surfaces which is most/least recognized. Useful for competitive AI-marketing audits: "does Claude know about us as well as our...

Parameters* required
_apiKeystring
Optional Anthropic API key — only if "anthropic" is in models. Passed to api.anthropic.com per probe.
contextstring
Optional shared context applied to every probe (e.g. "B2B SaaS", "Boston restaurant"). Disambiguates common names.
entities*array
Array of 2-8 entities to compare (brand/business/product names). First entry treated as the "subject" for narrative; rest are competitors.
modelsarray
Which models to probe. Supported: "workers-ai" (free default), "anthropic" (requires _apiKey). Omit for just workers-ai.
pipeworx_feedbackTell the Pipeworx team something is broken, missing, or needs to exist. Use when a tool returns wrong/stale data (bug), when a tool you wish existed isn't in the catalog (feature/data_gap), or when something worked surprisingly well (praise). ONLY for tools served by this Pipe...4 params

Tell the Pipeworx team something is broken, missing, or needs to exist. Use when a tool returns wrong/stale data (bug), when a tool you wish existed isn't in the catalog (feature/data_gap), or when something worked surprisingly well (praise). ONLY for tools served by this Pipe...

Parameters* required
claim_tokenstring
Read the reply to a report you filed earlier: pass the `pwfb_…` token that filing returned, with no other arguments. Returns the status and, once resolved, what actually changed.
contextobject
Optional structured context: which tool, pack, or vertical this relates to.
messagestring
Your feedback in plain text. Be specific (which tool, what error, what data was missing). 1-2 sentences typical, 2000 chars max.
typestring
bug = something broke or returned wrong data. feature = a new tool or capability you wish existed. data_gap = data Pipeworx does not currently expose. praise = positive note. other = anything else.one of bug · feature · data_gap · praise · other
rememberSave data the agent will need to reuse later — across this conversation or across sessions. Use when you discover something worth carrying forward (a resolved ticker, a target address, a user preference, a research subject) so you don't have to look it up again. Stored as a ke...9 params

Save data the agent will need to reuse later — across this conversation or across sessions. Use when you discover something worth carrying forward (a resolved ticker, a target address, a user preference, a research subject) so you don't have to look it up again. Stored as a ke...

Parameters* required
contentstring
Alias for value.
datastring
Alias for value.
kstring
Alias for key.
key*string
Memory key (e.g., "subject_property", "target_ticker", "user_preference"). Accepts name, k, label as aliases.
labelstring
Alias for key.
namestring
Alias for key.
textstring
Alias for value.
vstring
Alias for value.
value*string
Value to store (any text — findings, addresses, preferences, notes). Accepts content, text, data, v as aliases; a non-string value is stored as JSON.
recallRetrieve a value previously saved via remember, or list all saved keys (omit the key argument). Use to look up context the agent stored earlier — the user's target ticker, an address, prior research notes — without re-deriving it from scratch. Scoped to your identifier (anonym...4 params

Retrieve a value previously saved via remember, or list all saved keys (omit the key argument). Use to look up context the agent stored earlier — the user's target ticker, an address, prior research notes — without re-deriving it from scratch. Scoped to your identifier (anonym...

Parameters* required
kstring
Alias for key.
keystring
Memory key to retrieve (omit to list all keys). Accepts name, k, label as aliases.
labelstring
Alias for key.
namestring
Alias for key.
forgetDelete a previously stored memory by key. Use when context is stale, the task is done, or you want to clear sensitive data the agent saved earlier. Pair with remember and recall.4 params

Delete a previously stored memory by key. Use when context is stale, the task is done, or you want to clear sensitive data the agent saved earlier. Pair with remember and recall.

Parameters* required
kstring
Alias for key.
key*string
Memory key to delete. Accepts name, k, label as aliases.
labelstring
Alias for key.
namestring
Alias for key.
new_deckCreate a shuffled deck of playing cards. Returns deck_id and remaining count. Use deck_count to combine multiple decks (e.g., 2 for 104 cards).1 params

Create a shuffled deck of playing cards. Returns deck_id and remaining count. Use deck_count to combine multiple decks (e.g., 2 for 104 cards).

Parameters* required
countnumber
Number of standard 52-card decks to combine and shuffle. Defaults to 1.
draw_cardsDraw cards from a deck. Returns card details (suit, value) and remaining count. Specify count to draw multiple cards at once.2 params

Draw cards from a deck. Returns card details (suit, value) and remaining count. Specify count to draw multiple cards at once.

Parameters* required
countnumber
Number of cards to draw. Defaults to 1.
deck_id*string
The deck ID returned by new_deck (e.g. "3p40paa87x90").
shuffle_deckReshuffle a deck and reset all drawn cards back in. Returns updated remaining card count.1 params

Reshuffle a deck and reset all drawn cards back in. Returns updated remaining card count.

Parameters* required
deck_id*string
The deck ID to shuffle (e.g. "3p40paa87x90").

Sponsors

Configuration

PIPEWORX_API_KEYsecret

Optional Pipeworx API key. Without it calls are anonymous and capped daily; a free key raises the cap.

Readme

mcp-deckofcards

Deck of Cards MCP — wraps deckofcardsapi.com (free, no auth)

Part of Pipeworx — an MCP gateway connecting AI agents to 1863+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.

Tools

ToolDescription
new_deckCreate a shuffled deck of playing cards. Returns deck_id and remaining count. Use deck_count to combine multiple decks (e.g., 2 for 104 cards).
draw_cardsDraw cards from a deck. Returns card details (suit, value) and remaining count. Specify count to draw multiple cards at once.
shuffle_deckReshuffle a deck and reset all drawn cards back in. Returns updated remaining card count.

Quick Start

Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):

{
  "mcpServers": {
    "deckofcards": {
      "url": "https://gateway.pipeworx.io/deckofcards/mcp"
    }
  }
}

What this endpoint actually serves


View the full README on GitHub

Details

Repository
github.com/pipeworx-io/mcp-deckofcards
Website
pipeworx.io/packs/deckofcards
Package
@pipeworx/mcp-deckofcards
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active
Prompts
12
Tools verified
Nov 6, 2026

More from pipeworx-io