Search Demos
search_demosSearch and filter .dm_91 demo files in DEMO_PATH (local directory or s3:// URI). Returns up to N matching demos sorted by the chosen criterion. Supports filtering by recency, gametype, map, player, win/loss, minimum kills, and duration. Use deep_scan=true (or filters like pov_won/min_kills) to decode demos and get full rosters and scoreboards. NOTE: deep_scan is NOT supported when DEMO_PATH is an s3:// URI; only shallow (filename-based) filters work over S3. WARNING: deep_scan opens and fully reads every candidate demo file — it is expensive on large libraries. Avoid it when gametype, map, and player are your only filters: standard filenames already encode these fields. deep_scan is only necessary for roster-based player matching, pov_won, min_kills, min_duration_secs, or sort=longest.
When to Use
Use this tool when you need to search and filter .dm_91 demo files in demo_path (local directory or s3:// uri). returns up to n matching demos sorted by the chosen criterion. supports filtering by recency, gametype, map, player, win/loss, minimum kills, and duration. use deep_scan=true (or filters like pov_won/min_kills) to decode demos and get full rosters and scoreboards. note: deep_scan is not supported when demo_path is an s3:// uri; only shallow (filename-based) filters work over s3. warning: deep_scan opens and fully reads every candidate demo file — it is expensive on large libraries. avoid it when gametype, map, and player are your only filters: standard filenames already encode these fields. deep_scan is only necessary for roster-based player matching, pov_won, min_kills, min_duration_secs, or sort=longest.. This is part of the Mcps provider on xpay✦.
MCP Connection
Connect to xpay✦ to access this tool (and 87+ others):
{
"mcpServers": {
"xpay": {
"url": "https://mcp.xpay.sh/mcp?key=YOUR_API_KEY"
}
}
}
For Claude Code:
claude mcp add --transport http xpay "https://mcp.xpay.sh/mcp?key=YOUR_API_KEY"
How to Execute
Use the xpay✦ meta-tools to run this tool:
xpay_details— Get full input schema:xpay_details("quakelive/search_demos")xpay_run— Execute:xpay_run("quakelive/search_demos", { ...inputs })
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
pov_won | boolean,null | No | Filter for POV-player wins (true) or losses (false). Enables deep scan automatically. |
offset | integer,null | No | Number of results to skip before returning (for pagination) |
before | string,null | No | Only include demos recorded before this date (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) |
deep_scan | boolean,null | No | Force deep scanning of every candidate demo to populate full player roster, scoreboard, win/loss, and duration. Auto-enabled when using pov_won, min_kills, or min_duration_secs filters. |
max_age_days | number,null | No | Only include demos from the last N days (e.g. 7 for one week) |
sort | string,null | No | Sort order: 'recent' (default), 'oldest', 'largest', 'smallest', 'longest' |
min_size_bytes | integer,null | No | Minimum file size in bytes |
min_kills | integer,null | No | Minimum kill count for the POV player. Enables deep scan automatically. |
gametype | string,null | No | Filter by gametype short name: FFA, DUEL, TDM, CTF, CA, FT, etc. (case-insensitive) |
limit | integer,null | No | Maximum number of results to return (default 20) |
after | string,null | No | Only include demos recorded after this date (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) |
map | string,null | No | Filter by map name (case-insensitive substring match, e.g. 'campgrounds' or 'blood') |
min_duration_secs | integer,null | No | Minimum demo duration in seconds. Enables deep scan automatically. |
player | string,null | No | Filter by player name (case-insensitive substring). Matches POV player from filename; with deep_scan also matches any player in the roster. |
Pricing
- Cost: $0.02/call
- Balance check: Use
xpay_balanceto check remaining credits - Get your API key at xpay.tools — $5 free credits included
Related Skills
- Mcps (all tools) — 88 tools
- Add Player — $0.00/call
- Add Raw Snapshot — $0.00/call
- Add Server Command — $0.00/call
- Analyze Demo — $0.02/call
- Award Medal — $0.02/call
Links
- Tool page: https://xpay.tools/quakelive/search-demos/
- Provider: https://xpay.tools/quakelive/
- All tools: https://xpay.tools/explore
How to Execute
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
pov_won | booleannull | No | Filter for POV-player wins (true) or losses (false). Enables deep scan automatically. |
offset | integernull | No | Number of results to skip before returning (for pagination) |
before | stringnull | No | Only include demos recorded before this date (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) |
deep_scan | booleannull | No | Force deep scanning of every candidate demo to populate full player roster, scoreboard, win/loss, and duration. Auto-enabled when using pov_won, min_kills, or min_duration_secs filters. |
max_age_days | numbernull | No | Only include demos from the last N days (e.g. 7 for one week) |
sort | stringnull | No | Sort order: 'recent' (default), 'oldest', 'largest', 'smallest', 'longest' |
min_size_bytes | integernull | No | Minimum file size in bytes |
min_kills | integernull | No | Minimum kill count for the POV player. Enables deep scan automatically. |
gametype | stringnull | No | Filter by gametype short name: FFA, DUEL, TDM, CTF, CA, FT, etc. (case-insensitive) |
limit | integernull | No | Maximum number of results to return (default 20) |
after | stringnull | No | Only include demos recorded after this date (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) |
map | stringnull | No | Filter by map name (case-insensitive substring match, e.g. 'campgrounds' or 'blood') |
min_duration_secs | integernull | No | Minimum demo duration in seconds. Enables deep scan automatically. |
player | stringnull | No | Filter by player name (case-insensitive substring). Matches POV player from filename; with deep_scan also matches any player in the roster. |
Install Skill
Pricing
Cost
$0.02/call
Model
Flat rate
Provider
Mcps

