此 MCP 可以做什么
Designs and analyzes RF transmitters, receivers, T/R modules, PCB stackups, link budgets, power delivery, thermal performance, and compliance.
工具
输入模式
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'The draft passage to check, verbatim. Pass the prose the end user will actually read â\x80\x94 including tables and captions, since a figure in a table is a figure. Markdown is fine.'}}}
输入模式
{'type': 'object', 'required': ['frequency', 'target_output_power'], 'properties': {'region': {'type': 'string', 'description': "Target market / regulatory region (e.g. 'USA', 'Europe', 'Global'). Set it when the user states their market so the design-time power clamp can enforce the right limits â\x80\x94 an EU/Europe design with a known antenna gain is held to the ETSI e.i.r.p. limit (EN 300 328 / EN 301 893), not just the FCC ISM conducted limit."}, 'bandwidth': {'type': 'number', 'description': 'Signal bandwidth in MHz (optional).'}, 'frequency': {'type': 'number', 'description': 'Operating frequency in GHz (scalar).'}, 'application': {'type': 'string', 'description': "Application context (e.g. satcom_c_band, 5g_cellular, wifi_wlan). Defaults to 'general'. For a drone, send the most specific link the user names: drones_digital_video (digital/OFDM video: the PA is judged on LINEAR power), drones_analog_video (analog FM video: saturated power, plus the FCC 15.249 licence note) or drones_control_telemetry; plain 'drones' means the modulation is unknown (the PA is judged on P1dB)."}, 'user_request': {'type': 'string', 'description': "The end user's own words that prompted this call, verbatim. Used to verify that the figures you pass were stated by your user rather than inferred. Omit it and the results will be labelled caller-asserted."}, 'input_power_dbm': {'type': 'number', 'description': "The power the user's radio or signal source delivers into the chain, in dBm (e.g. 0 or -10), ONLY when the user states it. It is the INPUT, never the target output. Omit it when not stated â\x80\x94 the result then says which level was assumed."}, 'protected_bands': {'type': 'array', 'items': {'type': 'object', 'required': ['source'], 'properties': {'name': {'type': 'string'}, 'fLowHz': {'type': 'number'}, 'source': {'type': 'string'}, 'fHighHz': {'type': 'number'}, 'requiredRejectionDb': {'type': 'number'}}}, 'description': "Bands another radio on the same platform listens on (e.g. a drone's GNSS receiver), checked against the filters after the PA. Only when the user asks to protect a band. A cited ITU RNSS band is named by source ('table:rnss_1164_1215', 'table:rnss_1215_1240', 'table:rnss_1240_1300', 'table:rnss_1559_1610', 'table:rnss_5010_5030') and needs no edges; a band the user states uses source 'user' with name, fLowHz and fHighHz. requiredRejectionDb ONLY when the user states it â\x80\x94 it narrows the filter choice. Never invent an edge or a requirement."}, 'antenna_gain_dbi': {'type': 'number', 'description': 'Antenna gain in dBi. Set it when the user states their antenna so an EU/ETSI design can enforce the e.i.r.p. limit at the real gain (conducted ceiling = e.i.r.p. limit â\x88\x92 antenna gain); without it the ETSI clamp does NOT engage (no 0 dBi assumption is made in the design).'}, 'harmonic_2nd_dbc': {'type': 'number', 'description': 'The 2nd-harmonic limit at the output in dBc (a negative number, e.g. -40), ONLY when the user states one. The filters after the PA are then chosen and judged against it. Never guess it and never derive it from a regulation.'}, 'hopping_channels': {'type': 'integer', 'description': "Drone control/telemetry only: the number of hopping channels the link uses, WHEN THE USER STATES IT. 50 or more lifts the design ceiling from FCC 15.247(b)(2)'s 24 dBm to 30 dBm. Never guess it."}, 'digital_modulation': {'type': 'boolean', 'description': 'Drone control/telemetry only: true WHEN THE USER STATES the link uses digital modulation (FCC 15.247(b)(3)), which lifts the 24 dBm ceiling to 30 dBm. Never guess it.'}, 'input_voltage_max_v': {'type': 'number', 'description': 'Highest voltage the board supply reaches, in volts (optional; e.g. a fully charged battery). Only when the user STATES it. Pair with input_voltage_min_v.'}, 'input_voltage_min_v': {'type': 'number', 'description': 'Lowest voltage the board supply reaches, in volts (optional; e.g. a battery at cut-off). Only when the user STATES it â\x80\x94 never derive it from a cell count or chemistry. Give it together with input_voltage_max_v and a main_board_input_voltage inside the two; the power tree then picks regulators that work across the whole span.'}, 'target_output_power': {'type': 'number', 'description': 'Target transmitter output power in dBm.'}, 'transmit_bias_pulsed': {'type': 'boolean', 'description': 'Pulsed designs only: true when the user says the amplifier bias (gate or drain) is switched off between pulses, false when it stays on. Omit when not stated â\x80\x94 the idle draw between pulses is then counted as heat.'}, 'internally_matched_only': {'type': 'boolean', 'description': "Prefer internally 50-ohm matched parts (optional). A preference, not a filter: an unmatched PA can still win on score, and the result's warnings then say so."}, 'main_board_input_voltage': {'type': 'number', 'description': 'Board DC supply voltage in volts that the power tree steps down/up to the per-component rails (optional; defaults to 12 V). Set it when the user states their supply rail, e.g. a 28 V or 48 V bench/battery input.'}, 'transmit_duty_cycle_percent': {'type': 'number', 'description': 'Transmit duty cycle in percent for a PULSED system (radar). Default 100 = continuous wave (CW). Set it to the real duty (e.g. 10 for a 10% radar) so thermal, stress, and compliance use AVERAGE power, not peak.'}}}
输入模式
{'type': 'object', 'properties': {'ifHz': {'type': 'number', 'description': 'Intermediate frequency in Hz. Omit to let the server choose one and disclose that it did.'}, 'loSide': {'enum': ['high', 'low'], 'type': 'string', 'description': 'LO above or below the RF. Omit to let the server pick.'}, 'stages': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'nfDB': {'type': 'number', 'description': 'Noise figure in dB. May be omitted for a passive stage given only a loss: the engine then uses its loss, as for a passive part at 290 K, and says so.'}, 'role': {'type': 'string'}, 'gainDB': {'type': 'number'}, 'lossDB': {'type': 'number'}, 'oip3Dbm': {'type': 'number'}, 'p1dbDbm': {'type': 'number'}, 'mixerRole': {'type': 'boolean', 'description': 'true when this stage is the mixer. This, not role, is what marks a mixer.'}, 'nfSideband': {'enum': ['ssb', 'dsb'], 'type': 'string', 'description': "Definition of the mixer's nfDB: 'ssb' (single-sideband) or 'dsb' (double-sideband). Only when the user or datasheet says which, never guessed; without it the result warns that the figure is ambiguous."}}}, 'description': 'Explicit receive chain, ONLY for a bench receiver the user described with their own numbers. Do not hand-build this from memory â\x80\x94 pass rfFrequencyHz instead and let the server select real parts.'}, 'application': {'type': 'string', 'description': "Application context, the same label design_rf_chain takes (e.g. drones, marine_radar, wifi_wlan). Every part is scored for it; free text is resolved to the nearest known label, and one that cannot be resolved is scored as 'general' with a warning saying so. Omit for 'general'."}, 'bandwidthHz': {'type': 'number', 'description': 'Receiver noise bandwidth in Hz. Required for noise floor, MDS and sensitivity â\x80\x94 omit it and those are reported as unavailable rather than assumed.'}, 'architecture': {'enum': ['superheterodyne', 'front_end_only'], 'type': 'string', 'description': 'front_end_only for a radio built on an integrated transceiver (drones): selects only limiter, preselector and LNA, ending at the transceiver input. Omit for a full superheterodyne.'}, 'user_request': {'type': 'string', 'description': "The end user's own words that prompted this call, verbatim. Used to verify that the figures you pass were stated by your user rather than inferred. Omit it and the results will be labelled caller-asserted."}, 'inputPowerDbm': {'type': 'number', 'description': 'Signal level at the antenna port, in dBm. Omit for a small-signal reference, which the result discloses.'}, 'requiredSnrDb': {'type': 'number', 'description': 'SNR needed at the demodulator, in dB.'}, 'rfFrequencyHz': {'type': 'number', 'description': 'RF centre frequency in Hz (e.g. 9.4e9 for X-band).'}, 'transceiverNfDb': {'type': 'number', 'description': "The transceiver's own noise figure in dB, front_end_only only. Omit it and system NF, MDS and sensitivity are withheld, never assumed."}, 'main_board_input_voltage': {'type': 'number', 'description': 'Board DC supply voltage in volts, the same argument design_rf_chain takes. This tool returns no bill of materials or power tree, so a value given here is reported back as unused rather than applied.'}}}
输入模式
{'type': 'object', 'properties': {'prfHz': {'type': 'number', 'description': 'Pulse repetition frequency in Hz, for a pulsed system. Omit and the switching/blanking budget is absent, not assumed.'}, 'topology': {'enum': ['tr_switch', 'circulator_limiter', 'switch_and_circulator'], 'type': 'string', 'description': 'Shared-antenna element. Omit to use tr_switch, which the result discloses. Choose circulator_limiter for high transmit power â\x80\x94 if the stress budget reports over_limit for a switch, re-run with this. switch_and_circulator belongs to architecture array_element only (and is its only topology); any other pairing is refused.'}, 'application': {'type': 'string', 'description': "Application context, the same label design_rf_chain takes (e.g. drones, marine_radar, wifi_wlan). Every part is scored for it; free text is resolved to the nearest known label, and one that cannot be resolved is scored as 'general' with a warning saying so. Omit for 'general'."}, 'bandwidthHz': {'type': 'number', 'description': 'Receiver noise bandwidth in Hz.'}, 'isolationDb': {'type': 'number', 'description': 'Transmit-to-receive isolation in dB, for the explicit-inputs path only.'}, 'pulseWidthS': {'type': 'number', 'description': 'Transmit pulse width in seconds (e.g. 1e-6).'}, 'architecture': {'enum': ['superheterodyne', 'front_end_only', 'array_element'], 'type': 'string', 'description': 'front_end_only for a radio built on an integrated transceiver (drones): selects only limiter, preselector and LNA, ending at the transceiver input. array_element for ONE element of a phased array, beamformer port to antenna port: phase shifter + step attenuator shared by both paths, a low-power T/R switch and a circulator; requires beamformerDriveDbm. Omit for a full superheterodyne.'}, 'frequencyGhz': {'type': 'number', 'description': 'Operating frequency in GHz (e.g. 9.4 for X-band).'}, 'user_request': {'type': 'string', 'description': "The end user's own words that prompted this call, verbatim. Used to verify that the figures you pass were stated by your user rather than inferred. Omit it and the results will be labelled caller-asserted."}, 'antennaFilter': {'type': 'boolean', 'description': 'array_element only: true to add a shared bandpass filter between the circulator and the antenna, charged to both paths. Off unless the user asks for it.'}, 'requiredSnrDb': {'type': 'number', 'description': 'SNR needed at the demodulator, in dB.'}, 'beamformerNfDb': {'type': 'number', 'description': "array_element only: the beamformer's own noise figure behind the common leg, in dB. Omit it and the system noise figure at the beamformer port is withheld."}, 'txPeakPowerDbm': {'type': 'number', 'description': 'Peak transmit power AT THE ANTENNA PORT, in dBm. Pass this ONLY to check a front end the user already has â\x80\x94 it skips design entirely. To design a module, pass targetOutputPowerDbm instead.'}, 'transceiverNfDb': {'type': 'number', 'description': "The transceiver's own noise figure in dB, front_end_only only. Omit it and system NF, MDS and sensitivity are withheld, never assumed."}, 'beamformerDriveDbm': {'type': 'number', 'description': 'array_element only: the input power at the beamformer port, in dBm, as the user stated it. Required for an array element â\x80\x94 never assumed; the tool refuses and names it when absent.'}, 'transmitBiasPulsed': {'type': 'boolean', 'description': 'Pulsed designs only: true when the user says the transmit amplifier bias (gate or drain) is switched off between pulses, false when it stays on. Omit when not stated â\x80\x94 the idle draw between pulses is then counted as heat, and the thermal disclosures say so.'}, 'antennaReturnLossDb': {'type': 'number', 'description': 'Antenna return loss in dB. Without it the antenna-mismatch leakage path is excluded and disclosed.'}, 'targetOutputPowerDbm': {'type': 'number', 'description': 'Transmit output power the chain is designed to, in dBm (20 W = 43 dBm). Required â\x80\x94 every safety budget is measured against it and no default is substituted.'}, 'main_board_input_voltage': {'type': 'number', 'description': 'Board DC supply voltage in volts that the power tree steps down/up to the per-component rails (optional; defaults to 12 V). Set it when the user states their supply rail, e.g. a 14.8 V 4S battery or a 28 V bench input. Same meaning as on design_rf_chain.'}, 'transmitDutyCyclePercent': {'type': 'number', 'description': "Transmit duty cycle in percent (e.g. 10 for a 10% pulsed radar). Selects each part's PULSED survivability rating instead of its CW rating, which for a limiter is commonly 7 dB higher. Omit for continuous wave â\x80\x94 the CW rating is then used, and a part declaring no pulsed rating keeps its CW one with that substitution disclosed. Redundant if prfHz and pulseWidthS are both given, which imply it."}}}
输入模式
{'type': 'object', 'properties': {'layers': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Optional. Stackup layers. Derived from the solved stackup when omitted.'}, 'standards': {'type': 'array', 'items': {'type': 'string'}, 'description': "Optional. Standards to check (e.g. IPC_2221, IPC_6012_CLASS3, ROHS_3, ETSI_EN_300_328, ETSI_EN_301_893) or a region name for advisory reference limits (e.g. 'China', 'SRRC', 'Japan', 'Canada'). Defaults to IPC-2221 + IPC-6012 Class 2 when omitted."}, 'user_request': {'type': 'string', 'description': "The end user's own words that prompted this call, verbatim. Used to verify that the figures you pass were stated by your user rather than inferred. Omit it and the results will be labelled caller-asserted."}, 'stackup_config': {'type': 'object', 'description': 'Optional stackup config (layer_count, total_thickness_mm). Derived when omitted.'}}}
输入模式
{'type': 'object', 'properties': {'stages': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'nfDB': {'type': 'number', 'description': 'Noise figure in dB. May be omitted for a passive stage given only a loss: the engine then uses its loss, as for a passive part at 290 K, and says so.'}, 'gainDB': {'type': 'number'}, 'lossDB': {'type': 'number'}, 'oip3Dbm': {'type': 'number'}, 'p1dbDbm': {'type': 'number'}, 'mixerRole': {'type': 'boolean', 'description': 'true when this stage is a mixer.'}, 'nfSideband': {'enum': ['ssb', 'dsb'], 'type': 'string', 'description': "Definition of a mixer's nfDB: 'ssb' (single-sideband) or 'dsb' (double-sideband). Only when the user or datasheet says which, never guessed; without it a mixer's result warns that the figure is ambiguous."}, 'outputPowerDbm': {'type': 'number'}}}, 'description': 'Ordered list of RF stages for a bench/hypothetical chain. Omit for a just-designed chain (derived server-side). Each stage may declare gainDB or lossDB (loss is treated as -|lossDB|), nfDB, oip3Dbm, p1dbDbm, and an authoritative outputPowerDbm that snap-seeds the cascade. Mark a mixer with mixerRole, plus nfSideband when the user or datasheet says which definition its nfDB uses.'}, 'bandwidthHz': {'type': 'number', 'description': 'Optional receiver noise bandwidth in Hz. When given, the result adds the thermal noise floor, MDS, SFDR, and instantaneous dynamic range (a receiver figure of merit).'}, 'user_request': {'type': 'string', 'description': "The end user's own words that prompted this call, verbatim. Used to verify that the figures you pass were stated by your user rather than inferred. Omit it and the results will be labelled caller-asserted."}, 'inputPowerDbm': {'type': 'number', 'description': 'Input power into the first stage, in dBm. Omit for a just-designed chain (derived from its power flow).'}, 'requiredSnrDb': {'type': 'number', 'description': 'Optional SNR (dB) required for detection/demod. With bandwidthHz, yields receiver sensitivity = MDS + this SNR.'}}}
输入模式
{'type': 'object', 'properties': {'target': {'type': 'object', 'description': 'Optional target-impedance config {voltage_v, ripple_pct, transient_current_a, rise_time_ns} or {preset_name}. Derived from the power-tree rail when omitted.'}, 'plane_pairs': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Optional. Power/ground plane pairs. Derived from the solved stackup when omitted.'}, 'user_request': {'type': 'string', 'description': "The end user's own words that prompted this call, verbatim. Used to verify that the figures you pass were stated by your user rather than inferred. Omit it and the results will be labelled caller-asserted."}, 'decoupling_caps': {'type': 'array', 'items': {'type': 'object'}, 'description': "Optional. Decoupling capacitors. Derived from the BOM's PDN passive lines when omitted."}}}
输入模式
{'type': 'object', 'required': ['layer_count', 'frequency_ghz'], 'properties': {'topology': {'enum': ['microstrip', 'stripline'], 'type': 'string', 'description': 'Transmission line type: microstrip or stripline (default microstrip)'}, 'build_type': {'enum': ['single', 'hdi1', 'hdi2', 'hdi3', 'hdi4'], 'type': 'string', 'description': "Lamination build: 'single' (default) or HDI level hdi1-hdi4. HDI defaults cost_priority to performance."}, 'layer_count': {'type': 'number', 'description': 'Total copper layers (even number, 2-32)'}, 'solder_mask': {'type': 'object', 'properties': {'dk': {'type': 'number', 'description': 'Mask dielectric constant (typical green LPI 3.3-3.9; default 3.5).'}, 'thickness_mm': {'type': 'number', 'description': 'Cured mask thickness over the conductor in mm (typical LPI 0.015-0.030; default 0.02).'}}, 'description': 'Solder mask covering the OUTER trace, as {thickness_mm, dk}. Mask raises the effective permittivity around the trace and pulls Z0 down, so the solver returns a NARROWER width for the same target impedance. OMIT IT (the default) and the microstrip is solved BARE â\x80\x94 pass it only when the user says the outer traces are mask-covered, or states a mask thickness or mask Dk. Applies to microstrip targets only: a stripline is buried under laminate, not mask. Both members are optional and default to typical green LPI (0.02 mm, Dk 3.5); thickness_mm must be over 0 and at most 0.2, dk over 1 and at most 10. Mask LOSS is not modeled: the insertion-loss score leaves it out, and a masked result says so in diagnostics â\x80\x94 tell your user when you cite a masked solve.'}, 'construction': {'enum': ['foil', 'core_outer', 'auto'], 'type': 'string', 'description': "Lamination. OMIT it unless the user named one: an omitted lamination is built core_outer wherever core outer can be built (4+ layers, build_type 'single') and foil everywhere else (2 layers, any HDI build). 'foil' puts prepreg outermost, so an outer microstrip rides on prepreg; 'core_outer' puts a core outermost, so the core material, such as an RF laminate, sits directly under the outer microstrip â\x80\x94 the same choice Guided Phase IV offers. 'auto' searches BOTH and ranks them together; send it only when the user asks to compare the two. Core outer makes EVERY core that material (N/2 cores), not only the outer pair. Each solution reports the construction it was built as; name it when you cite that solution."}, 'user_request': {'type': 'string', 'description': "The end user's own words that prompted this call, verbatim. Used to verify that the figures you pass were stated by your user rather than inferred. Omit it and the results will be labelled caller-asserted."}, 'cost_priority': {'enum': ['low', 'balanced', 'performance'], 'type': 'string', 'description': 'Cost preference: low, balanced, or performance. Default balanced; an HDI build_type OR a frequency at or above 18 GHz defaults to performance instead, because at mm-wave a balanced weighting ranks an FR4-class laminate above every low-loss one. Pass it explicitly to override either default â\x80\x94 a stated preference always wins. The priority actually used comes back as costPriority.'}, 'frequency_ghz': {'type': 'number', 'description': 'Operating frequency in GHz'}, 'max_solutions': {'type': 'number', 'description': 'Max solutions to return, 1-20 (default 5)'}, 'impedance_ohms': {'type': 'number', 'description': 'Target impedance in Ohms (default 50). Single-target convenience â\x80\x94 ignored when impedance_targets is given.'}, 'reflow_process': {'enum': ['leaded', 'lead_free'], 'type': 'string', 'description': 'Assembly reflow process; enforces a Tg floor on all dielectrics (default lead_free).'}, 'copper_weight_oz': {'type': 'number', 'description': "Restrict solutions to this copper weight in oz (0.5, 1, 2, or 3). Omit to let the solver optimize copper weight; an omitted value inherits the latest update_stackup_config copper weight automatically. The value is the FINISHED thickness, with outer-layer plating already included (1 oz = 0.035 mm finished, plated up from 0.5 oz starting foil). A spec written as '0.5 oz base foil + plating, 1.7 mil finished' uses the OTHER convention â\x80\x94 pass 1, not 0.5."}, 'impedance_targets': {'type': 'array', 'items': {'type': 'object'}, 'description': "Up to 4 impedance targets the stackup must satisfy SIMULTANEOUSLY, each {ohms, topology ('microstrip'|'stripline'), differential (bool), spacing_mm (differential pair gap in mm, default 0.15)}. Use for multi-impedance boards â\x80\x94 e.g. 50 ohm RF plus a 100 ohm differential pair. Overrides impedance_ohms/topology."}, 'target_thickness_mils': {'type': 'number', 'description': 'Board thickness in mils (default 62)'}, 'allowed_core_materials': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Restrict core dielectrics to these catalog materials (e.g. RO4350B, MEGTRON6). Pass ONLY materials the user named; omit to search the full catalog.'}, 'thickness_tolerance_mm': {'type': 'number', 'description': 'Allowed deviation from the target thickness in mm. OMIT it and the solver uses 10% of the target thickness. Set it only when the user states a tolerance. The value the solve used comes back as thicknessToleranceMm - cite that one.'}, 'allowed_prepreg_materials': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Restrict prepregs to these catalog materials (e.g. RO4450F, MEGTRON6). Pass ONLY materials the user named; omit to search the full catalog.'}}}
输入模式
{'type': 'object', 'properties': {'heatsink': {'type': 'object', 'properties': {'mount': {'enum': ['board', 'flange'], 'type': 'string', 'description': 'board: SMT part, heat crosses the PCB vias into the sink under the board. flange: bolt-down part, heat goes straight into the sink, bypassing the PCB.'}, 'theta_cs_c_per_w': {'type': 'number', 'description': 'Case/board-to-sink interface resistance in °C/W (thermal pad, grease or TIM). >= 0; 0 only if stated.'}, 'theta_sa_c_per_w': {'type': 'number', 'description': 'Sink-to-ambient resistance in °C/W from the heatsink datasheet or the user. Must be > 0.'}}, 'description': "Optional user-STATED heatsink (or drone airframe spreader) the part is mounted to. ALL THREE properties are required together and NONE is ever defaulted â\x80\x94 if the user has not stated one, ask; a partial object is rejected naming the missing field. When given it REPLACES still-air convection; the result echoes it with source 'user_supplied' and a heat_path."}, 'delta_t_c': {'type': 'number', 'description': 'Thermal-cycling Î\x94T in °C for Coffin-Manson fatigue analysis (e.g. 100 °C from â\x88\x9240 to +60 °C operating swing).'}, 'via_config': {'type': 'object', 'properties': {'copper_fill': {'enum': ['filled', 'plated'], 'type': 'string', 'description': 'filled (solid copper) or plated (annular ring).'}, 'via_pitch_mm': {'type': 'number', 'description': 'Center-to-center pitch in mm (e.g. 0.6).'}, 'via_array_cols': {'type': 'integer', 'description': 'Columns in the via array (e.g. 20).'}, 'via_array_rows': {'type': 'integer', 'description': 'Rows in the via array (e.g. 20).'}, 'via_diameter_mm': {'type': 'number', 'description': 'Via drill diameter in mm (e.g. 0.3).'}, 'board_thickness_mm': {'type': 'number', 'description': 'Total board thickness in mm (e.g. 1.6).'}, 'plating_thickness_mm': {'type': 'number', 'description': 'Plating thickness in mm, must be < via_diameter_mm/2 (e.g. 0.025).'}}, 'description': 'Optional thermal via array. ALL SEVEN properties are required together â\x80\x94 a partial object is rejected â\x80\x94 and plating_thickness_mm must be < via_diameter_mm / 2.'}, 'layer_count': {'type': 'integer', 'description': 'Total copper layer count (even number, typically 2â\x80\x9332). Used to scale per-layer thermal contributions.'}, 'user_request': {'type': 'string', 'description': "The end user's own words that prompted this call, verbatim. Used to verify that the figures you pass were stated by your user rather than inferred. Omit it and the results will be labelled caller-asserted."}, 'pour_area_mm2': {'type': 'number', 'description': 'Total copper-pour spreader area in mm² on the heat-sink side; larger pours reduce the spreading-Rth term.'}, 'analysis_input': {'type': 'object', 'properties': {'power_w': {'type': 'number'}, 'ambient_c': {'type': 'number'}}, 'description': "Optional once a design exists. {power_w, ambient_c} are BOTH optional: the server fills power_w from the designed chain's dissipated power and defaults ambient_c to 25 C. Omit this entirely to run thermal on the current design."}, 'board_width_mm': {'type': 'number', 'description': 'Overall PCB width in mm (warpage / CTE inputs).'}, 'stackup_layers': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Optional per-layer thermal contributions.'}, 'board_length_mm': {'type': 'number', 'description': 'Overall PCB length in mm â\x80\x94 used for Timoshenko warpage and CTE-mismatch curvature estimates.'}, 'source_area_mm2': {'type': 'number', 'description': 'Heat source footprint area in mm² â\x80\x94 typically the IC die or package pad footprint. Used for Kennedy spreading resistance.'}, 'theta_jc_c_per_w': {'type': 'number', 'description': "Device junction-to-case thermal resistance in °C/W (datasheet R_θJC). Optional â\x80\x94 the server derives it from the designed chain's PA record when available."}, 'copper_thickness_mm': {'type': 'number', 'description': 'Plane/pour copper thickness in mm (e.g. 0.035 for 1 oz, 0.070 for 2 oz). Drives the lateral spreading conductance.'}, 'effective_cte_z_ppm': {'type': 'number', 'description': 'Effective z-axis CTE in ppm/°C â\x80\x94 input to Coffin-Manson barrel-stress life estimation. Typical 40â\x80\x9370 ppm/°C for FR4.'}, 'copper_coverage_top_pct': {'type': 'number', 'description': 'Fractional copper coverage on the top side (0â\x80\x93100 %). Used for warpage symmetry and effective-CTE calculations.'}, 'copper_coverage_bottom_pct': {'type': 'number', 'description': 'Fractional copper coverage on the bottom side (0â\x80\x93100 %). Asymmetry vs. top drives warpage predictions.'}}}
近期工具变更
类似的 MCP 服务器
Physical Capability Cloud
Registers and manages physical equipment and operators, supports capability pricing, job contracts, telemetry, verification evide…
Clink Forge
Provides pay-per-call access to attested government datasets, primarily CDC and HHS health data plus EPA air-quality observations.
workbench
Provides computational molecular biology tools for DNA, RNA, and protein analysis, cloning, PCR, CRISPR, oligonucleotide design, …
gisgp
Provides GIS geocoding, routing, spatial transformations, ArcGIS layer inspection and export, and location due diligence for haza…
calc.engineer
Provides deterministic engineering calculators for RF and LoRa systems, electronics, batteries, solar and power systems, cooling,…
Good Earth
Provides plot-specific climate and growing-season analysis for gardens and farms, including frost, heat accumulation, crop suitab…
osint
Provides source-cited US data and schemas for power systems, AI infrastructure, semiconductor production and trade, robotics, and…
EngScript Engineering MCP
Performs engineering calculations for oil and gas applications, including thermodynamics, fluid systems, equipment sizing, balanc…