{"openapi":"3.1.0","info":{"title":"Radio & RF Calc","version":"1.0.0","description":"Maidenhead grid squares, path loss, link budgets, Fresnel zones, antenna length, SWR, dBm conversion, Morse and phonetic spelling. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Radio & RF Calc: Maidenhead grid squares, path loss, link budgets, Fresnel zones, antenna length, SWR, dBm conversion, Morse and phonetic spelling. Use /maidenhead to convert coordinates and grid squares, /fspl for free-space path loss, /link-budget for received power and margin, /fresnel-zone for clearance radius, /dipole-length for antenna sizing, /swr for reflection maths, /dbm-convert for power units, /morse for code and timing and /phonetic-spell for NATO spelling. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://radio-calc.x402tookit.com"}],"paths":{"/dbm-convert":{"get":{"operationId":"dbm_convert","summary":"Convert power between dBm, dBW, mW and W, and the RMS and peak voltage across 50 ohms (or your impedance).","description":"Convert power between dBm, dBW, mW and W, and the RMS and peak voltage across 50 ohms (or your impedance).","tags":["dbm","power","rf","units"],"parameters":[{"name":"value","in":"query","required":true,"description":"The number to convert","schema":{"type":"number"}},{"name":"unit","in":"query","required":true,"description":"dbm, dbw, mw, w or vrms","schema":{"type":"string"}},{"name":"ohms","in":"query","required":false,"description":"Impedance for the voltage conversions (default 50)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"dbm":{"type":["null","number"]},"dbw":{"type":["null","number"]},"milliwatts":{"type":["null","number"]},"watts":{"type":["null","number"]},"ohms":{"type":["null","number"]},"vrms":{"type":["null","number"]},"vpeak":{"type":["null","number"]},"vpeakToPeak":{"type":["null","number"]},"dbuvAtImpedance":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"CONVERTED","summary":"30 dbm = 30 dBm = 1 W.","reasons":["dBm = 10 log10(P in mW); 0 dBm = 1 mW; 30 dBm = 1 W."],"dbm":30,"dbw":0,"milliwatts":1000,"watts":1,"ohms":50,"vrms":7.07107,"vpeak":10,"vpeakToPeak":20,"dbuvAtImpedance":136.99,"degraded":false,"notChecked":["peak envelope power versus average power for modulated signals","reactive loads","…1 more"],"source":"computed locally (P = V^2 / R)","asOf":"2026-10-12T00:54:03.444Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/dbm-convert"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/dbm-convert"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/dbm-convert"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/dbm-convert"}}]}}},"/dipole-length":{"get":{"operationId":"dipole_length","summary":"Wavelength and half-wave dipole, quarter-wave vertical and full-wave loop lengths for a frequency, with velocity factor.","description":"Wavelength and half-wave dipole, quarter-wave vertical and full-wave loop lengths for a frequency, with velocity factor.","tags":["antenna","dipole","wavelength","ham-radio"],"parameters":[{"name":"frequencyMHz","in":"query","required":true,"description":"Operating frequency in MHz (for example 14.2)","schema":{"type":"number"}},{"name":"velocityFactor","in":"query","required":false,"description":"Velocity factor of the wire or coax, 0.5 to 1 (default 0.95 for a bare-wire antenna end effect)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"frequencyMHz":{"type":["null","number"]},"wavelengthMeters":{"type":["null","number"]},"velocityFactor":{"type":["null","number"]},"halfWaveDipoleMeters":{"type":["null","number"]},"halfWaveDipoleFeet":{"type":["null","number"]},"eachLegMeters":{"type":["null","number"]},"eachLegFeet":{"type":["null","number"]},"quarterWaveVerticalMeters":{"type":["null","number"]},"quarterWaveVerticalFeet":{"type":["null","number"]},"fullWaveLoopMeters":{"type":["null","number"]},"rule468FeetOverall":{"type":["null","number"]},"freeSpaceQuarterWaveMeters":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"At 14.2 MHz: wavelength 21.112 m; half-wave dipole about 10.028 m (32.9 ft) overall, each leg 5.014 m.","reasons":["The classic 468 / f(MHz) feet rule corresponds to a velocity factor of about 0.95.","Cut slightly long and trim to the lowest SWR."],"frequencyMHz":14.2,"wavelengthMeters":21.1121,"velocityFactor":0.95,"halfWaveDipoleMeters":10.0283,"halfWaveDipoleFeet":32.901,"eachLegMeters":5.0141,"eachLegFeet":16.451,"quarterWaveVerticalMeters":5.0141,"quarterWaveVerticalFeet":16.451,"fullWaveLoopMeters":21.629,"rule468FeetOverall":32.958,"freeSpaceQuarterWaveMeters":5.278,"degraded":false,"notChecked":["height above ground, nearby objects and wire diameter, which shift resonance","tuning with an antenna analyser (always trim in the field)","…1 more"],"source":"computed locally (standard antenna rules of thumb)","asOf":"2026-10-12T00:54:03.704Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/dipole-length"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/dipole-length"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/dipole-length"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/dipole-length"}}]}}},"/fresnel-zone":{"get":{"operationId":"fresnel_zone","summary":"Fresnel zone radius for a radio path from distance and frequency, with the 60% clearance needed for a clear link.","description":"Fresnel zone radius for a radio path from distance and frequency, with the 60% clearance needed for a clear link.","tags":["fresnel","line-of-sight","rf","wireless"],"parameters":[{"name":"distanceKm","in":"query","required":true,"description":"Total path length in kilometres","schema":{"type":"number"}},{"name":"frequencyGHz","in":"query","required":true,"description":"Frequency in GHz (2.4 for 2.4 GHz Wi-Fi)","schema":{"type":"number"}},{"name":"zone","in":"query","required":false,"description":"Fresnel zone number 1 to 5 (default 1)","schema":{"type":"integer"}},{"name":"fromTransmitterKm","in":"query","required":false,"description":"Point along the path, in km from the transmitter (default: the midpoint)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"distanceKm":{"type":["null","number"]},"frequencyGHz":{"type":["null","number"]},"zone":{"type":["null","number"]},"pointKmFromTransmitter":{"type":["null","number"]},"radiusMeters":{"type":["null","number"]},"clearance60PercentMeters":{"type":["null","number"]},"midpointFirstZoneRadiusMeters":{"type":["null","number"]},"wavelengthMeters":{"type":["null","number"]},"earthBulgeAtPointMetersK43":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"Zone 1 radius is 17.67 m at 5 km from the transmitter; keep 60% (10.6 m) clear.","reasons":["Clearance of at least 60% of the first zone radius keeps diffraction loss negligible.","Midpoint first-zone radius is 17.67 m."],"distanceKm":10,"frequencyGHz":2.4,"zone":1,"pointKmFromTransmitter":5,"radiusMeters":17.672,"clearance60PercentMeters":10.603,"midpointFirstZoneRadiusMeters":17.672,"wavelengthMeters":0.12491,"earthBulgeAtPointMetersK43":1.47,"degraded":false,"notChecked":["terrain profile and obstacle heights along the path","Earth curvature bulge (about 0.0785 d^2 / k metres at the middle for d in km)","…1 more"],"source":"computed locally (Fresnel zone geometry)","asOf":"2026-10-12T00:54:03.969Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/fresnel-zone"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/fresnel-zone"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/fresnel-zone"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/fresnel-zone"}}]}}},"/fspl":{"get":{"operationId":"fspl","summary":"Free-space path loss in dB from distance and frequency, plus wavelength; or the range that produces a given loss.","description":"Free-space path loss in dB from distance and frequency, plus wavelength; or the range that produces a given loss.","tags":["path-loss","fspl","rf","propagation"],"parameters":[{"name":"frequencyMHz","in":"query","required":true,"description":"Frequency in MHz (for example 2437 for Wi-Fi channel 6)","schema":{"type":"number"}},{"name":"distanceKm","in":"query","required":false,"description":"Distance in kilometres (use this or lossDb)","schema":{"type":"number"}},{"name":"lossDb","in":"query","required":false,"description":"A path loss in dB, to find the distance that gives it","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"frequencyMHz":{"type":["null","number"]},"distanceKm":{"type":["null","number"]},"pathLossDb":{"type":["null","number"]},"wavelengthMeters":{"type":["null","number"]},"distanceInWavelengths":{"type":["null","number"]},"dbPerDoubling":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"At 100 MHz, 1 km of free space costs 72.44 dB.","reasons":["FSPL(dB) = 20 log10(d in km) + 20 log10(f in MHz) + 32.44.","Every doubling of distance or frequency adds 6.02 dB."],"frequencyMHz":100,"distanceKm":1,"pathLossDb":72.44,"wavelengthMeters":2.9979,"distanceInWavelengths":333.6,"dbPerDoubling":6.02,"degraded":false,"notChecked":["terrain, buildings, foliage, rain and atmospheric absorption","antenna gain and polarization (see /link-budget)","…2 more"],"source":"computed locally (Friis free-space formula)","asOf":"2026-10-12T00:54:04.233Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/fspl"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/fspl"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/fspl"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/fspl"}}]}}},"/link-budget":{"get":{"operationId":"link_budget","summary":"Link budget: received power, fade margin and maximum free-space range from TX power, antenna gains, losses and sensitivity.","description":"Link budget: received power, fade margin and maximum free-space range from TX power, antenna gains, losses and sensitivity.","tags":["link-budget","rf","lora","wifi"],"parameters":[{"name":"txPowerDbm","in":"query","required":true,"description":"Transmitter output power in dBm","schema":{"type":"number"}},{"name":"txGainDbi","in":"query","required":false,"description":"Transmit antenna gain in dBi (default 0)","schema":{"type":"number"}},{"name":"rxGainDbi","in":"query","required":false,"description":"Receive antenna gain in dBi (default 0)","schema":{"type":"number"}},{"name":"lossesDb","in":"query","required":false,"description":"Total cable, connector and other losses in dB (default 0)","schema":{"type":"number"}},{"name":"frequencyMHz","in":"query","required":true,"description":"Frequency in MHz","schema":{"type":"number"}},{"name":"distanceKm","in":"query","required":true,"description":"Link distance in kilometres","schema":{"type":"number"}},{"name":"sensitivityDbm","in":"query","required":false,"description":"Receiver sensitivity in dBm (for example -120 for LoRa), to get the margin and max range","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"eirpDbm":{"type":["null","number"]},"freeSpacePathLossDb":{"type":["null","number"]},"receivedPowerDbm":{"type":["null","number"]},"sensitivityDbm":{"type":["null","number"]},"fadeMarginDb":{"type":["null","number"]},"maxFreeSpaceRangeKm":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"LINK_HAS_MARGIN","summary":"Received power -89.2 dBm over 5 km at 868 MHz (path loss 105.2 dB). Margin 30.8 dB; free-space range limit 173.57 km.","reasons":["Received = TX 14 + gains 4 - losses 2 - path loss 105.2.","10 dB or more of margin is a common minimum to absorb fading."],"eirpDbm":14,"freeSpacePathLossDb":105.19,"receivedPowerDbm":-89.19,"sensitivityDbm":-120,"fadeMarginDb":30.81,"maxFreeSpaceRangeKm":173.572,"degraded":false,"notChecked":["terrain, obstructions, Fresnel-zone blockage, rain and foliage loss","fading, interference and noise rise","…2 more"],"source":"computed locally (Friis transmission equation)","asOf":"2026-10-12T00:54:04.496Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/link-budget"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/link-budget"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/link-budget"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/link-budget"}}]}}},"/maidenhead":{"get":{"operationId":"maidenhead","summary":"Convert latitude/longitude to a Maidenhead grid locator (4, 6 or 8 characters) or a locator to its centre and bounds.","description":"Convert latitude/longitude to a Maidenhead grid locator (4, 6 or 8 characters) or a locator to its centre and bounds.","tags":["maidenhead","grid-square","ham-radio","locator"],"parameters":[{"name":"latitude","in":"query","required":false,"description":"Latitude -90 to 90 (with longitude, to get a locator)","schema":{"type":"number"}},{"name":"longitude","in":"query","required":false,"description":"Longitude -180 to 180","schema":{"type":"number"}},{"name":"locator","in":"query","required":false,"description":"A locator such as JN58 or JN58td, to get its centre and bounds","schema":{"type":"string"}},{"name":"characters","in":"query","required":false,"description":"Locator length to produce: 4, 6 (default) or 8","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"]},"locator":{"type":["null","string"]},"characters":{"type":["null","number"]},"fourCharacter":{"type":["null","string"]},"sixCharacter":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"LOCATOR","summary":"48.1458, 11.625 is in JN58td.","reasons":[],"locator":"JN58td","characters":6,"fourCharacter":"JN58","sixCharacter":"JN58td","degraded":false,"notChecked":["datum differences (WGS84 assumed)","the 10-character extended locators used by some software"],"source":"computed locally (IARU Maidenhead system)","asOf":"2026-10-12T00:54:04.759Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/maidenhead"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/maidenhead"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/maidenhead"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/maidenhead"}}]}}},"/morse":{"get":{"operationId":"morse","summary":"Encode text to International Morse or decode dots and dashes, with duration at your words-per-minute (PARIS standard).","description":"Encode text to International Morse or decode dots and dashes, with duration at your words-per-minute (PARIS standard).","tags":["morse","cw","ham-radio","encoding"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text to encode, or Morse using . and - with spaces between letters and / between words (up to 500 characters)","schema":{"type":"string"}},{"name":"action","in":"query","required":false,"description":"encode (default) or decode","schema":{"type":"string"}},{"name":"wpm","in":"query","required":false,"description":"Speed in words per minute, 1 to 100 (default 20) for timing","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"]},"action":{"type":["null","string"]},"morse":{"type":["null","string"]},"text":{"type":["null","string"]},"unitsOfTime":{"type":["null","number"]},"ditMilliseconds":{"type":["null","number"]},"durationSeconds":{"type":["null","number"]},"wpm":{"type":["null","number"]},"parisUnits":{"type":["null","number"]},"unknownSymbols":{"type":["array","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"CONVERTED","summary":"... --- ...","reasons":[],"action":"encode","morse":"... --- ...","text":"SOS","unitsOfTime":27,"ditMilliseconds":60,"durationSeconds":1.62,"wpm":20,"parisUnits":50,"unknownSymbols":[],"degraded":false,"notChecked":["prosigns (such as AR or SK) beyond what the plain character table covers","Farnsworth spacing","…1 more"],"source":"computed locally (ITU-R M.1677-1 International Morse)","asOf":"2026-10-12T00:54:05.022Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/morse"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/morse"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/morse"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/morse"}}]}}},"/phonetic-spell":{"get":{"operationId":"phonetic_spell","summary":"Spell a callsign, code or name with the ICAO/NATO phonetic alphabet, digits included, flagging unspellable symbols.","description":"Spell a callsign, code or name with the ICAO/NATO phonetic alphabet, digits included, flagging unspellable symbols.","tags":["nato-alphabet","phonetic","callsign","spelling"],"parameters":[{"name":"text","in":"query","required":true,"description":"The text to spell (up to 200 characters), for example a callsign such as W1AW","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"]},"input":{"type":["null","string"]},"spelled":{"type":["null","string"]},"words":{"type":["array","null"],"items":{"type":"string"}},"letterCount":{"type":["null","number"]},"unspellable":{"type":["array","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"SPELLED","summary":"Whiskey One Alfa Whiskey","reasons":[],"input":"W1AW","spelled":"Whiskey One Alfa Whiskey","words":["Whiskey","One","…2 more"],"letterCount":4,"unspellable":[],"degraded":false,"notChecked":["national variants (for example 'Niner' and 'Fife' in radiotelephony pronunciation)","accented letters, which are spelled by their base letter","…1 more"],"source":"computed locally (ICAO spelling alphabet)","asOf":"2026-10-12T00:54:05.285Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/phonetic-spell"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/phonetic-spell"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/phonetic-spell"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/phonetic-spell"}}]}}},"/swr":{"get":{"operationId":"swr","summary":"SWR, reflection coefficient, return loss, mismatch loss and reflected power from SWR, a resistive load, or two power readings.","description":"SWR, reflection coefficient, return loss, mismatch loss and reflected power from SWR, a resistive load, or two power readings.","tags":["swr","return-loss","antenna","impedance"],"parameters":[{"name":"swr","in":"query","required":false,"description":"A standing wave ratio of 1 or more (use one of swr, loadOhms or forwardWatts + reflectedWatts)","schema":{"type":"number"}},{"name":"loadOhms","in":"query","required":false,"description":"A purely resistive load impedance in ohms","schema":{"type":"number"}},{"name":"lineOhms","in":"query","required":false,"description":"Line impedance in ohms for loadOhms (default 50)","schema":{"type":"number"}},{"name":"forwardWatts","in":"query","required":false,"description":"Forward power reading in watts","schema":{"type":"number"}},{"name":"reflectedWatts","in":"query","required":false,"description":"Reflected power reading in watts","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"swr":{"type":["null","number"]},"reflectionCoefficient":{"type":["null","number"]},"returnLossDb":{"type":["null","number"]},"mismatchLossDb":{"type":["null","number"]},"reflectedPowerPercent":{"type":["null","number"]},"deliveredPowerPercent":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ACCEPTABLE","summary":"SWR 2:1, reflection coefficient 0.3333, return loss 9.54 dB, 11.11% of power reflected.","reasons":["SWR = (1 + |gamma|) / (1 - |gamma|); return loss = -20 log10 |gamma|.","Up to 2:1 loses little power (about 0.5 dB) but many transmitters start to fold back."],"swr":2,"reflectionCoefficient":0.33333,"returnLossDb":9.542,"mismatchLossDb":0.5115,"reflectedPowerPercent":11.111,"deliveredPowerPercent":88.889,"degraded":false,"notChecked":["reactive (complex) loads, which need resistance and reactance","line loss, which makes SWR at the transmitter look better than at the antenna","…1 more"],"source":"computed locally (transmission-line reflection formulas)","asOf":"2026-10-12T00:54:05.548Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/swr"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/swr"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/swr"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://radio-calc.x402tookit.com/swr"}}]}}}}}