wspr-mcp
Allows GitHub Copilot to query WSPR propagation data such as recent spots, band activity, and propagation paths.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wspr-mcpShow me recent WSPR spots on 20m"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
wspr-mcp
MCP server for WSPR (Weak Signal Propagation Reporter) beacon data — live spots, band activity, top beacons, propagation paths, SNR trends, and more through any MCP-compatible AI assistant.
Data from wspr.live (~2.7 billion spots, 2008-present). Part of the qso-graph project. No authentication required — all public data.
Install
pip install wspr-mcpRelated MCP server: qrz-mcp
Tools
Tool | Description | Key Parameters |
| Recent WSPR spots with flexible filtering | callsign, band, hours, grid, min/max SNR, min distance |
| Per-band spot counts, station counts, distances, and SNR | hours |
| Top transmitters ranked by spot count or max distance | band, hours, sort_by (spots/distance), limit |
| Top receivers ranked by spot count or max distance | band, hours, sort_by (spots/distance), limit |
| Propagation between two locations — auto-widens to field-level proxy for sparse endpoints | tx, rx, band, hours |
| All WSPR activity in/out of a Maidenhead grid square | grid (2 or 4 char), band, hours |
| Longest distance WSPR paths in a time window | band, hours, min_distance, limit |
| Hourly SNR trend for a specific path over time | tx, rx, band, hours |
| Service version + upstream spec version (fleet identity attestation) | — |
What is WSPR?
WSPR beacons transmit a 2-minute encoded signal at very low power (typically 200 mW to 5 W). Each decoded spot proves a propagation path exists between two locations on a specific band. With thousands of beacons worldwide transmitting 24/7, WSPR provides continuous, automated propagation monitoring across all HF bands.
Good Neighbour Policy
wspr.live is a volunteer-run service that mirrors all wsprnet.org data into a public ClickHouse database. We take our responsibility as a good neighbour seriously:
Measure | Detail |
Rate limiting | 3 seconds between requests (20 req/min max) |
Circuit breaker | Opens after 3 consecutive failures; exponential backoff up to 5 minutes. Prevents hammering a struggling service. |
Time-bounded queries | Every query filters by time (max 72 hours). No unbounded full-table scans. |
Band filtering | Queries filter by band whenever the user provides one — this hits wspr.live's indexes efficiently. |
Column selection | We SELECT only the columns each tool needs (8-10 per query), never |
Result limits | All queries cap results (200 spots, 50 leaderboard entries). |
Response caching | 2-10 minute TTL per tool. Identical queries within the window hit local cache with zero network traffic. |
Request timeout | 20-second timeout — we don't hold connections open on a shared service. |
User-Agent header | Every request identifies itself as |
If wspr.live is down or overloaded, the circuit breaker backs off automatically. We don't retry in a tight loop.
Quick Start
No credentials needed — just install and configure your MCP client.
Configure your MCP client
Claude Desktop
Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"wspr": {
"command": "wspr-mcp"
}
}
}Claude Code
Add to .claude/settings.json:
{
"mcpServers": {
"wspr": {
"command": "wspr-mcp"
}
}
}ChatGPT Desktop
{
"mcpServers": {
"wspr": {
"command": "wspr-mcp"
}
}
}Cursor
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"wspr": {
"command": "wspr-mcp"
}
}
}VS Code / GitHub Copilot
Add to .vscode/mcp.json in your workspace:
{
"servers": {
"wspr": {
"command": "wspr-mcp"
}
}
}Gemini CLI
Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):
{
"mcpServers": {
"wspr": {
"command": "wspr-mcp"
}
}
}Ask questions
"Show me recent WSPR spots on 20m"
"What bands are open right now?"
"Who are the top WSPR beacons on 20m today?"
"What are the longest WSPR paths in the last 24 hours?"
"Is there propagation between Idaho (DN13) and central Europe (JN48)?"
"Any WSPR paths between DN13 and Bouvet (JD15)?" (auto-widens to DN↔JD if no exact match)
"What's happening in grid square JN48?"
"How's the SNR trending between K9AN and G8JNJ on 20m?"
"Who are the best WSPR receivers sorted by distance?"
Testing Without Network
WSPR_MCP_MOCK=1 wspr-mcpMCP Inspector
wspr-mcp --transport streamable-http --port 8009Development
git clone https://github.com/qso-graph/wspr-mcp.git
cd wspr-mcp
pip install -e .License
GPL-3.0-or-later
Available Tools
9 toolsget_version_infoA
Get wspr-mcp service version and upstream spec version.
Returns the running PyPI version of wspr-mcp and the wspr.live ClickHouse schema revision in use. Use this to confirm fleet alignment across MCP deployments — agents can compare service_version and spec_version across servers to detect drift without going outside the MCP protocol.
Returns: service_name, service_version (PyPI), and spec_version (wspr.live schema).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description fully discloses behavior: it is a read-only operation that returns specific fields (service_name, service_version, spec_version). No destructive or complex side effects are implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise, with a clear front-loaded statement and an additional paragraph explaining the use case. It could be slightly tighter, but it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema implied by 'Returns:', the description covers all needed aspects: what it does, why to use it, and what it returns. It is complete for a simple utility tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description adds value by explaining the return fields and purpose, but no parameter details are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves wspr-mcp service and upstream spec version, with specific verbs 'Get' and 'Returns'. It distinguishes from sibling tools that focus on wspr data like band activity or spots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use for confirming fleet alignment and detecting drift across MCP deployments. It does not mention when not to use, but given its simplicity and lack of sibling overlap, this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wspr_band_activityA
Get per-band WSPR activity summary.
Shows spot counts, TX/RX station counts, average and max distance, and average SNR for each band. The best indicator of which bands are open right now.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Time window in hours (1-6, default 1). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It clearly describes a read-only summary operation with no side effects. Could mention data source or limits, but the behavior is transparent enough for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: purpose statement, list of outputs, and a usage hint. No redundant words, front-loaded with key information. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and an output schema (not shown but exists), description lists all output fields (spot counts, station counts, distance, SNR). Adequate for an agent to understand expected results without needing the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter 'hours' with 100% schema description coverage (time window, range, default). Description does not add extra meaning beyond what the schema provides, so score is baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Get per-band WSPR activity summary' with specific details (spot counts, station counts, distance, SNR). The closing sentence 'best indicator of which bands are open right now' distinguishes it from sibling tools like wspr_grid_activity or wspr_longest_paths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: 'best indicator of which bands are open right now' implies when to use. However, no explicit guidance on when not to use or alternatives among siblings. Still, the description helps an agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wspr_grid_activityA
Get all WSPR activity in or out of a Maidenhead grid square.
Shows summary stats and recent spots for a geographic area. Use 2-character grid (e.g., DN) for a wide area or 4-character (e.g., DN13) for a specific region.
| Name | Required | Description | Default |
|---|---|---|---|
| grid | Yes | Maidenhead grid square — 2 char (DN) or 4 char (DN13). | |
| band | No | Filter by band (e.g., 20m). Empty for all bands. | |
| hours | No | Time window in hours (1-72, default 24). | |
| limit | No | Maximum recent spots to return (1-200, default 50). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. Mentions 'summary stats and recent spots' but does not explicitly state read-only nature, safety, or other behavioral traits. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very concise: three sentences, front-loaded with main purpose, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given presence of output schema and 4 parameters, description covers the key usage (grid format, summary/spots) but could elaborate on other parameters (band, hours, limit) or provide examples. Still reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented in schema. Description adds no additional meaning beyond what schema already provides (e.g., grid format advice is already in schema description). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves WSPR activity for a grid square, using specific verbs ('Get all') and resource ('Maidenhead grid square'). Differentiates from sibling tools (wspr_band_activity, wspr_spots) by focusing on grid-based queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on grid format choice (2-char vs 4-char) for wide vs specific regions. However, does not explicitly contrast with sibling tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wspr_longest_pathsA
Get the longest WSPR paths in the given time window.
WSPR's precise timing and low power make it the gold standard for detecting marginal propagation. Long paths here prove the band is open.
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | Filter by band (e.g., 20m, 10m). Empty for all bands. | |
| hours | No | Time window in hours (1-72, default 24). | |
| limit | No | Maximum paths to return (1-50, default 20). | |
| min_distance | No | Minimum distance in km (e.g., 15000 for near-antipodal). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. Only states the tool is for reading longest paths but omits any behavioral traits like cost, caching, or side effects. Minimal transparency beyond purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. First directly states purpose, second adds relevant context about WSPR's significance. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 4 optional parameters, output schema exists. Description covers purpose but lacks behavioral context (e.g., whether the tool is expensive). Adequate but not comprehensive for a complex radio propagation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 4 parameters with descriptions (100% coverage). Description adds no extra semantic meaning; it only mentions 'time window' which is already in schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get the longest WSPR paths in the given time window.' Verb 'get' and resource 'longest paths' are specific. Distinguishes from siblings like wspr_spots or wspr_propagation by focusing on longest paths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for detecting band openness via long paths ('Long paths here prove the band is open'), but no explicit comparison to sibling tools or when-not-to-use. Agent must infer context from WSPR significance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wspr_propagationA
Get WSPR-derived propagation between two locations.
Shows which bands have been open between two endpoints, with spot counts, SNR statistics, and hours of opening. Accepts callsigns or grid squares (or a mix). Searches both directions automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| tx | Yes | First endpoint — callsign (e.g., KI7MT) or grid (e.g., DN13). | |
| rx | Yes | Second endpoint — callsign (e.g., G8JNJ) or grid (e.g., IO91). | |
| band | No | Filter to a specific band (e.g., 20m). Empty for all bands. | |
| hours | No | Time window in hours (1-72, default 24). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that it searches both directions automatically and returns specific statistics, but lacks details on data recency, rate limits, or potential limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (under 50 words) with front-loaded purpose. Every sentence adds value, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (not shown) and 4 parameters, the description covers the main inputs, outputs, and key behavior (bidirectional search). It is sufficiently complete for an agent to understand the tool's function, though the time window parameter could use a brief mention.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds value by mentioning that it accepts callsigns or grid squares (already in schema) and notably states 'Searches both directions automatically,' which clarifies behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets WSPR-derived propagation between two locations, listing specific outputs (bands, spot counts, SNR stats, hours). It distinguishes from sibling tools (e.g., wspr_spots, wspr_band_activity) by focusing on propagation between two endpoints and mentioning bidirectional search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains it accepts callsigns or grid squares, giving clear context for use. However, it does not provide explicit guidance on when not to use it or compare to alternatives, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wspr_snr_trendA
Get SNR trend over time for a specific WSPR path.
Shows hourly SNR buckets for a path between two endpoints. Useful for seeing when a band opens and closes on a specific path, and how signal strength varies over time.
| Name | Required | Description | Default |
|---|---|---|---|
| tx | Yes | First endpoint — callsign (e.g., K9AN) or grid (e.g., EN50). | |
| rx | Yes | Second endpoint — callsign (e.g., G8JNJ) or grid (e.g., IO91). | |
| band | No | Filter to a specific band (e.g., 20m). Empty for all bands. | |
| hours | No | Time window in hours (1-72, default 24). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It clearly states the tool reads historical data ('Get SNR trend over time') and returns 'hourly SNR buckets'. No destructive or auth details are needed for this read-only tool, and the description adequately discloses its non-mutating nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no wasted words. The first sentence immediately states the core purpose, followed by concise elaboration. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown), so explanation of return values is not required. The description covers the main intent and usage scenarios adequately. Minor omission: no mention of pagination or data format, but the output schema likely covers that. For a simple parameter set, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already provides clear descriptions for each parameter (e.g., 'First endpoint — callsign or grid'). The description adds overall context by explaining the 'path between two endpoints' but does not add per-parameter details beyond the schema. Baseline 3 is appropriate for high coverage with minimal extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource combination ('Get SNR trend over time for a specific WSPR path') and distinguishes the tool from siblings like wspr_spots or wspr_band_activity by focusing on trend analysis for a specific path. This leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use cases ('seeing when a band opens and closes on a specific path, and how signal strength varies over time'). While it does not explicitly state when not to use or mention alternatives, the context from sibling tools helps; however, an explicit when-not would elevate this score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wspr_spotsB
Get recent WSPR spots.
WSPR beacons transmit every 2 minutes on precise frequencies. Each spot is a 2-minute integration proving a propagation path exists.
| Name | Required | Description | Default |
|---|---|---|---|
| callsign | No | Filter by TX or RX callsign (e.g., KI7MT, K9AN). Empty for all. | |
| band | No | Filter by band (e.g., 20m, 40m, 10m). Empty for all bands. | |
| hours | No | Time window in hours (1-72, default 24). | |
| limit | No | Maximum spots to return (1-200, default 50). | |
| grid | No | Filter by grid square prefix (e.g., DN13, FN31). Matches TX or RX. | |
| min_snr | No | Minimum SNR in dB (e.g., -20). Filter out weak signals. | |
| max_snr | No | Maximum SNR in dB (e.g., -5). Filter out strong signals. | |
| min_distance | No | Minimum path distance in km (e.g., 5000 for DX only). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions that WSPR beacons transmit every 2 minutes and spots represent 2-minute integrations, but does not disclose other behaviors such as data freshness limits, pagination behavior, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences that directly state the purpose and add key context about WSPR spots. No redundant information; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters and an output schema (not shown), the description does not explain return values or typical usage patterns. It provides basic context but lacks guidance on how to interpret spots or combine filters. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters have descriptions in the schema. The description adds no additional meaning beyond the schema; it only restates the tool's purpose. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get recent WSPR spots', specifying the verb and resource. Additional context about WSPR beacon transmission intervals and integration periods distinguishes it from sibling tools like wspr_band_activity or wspr_grid_activity, which aggregate spots differently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or compare with sibling tools, leaving the agent to infer usage from the name and parameter schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wspr_top_beaconsA
Get top WSPR transmitters ranked by spot count or max distance.
Shows the most active or most far-reaching WSPR beacon operators. Useful for finding who's putting out a big signal on a band.
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | Filter by band (e.g., 20m). Empty for all bands. | |
| hours | No | Time window in hours (1-72, default 24). | |
| sort_by | No | Ranking criteria — "spots" (most heard) or "distance" (farthest reach). | spots |
| limit | No | Number of results (1-50, default 20). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of transparency. It explains the ranking criteria (spot count, max distance) but does not disclose behavioral traits such as whether results are live cached, what time window is used (beyond the hours parameter), or how ties are handled. It is adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences front-load the action and value. Every sentence is purposeful with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, an output schema, and sibling tools, the description covers the core purpose but lacks details on result behavior (e.g., pagination, empty results, ordering ties). It is minimally complete for a simple tool but could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so parameters are well documented. The description adds minimal semantic context beyond the schema (e.g., 'ranked by spot count or max distance' reinforces the sort_by parameter). It does not introduce new meaning or clarify format or units.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves top WSPR transmitters ranked by spot count or max distance. It mentions 'beacon operators', distinguishing from sibling tools like 'wspr_top_spotters' which likely focus on spotters. However, it does not explicitly differentiate from 'wspr_spots' or other related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a general use case ('finding who's putting out a big signal on a band') but lacks explicit guidance on when to use this tool versus alternatives like 'wspr_top_spotters' or 'wspr_spots'. No when-not-to-use or comparative context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wspr_top_spottersA
Get top WSPR receivers ranked by spot count or max distance.
Shows the most prolific or most sensitive WSPR receiving stations. Useful for finding good receivers to monitor for propagation.
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | Filter by band (e.g., 20m). Empty for all bands. | |
| hours | No | Time window in hours (1-72, default 24). | |
| sort_by | No | Ranking criteria — "spots" (most received) or "distance" (farthest heard). | spots |
| limit | No | Number of results (1-50, default 20). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations available, so description carries full burden. It describes a read operation ('Get') and ranking criteria, but lacks details on data freshness, rate limits, or any side effects. Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states core purpose, second elaborates on utility. No redundant words, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values. It covers purpose, usage, and parameter context sufficiently for an agent to select and invoke the tool, though could hint at data source or recency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already documented. The description adds broad context about ranking (sort_by) but does not provide additional semantic detail beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with 'Get top WSPR receivers' specifying a clear verb and resource, and mentions ranking by spot count or max distance, distinguishing this from sibling tools like wspr_spots or wspr_top_beacons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Useful for finding good receivers to monitor for propagation,' giving clear use case guidance. However, it does not explicitly state when not to use or name alternatives, though sibling context provides differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v0.3.2- First observed
get_version_info - First observed
wspr_band_activity - First observed
wspr_grid_activity - First observed
wspr_longest_paths - First observed
wspr_propagation - First observed
wspr_snr_trend - First observed
wspr_spots - First observed
wspr_top_beacons - First observed
wspr_top_spotters
TDQS
Each tool targets a unique aspect of WSPR data: version, band activity, grid activity, propagation paths, SNR trends, raw spots, and top stations. No two tools have overlapping purposes, and descriptions clearly differentiate them.
All tool names follow a consistent pattern: 'wspr_' prefix followed by a descriptive noun phrase in snake_case (e.g., wspr_band_activity, wspr_grid_activity). get_version_info is the only exception but uses a standard verb_noun pattern.
With 9 tools, the server is well-scoped for WSPR data retrieval. Each tool serves a distinct analytical need without overwhelming the agent with too many options.
The tool surface covers core WSPR query operations: activity by band/grid, propagation analysis, spots, and top stations. Minor gaps exist (e.g., no tool for aggregated statistics or historical comparison), but it covers the main use cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Real-time planetary signal engine and Model Context Protocol (MCP) server for autonomous AI agents.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for HamQTH.com — callsign lookup, DX cluster spots, Reverse Beacon Network, DXCC resolution, and more through any MCP-compatible AI assistant.8GPL 3.0
- AlicenseAqualityFmaintenanceMCP server for QRZ.com — callsign lookups, DXCC entity resolution, and logbook queries through any MCP-compatible AI assistant.62GPL 3.0
- AlicenseAqualityDmaintenanceEnables IOTA group lookup, island search, DXCC mapping, nearby groups, and programme statistics through any MCP-compatible AI assistant.7GPL 3.0
- AlicenseAqualityDmaintenanceMCP server for Parks on the Air (POTA) providing live activator spots, park details, activator/hunter stats, and scheduled activations through any MCP-compatible AI assistant.81GPL 3.0
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/qso-graph/wspr-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server