fcc_part18_limit
Retrieve FCC Part 18 emission limits for ISM equipment by specifying frequency and equipment type to verify compliance.
Instructions
Get FCC Part 18 (ISM equipment) emission limits. Check ISM bands and limits for industrial/consumer ISM equipment.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| frequency_mhz | Yes | Frequency in MHz | |
| equipment_type | No | ISM equipment type |
Implementation Reference
- Handler function _part18_limit that executes the fcc_part18_limit tool logic: checks if the frequency is within an ISM band, then looks up Part 18.305 emission limits outside ISM bands based on equipment type (consumer/industrial).
@staticmethod def _part18_limit(arguments: dict[str, Any]) -> list[TextContent]: freq_mhz = arguments["frequency_mhz"] eq_type = arguments.get("equipment_type", "consumer") result = f"FCC Part 18 (ISM Equipment) at {freq_mhz} MHz\n{'=' * 50}\n\n" ism_band = check_ism_band(freq_mhz) if ism_band: result += "\u2713 WITHIN ISM BAND\n" result += f" Center: {ism_band['center_mhz']} MHz\n" result += f" Range: {ism_band['range_mhz'][0]} - {ism_band['range_mhz'][1]} MHz\n" if "notes" in ism_band: result += f" Notes: {ism_band['notes']}\n" result += " Fundamental emissions: No limit within ISM band\n" else: result += "\u2717 OUTSIDE ISM BANDS\n" result += " Standard emission limits apply (same as Part 15.209)\n\n" sec_data = PART18_LIMITS.get("section_18_305", {}) eq_data = sec_data.get(f"{eq_type}_ism", {}) limits = eq_data.get("emissions_outside_ism", []) limit = find_limit_for_frequency(limits, freq_mhz) if limit: result += f"\nLimits outside ISM bands ({eq_type.title()} ISM):\n" result += format_limit_result(limit) return [TextContent(type="text", text=result)] - Schema definition for the fcc_part18_limit tool in list_tools(), defining input parameters: frequency_mhz (required number) and equipment_type (optional string with enum consumer/industrial).
Tool( name="fcc_part18_limit", description="Get FCC Part 18 (ISM equipment) emission limits. Check ISM bands and limits for industrial/consumer ISM equipment.", inputSchema={ "type": "object", "properties": { "frequency_mhz": {"type": "number", "description": "Frequency in MHz"}, "equipment_type": {"type": "string", "enum": ["consumer", "industrial"], "description": "ISM equipment type"}, }, "required": ["frequency_mhz"], }, ), - src/mcp_emc_regulations/tools/fcc.py:136-137 (registration)Dispatch in call_tool() routing tool name "fcc_part18_limit" to the _part18_limit handler method.
elif name == "fcc_part18_limit": return self._part18_limit(arguments) - Helper function check_ism_band used by _part18_limit to check if a frequency falls within any ISM band defined in the part18_limits.json data.
def check_ism_band(freq_mhz: float) -> dict | None: """Check if frequency is in an ISM band.""" for band in PART18_LIMITS.get("ism_bands", {}).get("bands", []): range_mhz = band.get("range_mhz", [0, 0]) if range_mhz[0] <= freq_mhz <= range_mhz[1]: return band return None