Skip to main content
Glama
701,828 tools. Updated 2026-10-25 16:34

"OVH" matching MCP tools:

  • 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. `event` (recommended for a specific market): pass a Polymarket event slug like "fed-decision-may-2026" or "when-will-bitcoin-hit-150k"; walks child markets, checks date-axis / threshold-axis ordering AND computes the partition_check (sum of YES prices across mutually-exclusive legs — should ≈1; deviations >3pp emit a BUY/SELL EVERY LEG signal). `topic` (for cross-event scanning): pass a seed question like "Strait of Hormuz traffic returns to normal" or "Fed rate decision"; searches related events across the platform, flattens markets, runs the comparator on the union. Cross-event mode catches "...by May 31" vs "...by Jun 30" patterns that single-event misses. SEMANTIC ANCHOR: cross-event pairs require ≥0.30 Jaccard similarity on question tokens (prevents Powell-Fed-Pause being paired with Powell-DOJ-probe); skipped_low_similarity surfaces the rejected pair count. PARTITION FILTER: drops will-person-X / will-manager-Y / will-someone-else- placeholder slugs; partitions with >20% placeholder fraction return null arb signal. Response: opportunities[] (gap_pp, suggested_trade, reasoning, monotonicity violation context), and in event mode partition_check{sum_yes_prices, gap_from_1, placeholders_filtered, suggested_trade}. FEES: every opportunities[] row and partition_check.arbitrage carry edge_pp_gross (== gap_pp / overround_pp), fees_pp, edge_pp_net, net_positive, plus polymarket_fee_pp, fee_basis and fee_categories[]. BOTH cost components are modeled: Polymarket's own per-category TAKER FEE (fee = shares × rate × p × (1-p), rates crypto 0.07 / sports-economics-culture-weather-other 0.05 / finance-politics-mentions-tech 0.04, geopolitics and world events fee-free; verified against Polymarket's own docs as of 2026-09-13) and Polygon gas (~$0.02/leg). The taker fee dominates: ~$1.75 per 100 shares on a crypto market at 50c versus $0.02 of gas, so rows that looked profitable before fleet #1927 may now show net_positive:false — that is the correction, not a regression. Each leg is priced at ITS OWN market's rate and price (the fee curve peaks at 50c and falls toward both extremes). fee_basis says where the rate came from: 'payload' (read off the market, the normal case), 'category' (mapped from its fee category), 'fee_free', or 'fallback' (rate unknown — charged at the modal 0.05 rather than assumed free, so an unreadable market is never reported as costless). Where fill_check reprices against live depth, this does NOT double-count that spread cost. FILL CHECK: when the partition signal fires, arbitrage.fill_check prices it against live CLOB depth (theoretical_edge_pp_at_book vs realizable_edge_pp at 1000 shares/leg, thin_legs[]) — realizable_edge_pp ≤ 0 means the overround exists only at last-trade, not in the book; do not trade it. For custom sizing use polymarket_fill_risk.
    ConnectorNo auth
  • List up to 50 assets owned by the authenticated user, newest first, with id, filename, timestamps and share URL. Requires an API key or signed-in session; read-only, and results are capped at 50 with no pagination. Use search_gallery for public works from other users, or view to open one of your assets.
    ConnectorAPI key
  • 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_prob (mid), forecast_prob, and edge_pp per strike, plus the settlement clause verbatim. BACKTEST (`backtest_days: N`): scores an archived gridded forecast against the market on settled days and returns brier_market vs brier_forecast with a plain-English `verdict`, so the edge is MEASURED rather than asserted. READ THE WARNINGS — they are not boilerplate. (1) These markets DO NOT settle on the NWS. They settle on The Weather Company (weather.com) at a Kalshi station code such as CLINYC, which the response quotes verbatim; so part of every edge_pp is NWS-vs-Weather-Company disagreement about the same day at the same station, which is not mispricing and not tradeable. `settlement_vs_forecast_basis_f` from backtest mode is that part as a number. (2) The station is DERIVED from the settlement clause, never from the city name: Chicago settles at MIDWAY and New York at CENTRAL PARK, so a city-centre forecast would misprice a whole ladder. A station that cannot be resolved yields rows with no forecast and a reason, never a guessed coordinate. (3) forecast_prob assumes a normal distribution around the NWS high whose width is ASSUMED, not fitted (stated in `distribution_assumption`) — run backtest mode to see whether it is calibrated. (4) edge_pp is gross: no Kalshi fees, no bid-ask. MEASURED RESULT, AND IT IS NOT THE FLATTERING ONE: on the first backtest (KXHIGHNY, 13 settled days to 2026-09-11, 58 market observations) the MARKET beat the forecast — Brier 0.1008 for the market against 0.1594 for the archived gridded forecast, lower being better. So on that sample there is NO forecast edge to sell, and a large edge_pp is more likely to be the model disagreeing with a better-informed market than an opportunity. The measured settlement-vs-forecast basis was 1.7F mean absolute over 8 pinnable days, slightly warm-biased, which is a big share of a typical edge_pp on a 2-degree bracket. Re-run backtest_days before believing any edge; if a later sample reverses this, the numbers say so. NWS is US-only, so the ~30 international Kalshi weather series (London, Paris, Tokyo) return market prices with forecast_unavailable rather than a forecast. Precipitation series are listed but not yet priced. Cities: nyc, chicago, los angeles, miami, austin, houston, denver, philadelphia — or pass `series_ticker` for any other (e.g. "KXHIGHTBOS").
    ConnectorNo auth
  • 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 independently verified the model's quote is a VERBATIM substring of text actually fetched; "inferred" means a value was given but the quote could not be verified; "not_established" means no source answered the field, and its value is always null — never guessed, never a blended score. Sources: "web" fetches the company's own site (entity.domain required — homepage, /about, /leadership) via fetch_url; "catalog" checks entity_profile (SEC EDGAR; resolved:false for a private company is expected, not a failure); "both" (default) tries both. max_cost (USD, default 0.02, max 0.50) scales how many pages are fetched and refuses up front if it is too small to pay for even one extraction call (floor $0.002) — never silently overspends. A row where every source comes back empty costs nothing: every field is mechanically not_established with NO model call made. For a boolean/derived field (e.g. "does this company sell to healthcare"), the quote only has to SUPPORT the value — a descriptive sentence about customers/products counts, the source need not state the answer verbatim. leadership_page_status ("fetched"|"not_found"|"not_attempted", plus leadership_note) says plainly whether a leadership/team page was actually read, so a named-person field (head_of_sales) coming back not_established is distinguishable from "this company just doesn't publish one" vs. "we never checked". model_output_empty:true means the model returned nothing usable (a transport/budget problem) — every field is not_established for THAT reason, never read as 20 individual "no" judgments. Use with a fixed question + schema across many rows for "Claygent over N companies with a hard cost cap" (composes with batch callers). For picking from a fixed label list instead of extracting open fields, use classify_row (cheaper, one model call).
    ConnectorNo auth
  • 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 Pipeworx connection — if the tool came from a different MCP server in your client (another vendor's Gmail, Splunk, Slack, etc. connector), we cannot fix it and reporting it here only delays you; file it with that server instead. Not sure? Pipeworx tool names are the ones this connection lists. Describe the issue in terms of Pipeworx tools/packs — don't paste the end-user's prompt. Filing without an account returns a `claim_token`; pass it back later as pipeworx_feedback({claim_token:"pwfb_…"}) to read whether it was fixed and what changed. The team reads digests daily and signal directly affects roadmap. Rate-limited to 5 per identifier per day. Free; doesn't count against your tool-call quota.
    ConnectorNo auth
  • Repair one Kubernetes node of an Ankra-provisioned cluster (Hetzner, OVH, UpCloud, DigitalOcean, or Scaleway) at the OS level over SSH-via-bastion: restarts the node's Kubernetes service unit (k3s / k3s-agent / kubelet) wrapped in Ankra's node-recovery engine, which classifies the failure and applies the matched curated fix (clear a failed unit, extend a start timeout, kill stale listeners, unblock the apiserver firewall, re-bootstrap the kubelet), verifies, and retries once. This is a privileged, not-cleanly-reversible action on a production node and briefly disrupts its workloads, so it requires confirmation. It does NOT run arbitrary commands - only the curated recovery plan. Always call ssh_diagnose_node first to confirm the node is broken at the OS level (not merely unreachable via bastion, which a node reboot - restart_node - addresses instead). Identify the node with node_id (preferred) or node_name. Not available for imported or managed-Kubernetes clusters, nor (yet) Proxmox/HPE Morpheus.
    Connector
    Destructive
    OAuth

Matching MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Enables AI agents to interact with an OVH Exchange mailbox via EWS and NTLM authentication, including searching, reading, sending, replying to, and forwarding emails, as well as managing folders and attachments.
    8
    -

Matching MCP Connectors

  • Lyrics OVH MCP — keyless lyrics lookup.

  • The Dockyard catalog describes ready-made Docker apps. Once you add this MCP server, your agent can find an app and deploy it for you: in local Docker or in your own Portainer.

  • Run one allowlisted, read-only kubectl command INSIDE an Ankra-provisioned cluster (Hetzner, OVH, UpCloud, DigitalOcean or Scaleway) by executing it on a control-plane node over SSH-via-bastion, using that node's own admin kubeconfig. REACH FOR THIS ONLY WHEN THE CLUSTER'S AGENT IS NOT ANSWERING. While the agent is checking in, a get, describe, logs or events call here is REFUSED and names the tool to use instead: get_pods or cluster_query, describe_resource, get_pod_logs, get_events. Those answer the same question in one call, while this one dials the bastion, runs kubectl as cluster-admin and holds a scheduler job for up to 90 seconds. When the agent stops checking in they stop being an option - get_pod_logs and query_logs refuse outright, and the resource reads fall back to a cached inventory from before the outage - and this becomes the only live view left, because it does not use the agent at all; every result is stamped source=break_glass_ssh with executed_at. That is the state to use it in: to find out what is actually wrong with the agent itself - is its Deployment rolled out, is its pod Pending or CrashLoopBackOff or bound to a dead node, what do its logs and events say. If the agent IS checking in and you still need this, it is because an agent-path read already failed this turn (CLUSTER_OFFLINE, NO_AGENT or AGENT_TIMEOUT) or the tool it named refuses what you asked it for - get_pod_logs serves previous=true only on agent 2.1.1058 or newer, and refuses below it: set agent_path_unavailable=true, which is honoured and recorded. Verbs: get, describe, logs, events, top, version, api_resources, rollout_status. This is an allowlist, not a shell: there is no exec, port-forward, apply, patch, edit, create, scale, drain, cp, --raw, jsonpath or go-template, and no way to pass raw flags. Structured output (yaml/json) of Secrets is refused, though get and describe of them still report names, types and key names. Output is capped and credential-shaped strings are redacted. The command runs on a control-plane node, chosen automatically unless you pass node_id/node_name. Not available for imported or managed-Kubernetes clusters (they have no bastion), nor (yet) Proxmox/HPE Morpheus. Read-only: use ssh_kubectl_recover to change anything.
    ConnectorOAuth
  • Inspect the etcd cluster membership of an Ankra-provisioned cluster (Hetzner, OVH, UpCloud, DigitalOcean, or Scaleway) by running a read-only inspection on one control-plane node over SSH-via-bastion: the member list (hex and decimal ids, names, peer/client URLs, learner flag), each member's health, any active etcd alarms, and a quorum summary (voting members, healthy voters, quorum size, has_quorum plus the quorum_evidence it rests on, and failure_tolerance - healthy voters minus quorum size, floored at 0). failure_tolerance counts only voters observed serving, so it is a conservative lower bound: a voter whose health is unknown does not count towards it (health_unknown_voting_members says how many), and 0 can mean either no margin left or quorum already lost. Member health is three-valued: 'health' is 'serving', 'not_serving', or 'unknown' when no signal was readable at all, in which case 'healthy' is null rather than false - report unknown as unknown, never as down - and 'health_source' names the signal that decided it: 'client_endpoint' (the member's own client endpoint), 'local_health' (this node's own /health, for the member of the node the inspection runs on), 'raft_peer_link' (the local etcd's raft peer link to that member), 'member_list' (the member has no client endpoint because it never started), or 'unavailable' (no signal was readable at all). Use it BEFORE touching a degraded control-plane node, to know the quorum margin; and before remove_etcd_member, to get the member id. Identify the node to run on with node_id (preferred, from list_cluster_nodes) or node_name - it must be a control-plane node, and when one control-plane node is down, pick a HEALTHY peer (the inspection talks to the local etcd of the node it runs on). Runs nothing that changes the cluster. Not available for imported or managed-Kubernetes clusters, nor (yet) Proxmox/HPE Morpheus.
    ConnectorOAuth
  • Remove one member from the etcd cluster of an Ankra-provisioned cluster (Hetzner, OVH, UpCloud, DigitalOcean, or Scaleway) - the cleanup step when a dead control-plane node is being replaced: its stale etcd member must be removed before a replacement joins, or quorum math breaks. Executes on a HEALTHY control-plane peer (node_id/node_name - never the node whose member is being removed) over SSH-via-bastion; a node that is not control-plane is refused before any removal is attempted. The scheduler re-reads live membership immediately before acting and REFUSES to remove: a member still observed serving (by any health source, not only its own endpoint), a member whose health could not be read at all (unknown is not dead), the member of the node the command runs on, an id that does not uniquely match, or any non-learner voter whose removal would leave fewer healthy voters than the post-removal quorum - a refusal comes back as a structured result explaining why, with the live member list as evidence. This is an irreversible control-plane change: a removed member cannot rejoin with its old identity. Call get_etcd_members first and pass the member_id it listed (hex or decimal). Not available for imported or managed-Kubernetes clusters, nor (yet) Proxmox/HPE Morpheus.
    Connector
    Destructive
    OAuth
  • Scale the workers of an Ankra-provisioned self-managed cluster (Hetzner, OVH, UpCloud, DigitalOcean, Scaleway, Proxmox VE, or HPE Morpheus). With node_group_name, scales that node group to worker_count (0-100; the target is clamped into the group's autoscaling bounds when autoscaling is enabled); without it, performs the legacy whole-cluster scale to worker_count (1-10; refused while any node group has autoscaling enabled - scale the group directly instead). The cluster must be online and free of in-progress operations. New workers provision in the background. On scale-down the highest-index workers drain one at a time through the eviction API, honouring PodDisruptionBudgets, and are then terminated; a worker whose drain a PodDisruptionBudget refuses is kept in service and the scale-down is withdrawn for it, so the group can settle above worker_count. Call list_node_groups first to see the current counts, and again afterwards to confirm them.
    ConnectorOAuth
  • Raise a cloud-provider limit for a credential, or produce the exact request a person has to submit when the provider has no API for it. Call get_provider_quotas first: it names the dimensions and says whether the provider is automatable. Azure is the only provider Ankra can submit to (through the Microsoft.Quota API); for Hetzner, OVH, UpCloud, DigitalOcean, Scaleway, Proxmox VE and HPE Morpheus this call still SUCCEEDS and returns status manual_action_required with a manual_action object holding the console URL, the navigation path and a ready-to-paste request_text pre-filled with the live numbers - relay that to the user rather than retrying. One call may at most double a limit (or add 16 to a small one); ask for more by repeating the call. The limit can only go up: this tool will not lower one.
    Connector
    Destructive
    OAuth
  • "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 is factually correct. Company-financial claims (revenue, net income, cash for public US companies) verify via the structured SEC EDGAR + XBRL fast path with exact percent-delta math; ANY OTHER factual claim (macro statistics, rates, prices, drug data, records) automatically falls through to the grounded pipeline — routed to the right live source, answered with verbatim evidence, then judged. Returns a verdict (confirmed / approximately_correct / refuted / inconclusive / unsupported / could_not_verify), the grounded or structured actual value with pipeworx:// citation, and reasoning. IMPORTANT for callers: could_not_verify means the check did not happen (our LLM or source failed) and carries verification_error{stage,detail} — it is NOT evidence for or against the claim, and must not be shown as one. unsupported means we looked and cover no source for it. Replaces 4–6 sequential calls (NL parsing → entity resolution → data lookup → comparison).
    ConnectorNo auth
  • 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 period matters: those answer "the most recent figures" and will happily hand back FY2025 when you asked about FY2019, and neither separates a discrete quarter from a year-to-date figure. This one refuses instead — it NEVER substitutes the latest period for the period requested, NEVER returns 0 for missing data, NEVER lets a 9-month YTD number answer a quarterly question, and NEVER converts a currency. Every answer carries the exact us-gaap concept it came from, what that concept MEASURES (NetIncomeLoss excludes non-controlling interests, ProfitLoss includes them — not synonyms), the accession number and a link to the filing on sec.gov, the restatement trail of any superseded figures, and a contract + derivation version to pin against. Fiscal periods are the FILER'S OWN, anchored on their fiscal-year end, so Walmart's year ending 2026-01-31 is FY2026 and Apple's ending 2025-09-27 is FY2025. Attributes: revenue, net_income, cash, gross_profit, operating_income, eps_diluted, capex, operating_cash_flow, long_term_debt, shares_outstanding (the dei COVER-PAGE share count, so its period end is the cover date, after the quarter closed — that is the most current count the filing carries). Units are not all USD: shares_outstanding is in `shares` with currency null, eps_diluted in `USD/shares`. A discrete quarter the filer never filed — every Q4, and Q2/Q3 of cash-flow lines, which are filed year-to-date — is DERIVED as YTD(q) minus YTD(q-1) and comes back with `reported: false`, the subtraction named in `derivation` (fy_minus_9m / ytd_9m_minus_6m / ytd_6m_minus_3m) and both legs with their filings in `derived_from`; test `reported` if you will only accept a figure lifted from a filing. Per-share and balance-sheet figures are NEVER derived. Every non-answer is a named status — `unavailable` (the filer did not report it for that period; the periods that DO exist are listed, without values), `unsupported` (outside what v1 covers — a non-us-gaap filer, an unknown attribute, a non-USD unit), `ambiguous` (the company name matched two filers equally well; both are named), `conflicting` (two filings the same day disagree; both are returned and neither is picked), `partial` (a value with no accession behind it). Source: SEC EDGAR, XBRL financial facts, one publisher read once — see `corroboration`. Same response is served at POST https://gateway.pipeworx.io/v1/facts for non-MCP callers.
    ConnectorNo auth
  • 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 want the OFFICIAL REGISTERED ENTITY and the country is not the US, or when you do not know which country it is. Registers searched: Companies House (GB), Enhetsregisteret (NO), PRH/YTJ (FI), Sirene (FR), 法人番号公表サイト (JP), RIK e-Business Register (EE), and the GLEIF LEI crosswalk, which reaches jurisdictions we have no register pack for (DE, SE, AU, SG...). THIS TOOL REFUSES TO GUESS, and that is its point: when two different companies match a name equally well it answers `match_status: "ambiguous"` with BOTH, rather than naming one. A one-word trading name usually IS ambiguous — "Bolt", "Apple", "Next", "Sea", "DNB" each match a well-known group AND unrelated micro-entities whose registered name is exactly that word — so pass `country` when you know it. Every response names EVERY register it asked under `searched[]`, with that register's own as-of date and row count, and a register that could not be reached carries an `error` there rather than reading as zero rows: "we could not ask Companies House" is never the same answer as "this company is not in Britain". `related[]` holds entities that collapsed INTO the match — the same company seen through another register, or another country's arm sharing its LEI — so a multinational returns one answer rather than tying with itself. NOT A PEOPLE SEARCH: sole traders and other natural persons are excluded on the publisher's own legal-form field, never guessed from the shape of a name. For US public companies prefer resolve_entity (CIK + ticker + FIGI); the two share this same matcher, and resolve_entity returns these register fields too.
    ConnectorNo auth
  • 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 copy, and the GAP between the date asked for and the capture actually used (e.g. "Captured 1.5 day(s) before the requested date"). One call replaces the find-capture, fetch-record, parse-HTML chain. If no archive holds a capture within max_gap_days (default 30) it answers status "no_capture" and names the nearest capture before and after the date with their gaps, so a distant capture is never passed off as the page on that date. Every archive's outcome is listed in sources[]; one that timed out or errored says so with its upstream status, and if all of them failed the answer is error "archives_unavailable", not no_capture. Captures are immutable and cached by capture id; served_from says whether the text came from cache or upstream. Use archive_compare to see what changed between two dates.
    ConnectorNo auth
  • Run one allowlisted STATE-CHANGING kubectl command inside an Ankra-provisioned cluster (Hetzner, OVH, UpCloud, DigitalOcean or Scaleway) from a control-plane node over SSH-via-bastion, for recovering a cluster whose in-cluster ankra-agent is offline and which therefore cannot be reached any other way. Verbs, and when each is the right one: rollout_restart (the agent Deployment exists and looks healthy to its ReplicaSet but never checks in - the usual fix); rollout_undo (the agent self-upgraded and the new revision never checked in - roll back to the revision that worked); delete_pod (one named pod is stuck Terminating, or is bound to a node that is gone, so the ReplicaSet will not replace it); cordon and uncordon (stop scheduling onto a sick node, or allow it again). This is an allowlist, not a shell: it cannot exec, apply, patch, scale, drain or delete anything other than exactly one named pod, and it accepts no label selector on the delete path, so a mistaken confirmation costs at most one pod. Call ssh_kubectl_read FIRST to confirm what is actually broken - restarting a rollout that is failing to pull an image just repeats the failure. This changes a production cluster and requires confirmation. Not available for imported or managed-Kubernetes clusters, nor (yet) Proxmox/HPE Morpheus.
    Connector
    Destructive
    OAuth
  • Upload HTML or code and get a public share URL plus an edit token. Each call creates a new asset (no overwrite); content is public unless password-protected and auto-expires after expiresIn (default 7d, 0 = permanent). Anonymous uploads are rate-limited to 10 per hour per IP. Use view to read an asset back, list_assets to see your own files, or delete to remove one.
    ConnectorAPI key
  • Fetch a single asset by id and return its content, filename, creation time and share URL. Read-only and safe to retry; public assets need no auth, password-protected assets return an error with the share URL, and client-encrypted content is returned as stored. Use search_gallery to find an id, or list_assets for your own uploads.
    ConnectorAPI key
  • Return Oh My Share service metadata: version, REST and MCP endpoints, feature list, and per-IP rate limits (10 uploads/hour, 500 views/hour). Read-only, no auth, cheap to call. Use it once at startup to discover capabilities; use list_assets or search_gallery for actual content.
    ConnectorAPI key
  • 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 / popular / small" or "what does adding lodash cost me". Returns a summary block (is_latest, license, published_at, advisory_count, bundle_kb_min, bundle_kb_gz, dependency_count, has_esm, tree_shakeable), per-advisory detail, links, and a list of recent alternative versions. NPM ecosystem only in v1; PyPI / Maven / Cargo / Go fall under deps.dev:version directly. Partial failures degrade gracefully — bundlephobia's first measurement on a new version can take 5-30s; sources_failed will list it if it times out, the rest still returns.
    ConnectorNo auth
  • 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 direction that loses money). REQUIRES one of `market` (single-market mode) or `event` (basket/partition mode). SINGLE-MARKET: pass a market slug/URL + side (buy_yes|sell_yes|buy_no|sell_no, default buy_yes) + size_usd (default 1000 — max spend on buys, target proceeds on sells); walks the ladder and returns top_of_book, vwap_fill_price, slippage_pp, shares_filled, max_fillable_usd, verdict (clean|degraded|cannot_fill), fee_schedule ({category, taker_rate, exponent, maker_rebate_rate, fees_enabled, basis} — read off THIS market, never assumed free), fee_usd/fee_pp at the actual VWAP fill, breakeven_win_rate_taker (the win probability your side needs just to cover price + fee — ~51.8% on a 50c crypto taker fill, not 50%), breakeven_win_rate_maker (no fee charged to makers — any rebate is in fee_schedule.maker_rebate_rate), and all_in_cost_pp = slippage_pp + fee_pp. BASKET: pass an event slug/URL + side (sell_yes = capture overround by selling every leg, buy_yes = capture underround; default auto from partition sum) + size_usd interpreted as settlement notional S (shares per leg; each share pays $1); returns theoretical_sum vs realizable_sum (top-of-book vs VWAP across all legs), capture_ratio and profit_usd — both NET of every leg's own Polymarket taker fee (capture_ratio_gross/profit_usd_gross keep the pre-fee figures; per_leg[].fee_usd itemizes each leg, summed as fees_usd_total), per-leg fill detail, thin_legs[], max_clean_notional_usd, and forced_directional_risk naming the legs most likely to strand you unhedged. USE THIS before acting on any polymarket_arbitrage SELL/BUY-EVERY-LEG signal or any polymarket_edges trade above ~$500 — theoretical overround on thin books is not capturable, and partial basket fills convert an arb into an unhedged directional position (the dominant loss mode in real arb-bot P&L). Adverse selection while working resting orders is still not modeled.
    ConnectorNo auth