omiss-mcp
Click on "Deploy 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., "@omiss-mcpare any OMISS nets on the air right now?"
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.
omiss-mcp
MCP server for OMISS, the Old Man International Sideband Society: the net schedule, OMISS nets on the air now, member lookup, past nets and who checked in, the Statehood schedule, officers, awards and net statistics, through any MCP-compatible AI assistant.
Data from omiss.net's public pages; nets on the air from NetLogger. Part of the qso-graph project. No login or API key needed.
Install
uvx omiss-mcp # run it; nothing to install
pip install omiss-mcp # or install it into your own environmentRelated MCP server: qrz-mcp
Tools
Tool | Description | Key Parameters |
| Every net's band, UTC time, frequency, days, band coordinator and next run; holiday dates | — |
| OMISS nets on the air now, from NetLogger | — |
| One member: OM number, call, name, status, grid, state, county, last check-in | callsign or om_number |
| Past nets, newest first, optionally only a member's, a band's or a date's | callsign, om_number, band, date, net_control |
| One past net: net control, relays, notes, and the check-in list | net_id |
| 40m net dates and their free-call states, and the next one | — |
| Officers, band coordinators, committees, appointees, past presidents | — |
| The awards, with the IDs the other award tools take | — |
| An award's rules, or every award's summary | award_id |
| Who holds an award, newest first, or check one member | award_id, callsign, om_number |
| Nets per band, last net per band, top check-ins and net controls, last check-in by state | state, top |
| Save your callsign, for | callsign |
| Service version + upstream spec version (fleet identity attestation) | — |
What is OMISS?
OMISS is an amateur-radio society that runs SSB nets on HF, from 10 to 160 meters, every day of the week. Members exchange OM numbers on the nets and work toward the society's awards. Its website publishes the net schedule, the member roster, check-in history for every net, and the award rules and recipients.
Your Callsign
Only omiss_nets_on_air needs it: it asks NetLogger, which is told which station is asking. On first use the assistant asks for your callsign and saves it. You're asked once. The other tools don't need it.
Good Neighbour Policy
omiss.net is a volunteer-run club website, not an API. We read it gently:
Measure | Detail |
One request at a time | At most one request every 2 seconds, shared by every copy you run (Claude Desktop, Claude Code, a script) through a locked file in your settings folder. |
Response caching | Schedule, officers, Statehood, members and award recipients 24 hours; awards and rules 7 days; history and statistics 1 hour. |
Stale answers over errors | When the site is down or busy, the last answer comes back with its age rather than an error. |
Back-off | A "too many requests" or "unavailable" answer stops all requests for at least a minute, longer if the site asks. |
Request timeout | 20-second timeout. |
User-Agent header | Every request names this project, so the site's operators can see who is asking. |
NetLogger |
|
Security and Privacy
Every value is checked before it is sent: callsigns, OM numbers, bands from a fixed list,
YYYY,YYYY-MMorYYYY-MM-DDdates, numeric net IDs, and award IDs from the site's own list. Free text is never sent to omiss.net.No postal addresses or email addresses are ever returned, even where a page prints one.
Members are looked up one at a time, by callsign or OM number. There's no search by state, county or grid, and no roster download.
Quick Start
Configure your MCP client
omiss-mcp works with any MCP-compatible client. Add the server config and restart. The tools appear automatically.
Claude Desktop
Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"omiss": {
"command": "uvx",
"args": ["omiss-mcp"]
}
}
}Claude Code
Add to .claude/settings.json:
{
"mcpServers": {
"omiss": {
"command": "uvx",
"args": ["omiss-mcp"]
}
}
}ChatGPT Desktop
{
"mcpServers": {
"omiss": {
"command": "uvx",
"args": ["omiss-mcp"]
}
}
}Cursor
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"omiss": {
"command": "uvx",
"args": ["omiss-mcp"]
}
}
}VS Code / GitHub Copilot
Add to .vscode/mcp.json in your workspace:
{
"servers": {
"omiss": {
"command": "uvx",
"args": ["omiss-mcp"]
}
}
}Gemini CLI
Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):
{
"mcpServers": {
"omiss": {
"command": "uvx",
"args": ["omiss-mcp"]
}
}
}Installed with pip instead? Use "command": "omiss-mcp" in any config above.
Ask questions
"When is the OMISS 40m net, and on what frequency?"
"Is KI7MT an OMISS member? What's their OM number?"
"Which OMISS nets are on the air right now?"
"Which nets did OM 7212 check in to this year?"
"Who checked in to last night's 80m net?"
"What are the free-call states on the next 40m Statehood net?"
"What does the Alphabet Soup award require, and have I earned it?"
"Who ran the most OMISS nets as net control in the last 90 days?"
As a Python Library
The same code works without an AI, with the same spacing and cache:
from omiss_mcp.omiss import OmissSource
om = OmissSource()
me = om.member_lookup(callsign="KI7MT")["members"][0]
for net in om.checkin_history(om_number_=me["om_number"], date_="2026")["nets"]:
print(net["time"], net["name"], net["checkin_count"])Apps can name themselves, using ADIF's PROGRAMID and PROGRAMVERSION: OmissSource(program_id="MyLogger", program_version="1.0").
Testing Without Network
OMISS_MCP_MOCK=1 omiss-mcpMCP Inspector
omiss-mcp --transport streamable-http --port 8015Development
git clone https://github.com/qso-graph/omiss-mcp.git
cd omiss-mcp
uv sync --group dev
uv run pytestLicense
GPL-3.0-or-later
Available Tools
13 toolsget_version_infoGet Version InfoA
Get omiss-mcp's version, the omiss.net layout it reads, and the version of the records it returns.
Returns: service_name, service_version (PyPI), spec_version (omiss.net layout), contract_version.
| 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, so the description carries the full burden. It is a read-only 'Get' operation and the description adds useful behavioral context by explaining what each version number represents (PyPI, omiss.net layout, contract version). It does not state side effects or auth needs, but those are minimal for a zero-parameter version getter.
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?
Front-loaded with the core purpose, followed by a compact return-field list. Every sentence earns its place with no redundant 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 zero parameters and an output schema, the description is largely complete. It explains the return fields' meaning, though it slightly duplicates the output schema and lacks explicit usage guidance.
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?
There are zero parameters, so the baseline is 4. No parameter semantics are needed or missing.
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?
States a specific verb and resource ('Get omiss-mcp's version...'), and names the exact version dimensions returned. It is unambiguous and distinct from all omiss.net domain siblings.
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?
Usage is implied by the metadata nature of the tool, but the description never states when to call it or what alternatives exist. No when/when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_award_recipientsOmiss Award RecipientsA
List who holds an OMISS award, newest certificates first, or check one member.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | At most this many (default 100). | |
| award_id | Yes | The award's ID, from omiss_awards (e.g. ALPHABETSOUP). | |
| callsign | No | Only this station's certificates. | |
| om_number | No | Only this member's certificates. |
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 full behavioral burden. It usefully discloses result ordering (newest first) and the single-member check mode, but says nothing about permissions, rate limits, or pagination behavior beyond the schema's limit field.
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?
A single compact sentence that front-loads the primary list behavior before the secondary check mode. Every clause earns its place with no 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?
An output schema exists and schema coverage is complete, so return values and parameters need no further explanation. The only modest gap is the absence of any safety/read-only or access context in a tool that carries no annotations.
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 every parameter is documented in the schema, so baseline 3 applies. The description's 'check one member' hints that callsign/om_number act as single-member filters but adds no syntax or format detail beyond what the schema already provides.
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?
Names a specific verb (list/check) and resource (OMISS award recipients), and adds the ordering rule 'newest certificates first'. It does not, however, distinguish itself from the closely named siblings omiss_awards and omiss_award_rules, so the agent must infer the boundary.
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 phrase 'or check one member' implies the alternate mode (single-member lookup via callsign/om_number), giving implicit usage guidance. It never states explicitly when to prefer this over omiss_awards or omiss_award_rules, and offers no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_award_rulesOmiss Award RulesA
Get an OMISS award's rules, or (no award_id) every award's name, ID and summary.
| Name | Required | Description | Default |
|---|---|---|---|
| award_id | No | The award's ID, from omiss_awards or this tool (e.g. ALPHABETSOUP). |
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 burden alone. It usefully discloses the mode switch conditioned on award_id and the fields returned in list mode (name, ID, summary), which is genuine behavioral context. It says nothing about read-only nature, auth requirements, or volume/pagination of the 'every award' listing.
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?
A single sentence that front-loads the primary action and appends the conditional variant. No filler, no repetition of the title or schema.
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 only one optional parameter and an output schema that already documents return values, the description covers what an agent needs to invoke it correctly. The remaining gap is the absence of any safety or auth guidance, which for a read-only lookup tool is minor.
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 the baseline is 3, but the description adds meaning the schema cannot express: the semantic effect of omitting award_id (default empty string) is a full enumeration rather than a single lookup. It also points to omiss_awards as a source for the ID.
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?
States a specific verb and resource ('Get an OMISS award's rules') and clearly discloses the dual mode of operation, so an agent can tell it apart from the sibling omiss_awards listing tool. It stops short of naming a sibling explicitly, which keeps it from a 5.
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 parenthetical '(no award_id)' implies when the list mode applies, giving implied usage guidance. It never states when to use this tool versus omiss_awards or omiss_award_recipients, and offers no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_awardsOmiss AwardsA
List the OMISS awards that have recipients, with the award IDs the other award tools take.
Returns: awards with award_id and name.
| 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, so the description carries the full behavioral burden. It does disclose one real behavioral trait: results are restricted to awards that actually have recipients, which explains why the list may be shorter than the total award set. Beyond that it says nothing about permissions, caching, or ordering, and for a read-only, zero-parameter list tool that is a moderate rather than severe gap.
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 lines with the scope filter front-loaded, which is the right emphasis. The 'Returns: awards with award_id and name' line duplicates the output schema that already exists, so it is mildly redundant rather than wasteful.
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?
For a zero-parameter read tool with an output schema present, the description covers everything the agent needs: what is listed, the inclusion criterion, and how the returned IDs are consumed. Return-value structure need not be explained because the output schema supplies it.
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 tool takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The description correctly mentions the award_id values it emits, which is the nearest thing to a parameter contract since those IDs feed downstream tools.
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?
States a specific verb and resource ('List the OMISS awards') plus a meaningful scope qualifier ('that have recipients'), which separates it from what an unfiltered award list would be. It also ties its output IDs back to the other award tools, giving the agent a reason to call it before them. It stops short of explicitly naming which sibling tool consumes those IDs, so it is clear but not fully sibling-differentiating.
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 phrase 'with the award IDs the other award tools take' implies this is the entry point for the award family, so usage is reasonably inferable. However, there is no explicit when-to-use versus omiss_award_rules or omiss_award_recipients, and no stated precondition (e.g., that an award with zero recipients is intentionally excluded). Guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_checkin_historyOmiss Checkin HistoryA
List past OMISS nets, newest first: all of them, or only those a member checked in to, on a band, on a date, or run by a net control. omiss.net shows the latest 100 matches.
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | Only nets on this band: 10m, 12m, 15m, 17m, 20m, 40m, 80m or 160m. | |
| date | No | Only nets on this date: YYYY, YYYY-MM or YYYY-MM-DD (UTC). | |
| callsign | No | Only nets this station checked in to (e.g. KI7MT). | |
| om_number | No | Only nets this OMISS member checked in to (e.g. 7212). | |
| net_control | No | Only nets this station ran as net control. |
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 full behavioral burden. It usefully discloses newest-first ordering and a 100-match cap on omiss.net, but does not mention permissions, pagination behavior, rate limits, or whether filters combine in a specific way.
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 two tight sentences with no wasted words. It front-loads the core action and ordering before giving filters and the 100-match cap.
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 five optional filters, no annotations, and an output schema, the description is nearly complete: it covers purpose, filter dimensions, ordering, and result cap. It could add minor context about combining filters or expected result shape, but the output schema handles return values.
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 the parameter semantics are already fully documented. The description adds no syntax, format, or interaction details beyond the schema's own parameter descriptions, making 3 the appropriate baseline.
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?
States a specific verb (List) and resource (past OMISS nets), with additional scope: newest first and optional filtering. It does not explicitly distinguish this from sibling tools such as omiss_net_checkins or omiss_net_statistics, so it is clear but not fully sibling-differentiated.
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 implies usage through its filter list and 'all of them' phrasing, but gives no explicit when-to-use vs alternatives guidance and never names a sibling tool. An agent must infer that this is the history-listing tool rather than a current check-in or statistics tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_member_lookupOmiss Member LookupA
Look up one OMISS member by callsign or by OM number (give one).
| Name | Required | Description | Default |
|---|---|---|---|
| callsign | No | The member's callsign (e.g. KI7MT). | |
| om_number | No | The member's OMISS number (e.g. 7212). |
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 supplied, so the description carries the full behavioral burden. 'Look up' reasonably implies a non-destructive read, but the description says nothing about authentication needs, not-found behavior, or what happens when both identifiers are passed. An output schema exists, so return shape need not be restated.
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?
A single short sentence with the resource and the alternative-key constraint front-loaded; no filler 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?
For a simple two-parameter lookup with a full output schema, the description covers the essentials. It stops short of noting error/ambiguity handling (both keys, no match), which is the only meaningful gap.
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 both parameters are documented with examples, giving a baseline of 3. The description adds value beyond the schema by stating 'give one', surfacing a one-of constraint that the schema itself does not enforce (both keys are optional with defaults).
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?
States a specific verb (look up) and a single, well-bounded resource (one OMISS member), plus the two accepted identifier types. It is trivially distinguishable from siblings like omiss_checkin_history or omiss_officers, which return different entities.
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?
'(give one)' tells the agent that callsign and OM number are alternative keys, implying mutual exclusivity. However, there is no guidance on when to use this versus sibling lookups, nor what happens if both keys are supplied or neither resolves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_net_checkinsOmiss Net CheckinsA
Get one past OMISS net: its net control, relays, frequency, net control's notes, and the check-in list.
| Name | Required | Description | Default |
|---|---|---|---|
| net_id | Yes | The net's ID, from omiss_checkin_history. |
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 does disclose the return payload fields, which is useful, but it says nothing about permissions, whether check-in lists are paginated or size-limited, or how large/current the data is. Adequate but with clear gaps for a no-annotation tool.
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?
A single front-loaded sentence with no filler; the field list is informative rather than padded. Efficient and easy to scan.
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 doesn't need to detail return values (though it does, harmlessly), and the single required param is documented in the schema. It's missing only guidance on when to prefer it over related net/check-in tools.
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?
Only one parameter and schema description coverage is 100%, so the schema already explains net_id and its origin. The description adds no additional meaning about the identifier, so the baseline of 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?
Specific verb ('Get') plus a well-scoped resource ('one past OMISS net') and an enumeration of the fields returned (net control, relays, frequency, notes, check-in list). It doesn't name a sibling tool or contrast itself with omiss_checkin_history / omiss_nets_on_air, so it falls short of a 5.
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 word 'past' implies this is for historical nets as opposed to omiss_nets_on_air, and the schema points to omiss_checkin_history as the source of net_id, but the description itself gives no explicit when-to-use or when-not-to-use guidance or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_net_scheduleOmiss Net ScheduleA
Get the OMISS net schedule: every net's band, UTC time, frequency and window, days, holiday time and band coordinator, and the next time it runs; the schedule's footnotes (holidays, winter schedule); and the federal holiday dates the holiday schedule follows. Days and times are UTC, so an evening net in the Americas falls on the previous local day; use next_utc and as_of_utc to work out "today" in the user's time zone.
Returns: as_of_utc; nets with weekdays_utc, seasonal_utc, next_utc (or next_utc_note when it can't be worked out, e.g. winter-only nets); footnotes; notes; holidays.
| 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?
With no annotations, the description carries the full burden and does well: it enumerates returned fields, notes the next_utc_note fallback for winter-only nets, and explains UTC day-boundary implications. It does not explicitly state permissions or side effects, but 'Get' and the returned data strongly imply a read-only operation.
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 front-loaded with the verb and resource, then follows with a useful UTC caveat and a structured return summary. The return summary is somewhat redundant given the output schema, but it remains compact and every sentence adds practical context.
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?
For a zero-parameter tool with no annotations and an output schema, the description is complete enough: it explains the schedule contents, UTC quirks, and special return conditions. The only missing piece is routing guidance versus siblings, which is a separate usage-guidelines concern.
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 tool has zero input parameters, so the baseline score of 4 applies. The description references as_of_utc and next_utc as output fields rather than inputs, so no parameter-level meaning is missing.
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?
Specific verb 'Get' and resource 'OMISS net schedule' with a detailed enumeration of contents (bands, times, holiday info, next run). It clearly distinguishes this from a live on-air tool by content, but it does not explicitly name or contrast with siblings such as omiss_nets_on_air or omiss_statehood_schedule.
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?
No explicit when-to-use, prerequisites, or named alternatives are provided. The only usage advice concerns interpreting UTC output with next_utc and as_of_utc, not selecting this tool over sibling schedule/on-air tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_nets_on_airOmiss Nets On AirA
List OMISS nets on the air now, from NetLogger.
Returns: as_of_utc, and nets with server, name, frequency, band, mode, net control, when opened and how many are monitoring.
| 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?
With no annotations provided, the description carries the disclosure burden, and it does add real context: the data comes from NetLogger and represents a live snapshot ('as_of_utc', 'on the air now'). It does not discuss authentication, rate limits, or failure behavior, but for a zero-parameter read-only list tool the freshness/source disclosure is the meaningful behavioral fact.
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?
Effectively two sentences, front-loaded with the purpose and followed by the return fields. The return listing is somewhat redundant given an output schema exists, but it is compact and does not bury the purpose.
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?
An output schema exists, so the return-value enumeration is not strictly necessary, yet the description is otherwise complete for a zero-param, read-only listing tool: it names the source, the freshness, and the shape of results. Nothing an agent needs to call it correctly is missing.
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 tool takes zero parameters, so there is no parameter semantics to document — the baseline for this dimension is 4 by the rubric.
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?
States a specific verb and resource ('List OMISS nets on the air now') with a clear real-time scope that separates it from the schedule sibling, omiss_net_schedule. It stops short of naming any alternative tool explicitly, so it is clear but not maximally differentiated.
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?
'on the air now' implies the usage condition — use it when you want currently active nets rather than a schedule — but there is no explicit when-to-use/when-not statement and no named alternative (e.g. omiss_net_schedule).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_net_statisticsOmiss Net StatisticsB
Get OMISS net statistics for the last 52 weeks: nets per band, the last net on each band, and the leaderboards (most check-ins, most nets as net control).
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | How many leaderboard entries (default 10, at most 50). | |
| state | No | Also give this state's last check-in on each band (2 letters, e.g. ID). |
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 full disclosure burden; it does add useful context by stating the 52-week time window and the aggregate categories returned, and 'Get' implies a read-only operation. However, it says nothing about permissions, rate limits, or how the two parameter dimensions affect output volume.
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?
It is a single, front-loaded sentence that lists the output components without filler. The enumeration is efficient, though the wrapping and list style are slightly dense.
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?
An output schema exists, so the description need not explain return values, and it correctly omits them. But with no annotations and no usage guidance or behavioral constraints, an agent lacks routing and safety context that the description alone would need to supply.
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 both parameters (top and state) are already fully documented with defaults and constraints, making 3 the baseline. The description references the concepts behind them (leaderboards for top, per-band last net for state) but adds no syntax or format detail 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 names a specific verb ('Get') and resource ('OMISS net statistics') and enumerates the returned aggregates: nets per band, last net per band, and leaderboards. It is clear what the tool produces, though it never explicitly distinguishes itself from siblings like omiss_net_schedule or omiss_nets_on_air.
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?
There is no guidance on when to use this tool versus alternatives such as omiss_nets_on_air or omiss_net_schedule, both of which could plausibly answer similar questions about nets. Usage is only implied by the content of the returned statistics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_officersOmiss OfficersA
List OMISS's officers, directors, band coordinators, committees, appointees, past presidents and other VIPs.
Returns: sections, each with people (role, callsign, name, OM number).
| 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, so the description carries the burden. It does disclose the return shape (sections, each with people carrying role, callsign, name, OM number), which gives useful read-oriented context, but says nothing about permissions, rate limits, or whether the roster is static or current. For a low-risk no-param listing, this is acceptable but not rich.
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 tight lines, front-loaded with the resource scope and followed by the return structure. Slight overlap with the declared output schema, but no filler sentences.
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 no inputs and an output schema present, the description only needs to establish scope, which it does by enumerating the categories of people returned. It is complete enough for an agent to call it correctly, with only marginal benefit remaining for auth/sibling context.
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 tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies no input is needed and spends its words on output content instead.
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?
States a specific verb ('List') and a clearly bounded resource (OMISS officers, directors, band coordinators, committees, appointees, past presidents, VIPs). An agent can tell this apart from omiss_member_lookup or omiss_net_checkins by the roster-of-officials scope, though it never explicitly names a sibling.
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?
Usage is implied by the content — you call it to get organizational leadership rosters — but there is no explicit when-to-use, when-not-to-use, or pointer to alternatives such as omiss_member_lookup for individual members. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_set_callsignOmiss Set CallsignA
Save the user's amateur radio callsign, for omiss_nets_on_air. Needed once.
NetLogger is told which station is asking. The callsign is shared with netlogger-mcp, if it's installed. Ask the user for their own callsign; don't guess it.
| Name | Required | Description | Default |
|---|---|---|---|
| callsign | Yes | The user's callsign (e.g. KI7MT). |
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 behavioral load and discloses meaningful side effects: NetLogger is told which station is asking, and the callsign is shared with netlogger-mcp if installed. It does not describe overwrite behavior or error cases, but the key external sharing behavior is surfaced.
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 short and front-loaded: it saves the callsign, explains the NetLogger sharing, then gives the key instruction not to guess. 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?
For a single-parameter setter with an output schema, the description covers the essential context: what is saved, why it is needed once, the downstream sharing behavior, and the user-input requirement. Nothing critical is missing.
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 callsign parameter is already documented with an example. The description adds value by clarifying that it must be the user's own callsign and explicitly warning not to guess it.
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 states a specific verb and resource: saving the user's amateur radio callsign. It also ties the tool to omiss_nets_on_air, so an agent can distinguish this setter from the sibling read-oriented 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?
It gives clear usage context: the callsign is needed once, and the agent should ask the user for their own callsign rather than guessing. It does not name explicit alternatives or when-not-to-use conditions, but for a one-time setter that guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omiss_statehood_scheduleOmiss Statehood ScheduleA
Get the 40m Statehood schedule: each 40m net date and its free-call states, and the next one.
Returns: next, and schedule with date and free_call_states.
| 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?
With no annotations, the description carries the full behavioral burden. The verb 'Get' implies a read-only operation and it names the returned fields 'next' and 'schedule with date and free_call_states', but it does not explicitly state permissions, side effects, 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 front-loaded with the core action and scope, then briefly outlines the return shape. It contains no wasted phrasing and is appropriately sized for a simple zero-parameter getter.
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?
For a zero-parameter read-only schedule tool with an output schema, the description is nearly complete: it states the resource, scope, and key return fields. It could add sibling-routing context, but the essential information an agent needs to invoke it is present.
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 tool has zero parameters, so there are no parameter semantics to clarify beyond the baseline. The description appropriately adds no parameter information because none is 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 uses a specific verb and resource: 'Get the 40m Statehood schedule'. It further scopes the tool by explaining it covers 'each 40m net date and its free-call states, and the next one', which distinguishes it from generic net-schedule siblings.
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 state when to use this tool versus alternatives such as omiss_net_schedule or omiss_nets_on_air. Usage is only implied by the purpose, and no exclusions or selection conditions are provided.
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.
13 tool updates
v0.1.1- First observed
get_version_info - First observed
omiss_award_recipients - First observed
omiss_award_rules - First observed
omiss_awards - First observed
omiss_checkin_history - First observed
omiss_member_lookup - First observed
omiss_net_checkins - First observed
omiss_net_schedule - First observed
omiss_net_statistics - First observed
omiss_nets_on_air - First observed
omiss_officers - First observed
omiss_set_callsign - First observed
omiss_statehood_schedule
TDQS
Scored across 13 tools
Most tools target clearly different OMISS concepts: schedule vs. live nets, member lookup vs. awards, officers vs. statistics. However, omiss_checkin_history and omiss_net_checkins both deal with past net check-ins, and omiss_awards overlaps slightly with omiss_award_rules when called without an award_id. These overlaps are mild but could cause occasional misselection.
Most tools use an omiss_ prefix followed by a noun phrase (e.g., omiss_net_schedule, omiss_member_lookup, omiss_awards), which is fairly consistent. But a few deviate: get_version_info lacks the prefix and uses get_, while omiss_set_callsign mixes a verb into the pattern. The overall convention is readable but not uniform.
13 tools is well within the ideal 3-15 range for this domain. Each tool covers a distinct OMISS reference area (schedule, live nets, check-ins, awards, officers, statistics) and none appear redundant or excessive.
The surface covers major OMISS reference needs: schedules, live nets, member lookup, check-in history and detail, statehood schedule, officers, awards, and net statistics. Minor gaps exist, such as no explicit tool to browse upcoming nets beyond the schedule or to create/update user-specific data beyond setting a callsign, but these are unlikely to block common agent workflows.
Maintenance
Related MCP Connectors
Live web checks for AI agents: sitemaps, robots.txt, URL status, broken links, feeds, citations.
Web search, scraping, Google Trends and data lookups. Paid per call in USDC on Base via x402.
17 Base data tools for agents over Streamable HTTP MCP. Pay per call in USDC via x402; no API key.
Directory rating websites on AI-agent-friendliness. Search, lookup, and submit.
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.825 PyPIGPL 3.0
- AlicenseAqualityDmaintenanceMCP server for QRZ.com — callsign lookups, DXCC entity resolution, and logbook queries through any MCP-compatible AI assistant.63GPL 3.0
- AlicenseAqualityCmaintenanceEnables IOTA group lookup, island search, DXCC mapping, nearby groups, and programme statistics through any MCP-compatible AI assistant.7GPL 3.0
- AlicenseAqualityCmaintenanceEnables querying WSPR beacon data including live spots, band activity, top beacons, propagation paths, and SNR trends through any MCP-compatible AI assistant.922 PyPIGPL 3.0