Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add livetennisapi/livetennisapi-mcp --skill polymarket-tennisgit clone --depth 1 https://github.com/livetennisapi/livetennisapi-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/livetennisapi/livetennisapi-mcp/polymarket-tennis)<a href="https://agentmods.dev/skills/livetennisapi/livetennisapi-mcp/polymarket-tennis"><img src="https://agentmods.dev/badge/skills/livetennisapi/livetennisapi-mcp/polymarket-tennis/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/livetennisapi/livetennisapi-mcp/polymarket-tennis"><img src="https://agentmods.dev/badge/skills/livetennisapi/livetennisapi-mcp/polymarket-tennis.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00179 | $0.03168 |
| Opus 5 | $0.00089 | $0.01584 |
| Sonnet 5 | $0.00036 | $0.00634 |
| Haiku 4.5 | $0.00018 | $0.00317 |
Grade A, and why
polymarket-tennis scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
100% identical to polymarket-tennis — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 194 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Polymarket / Kalshi tennis trading data
Vendor-authored, observe-only. This skill is maintained by the team behind the Live Tennis API. It teaches the
polymarket-tennispackage, which reads public market data and live scores. It contains no order execution, no wallet or private-key handling, no CLOB client, and no strategy advice. Execution is permanently out of scope. Nothing here is financial advice.
Hard guardrails (apply to every file you write with this skill)
- Observe-only. Never add order placement, wallet, private-key, or CLOB code to anything built on this package. If the user wants execution, it belongs in their own code behind a clearly separated seam, using the venue's own official interfaces, and this skill does not write it.
- Never hard-code a settlement rule. Retirement and walkover payouts differ by
venue (polymarket.com vs Polymarket US vs Kalshi) and by tour (ATP/WTA vs ITF).
Read the market's own text — Gamma
description(market.raw["description"]), Kalshirules_secondary— and print it. The reference matrix in references/settlement-rules.md is for the human, not for code branches. - Respect the free tier: 30 requests/minute, 100 requests/day. Every
LiveTennisClientcall costs one request; Gamma and Kalshi reads cost nothing.pmtennis watchis 1 request per poll at a 60 s default (minimum 30 s). A watcher that callslive_matches()+fixtures()per poll costs 2 per poll and must self-cap (the reference build caps at 96/day,--interval 300). - Detect match endings with
outcomeandevent_status, notstatus.statusis only the lifecycle (upcoming|live|completed|cancelled).outcomeiscompleted|retired|walkover|default|abandonedandnulluntil settled;event_statusis the feed designator (Retired,Walk Over,Cancelled,Postponed,Interrupted);withdrewnames who stopped. - Never guess a market-to-match pairing.
match_marketreturnsNoneon ambiguity; skip it. Useoverride_match_id/--match-idonly when the user supplies the id explicitly. - Tests stay offline. Use trimmed fixtures and
httpx.MockTransport; never put live calls in tests.
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 194 lines · 179 tokens per session scan A 1f2c537c2310
polymarket-tennis is a skill published in the GitHub repository livetennisapi/livetennisapi-mcp (158 stars, last pushed yesterday), licensed MIT. It adds 179 tokens to every session and 3,168 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to polymarket-tennis, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
prediction-markets
Use when the user asks about event probabilities, prediction market odds, what people are betting on, Polymarket/Kalshi prices, sports markets — or about the things you CANNOT get from a public API: historical price/volume/orderbook time series, smart-money positioning, whale leaderboards, wallet P&L, wallet identity…
crypto-data
Use for any crypto data question — token/coin prices, FX, commodities, stocks, OHLC history, DEX pairs and liquidity, DeFi TVL, yield/APY pools, or raw JSON-RPC against a chain; also when the user asks for on-chain SQL, wallet labels/net worth, social mindshare or crypto news, so they are told plainly what BlockRun…
polymarket-trading
Use when the user wants to actually PLACE, manage, or redeem bets on Polymarket (not just read odds — that's blockrunmarkets). Covers setup (deposit wallet, funding, approvals), buy/sell with confirm gating, positions, redeeming winnings, geoblock handling, and the end-to-end demo flow.
signal-to-trade-demo
Prepare or run a polished BlockRun trading demo that discovers a current Polymarket market, combines live price, probability history, smart-money, and liquidity evidence into a balanced signal, produces a real order dry-run, and verifies orders or positions. Use for live demos, signal-to-trade workflows, current…
surf
Surf (asksurf.ai) is RETIRED on BlockRun and the blockrunsurf tool was REMOVED in 0.49.0 — the gateway has answered every /v1/surf/ path with HTTP 410 endpointretired since 2026-09-06. Use this skill to route a former Surf question (on-chain SQL, wallet labels and net worth, CEX order books, social mindshare, news) to…
market-research
Use for informational market, industry, company, earnings, or public financial research with Axon, not personalized investment advice.