Skip to content

MCP servers › com.ferscloud › fers

MCP server · registry snapshot 2026-10-23 · last tested 2026-10-23

com.ferscloud/fers

Structural FEM for AI agents: frames, plates, buckling, seismic and Eurocode checks, solved locally. — the publisher's description

6 of 9 record checks metRead-only · tools listed 2026-10-23Pricing: freemium · AI-classifiedversion 2.1.0Pythonstandard input/output, streamable HTTP36 tools

Summary

com.ferscloud/fers is a remote and local MCP server listed in the official MCP registry at version 2.1.0. On 2026-10-23 ProtocolProbe started its published package in an isolated sandbox in read-only mode and read its inventory: 36 tools, 1,661 resources and 4 prompts.

Record checks

6 of 9 record checks met

  • met: Registry entry is active and says how to run it
  • met: Source repository link opens
  • met: Repository is not archived
  • met: Code pushed to the repository in the 90 days before our check
  • not met: Repository publishes a security policy (SECURITY.md)
  • not met: Package names its licence with a standard (SPDX) identifier
  • met: The version the registry lists can be installed and is not withdrawn
  • not met: npm package carries build provenance (attestation)
  • met: No known critical or high advisory in the package or its dependencies
  • Not ranked by downloads: no download figure available
  • Not ranked by stars: 2 stars (ranked from 10)

From public records, not a safety rating. Each check with its reason · Is it safe to install?

Key facts

Runs
remote and local package
Transport
standard input/output, streamable HTTP
Package
npm · listed version current
Dependencies
no known high or critical advisories
Repository
public
Tools
36
Described as changing data
23 of 36 toolsAI-classified
Mainly works on
files and code on the machine it runs onAI-classified
Pricing
freemiumAI-classified
Last tested
2026-10-23

Add to your client

Worth knowing before you connect it

  • 23 tools are described as changing something (solve_model, run_unity_checks, check_beam, …): our AI model's reading of the descriptions, not something we tested. We did not call them.

Each line comes from a section below, with its source and date.

How fresh this is

Live-tested
yes, a real session (not a text-only review)
Last tested
2026-10-23
Mode
read-only (no tool calls)
Latest version
2.1.0, published 2026-10-21 (registry, as of the 2026-10-23 snapshot)
First listed version
2026-10-21 (earliest version still in the registry; older removed versions would be earlier)
Registry data
snapshot 2026-10-23
Package and repository
checked 2026-10-22
Engine
mcp-runtime-engine@0.1.0 · sdk@1.32.0

Changes since the last refresh

New in the registry: not in the list of 2026-10-04, listed on 2026-10-23 with version 2.1.0 (published 2026-10-21).

Source: the official MCP Registry list on 2026-10-04 and on 2026-10-23.

What it is

What does this server offer?

Observed inventory
36tools
1,661resources
4prompts

What it mainly works on, as our AI model read its tool descriptions: files and code on the machine it runs on.

23 of 36 tools are described as changing something (creating, editing, deleting, sending or running). For 1 the reading was uncertain, so no mark is shown.

  • solve_modelon 1 other serverruns code or commandsdescribed as changing data

    “Run the FERS FEM solver on a structural model.”

    Publisher declares: read-only yes · idempotent no · open-world no

    6 inputs
    • modelstring“Stringified JSON of the FERS structural model”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • idempotency_keystring“Optional.”
    • detailstring“How much result data to return.”
    • result_filterarray“Advanced: emit only these result blocks, overriding `detail`.”
    • include_reportboolean“Embed the rendered HTML hand-calc report in the response.”
  • validate_modelon 4 other serversreads or searches

    “Check a FERS model against the solver's own schema WITHOUT solving it — free.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    2 inputs
    • modelstring“Stringified JSON of the FERS structural model to validate”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
  • run_unity_checksruns code or commandsdescribed as changing data

    “Solve a model and return its code-check (unity-check) results: per-entity utilizations, status, and the calculation trace behind each rule.”

    Publisher declares: read-only yes · idempotent no · open-world no

    6 inputs
    • modelstring“Stringified FERS model JSON that includes analysis.unity_checks”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • idempotency_keystring“Optional.”
    • detailstring“How much result data to return.”
    • result_filterarray“Advanced: emit only these result blocks, overriding `detail`.”
    • include_reportboolean“Embed the rendered HTML hand-calc report in the response.”
  • check_beamruns code or commandsdescribed as changing data

    “Check a steel beam to EN 1993-1-1 (Eurocode 3).”

    Publisher declares: read-only yes · idempotent no · open-world no

    14 inputs, 1 required
    • span_mnumber“Beam span in metres (required — or use alias `span`/`length`)”
    • spannumber“Alias for span_m (beam span in metres)”
    • lengthnumber“Alias for span_m (beam span in metres)”
    • sectionstringrequired“Library section name, e.g.”
    • supportstring“'simply_supported' (default), 'cantilever', or 'fixed' (fixed–fixed)”
    • materialstring“steel_S235 (default), steel_S275, steel_S355 or steel_S460 (shorthand S235/S275/S355/S460 ok)”
    • udlnumber“Uniformly distributed load in kN/m, downward”
    • load_kN_per_mnumber“Alias for udl (uniformly distributed load in kN/m)”
    • uniform_loadnumber“Alias for udl (uniformly distributed load in kN/m)”
    • point_loadnumber“Point load in kN, downward”
    • point_positionnumber“Point-load position along the span, 0..1 (default mid-span; tip for a cantilever)”
    • uls_factornumber“ULS load factor applied to the load (default 1.35)”
    • restrainedboolean“true if the compression flange is continuously laterally restrained (e.g.”
    • laterally_restrainedboolean“Alias for restrained”
  • create_beamcreates or changes datadescribed as changing data

    “Generate a solver-ready FERS model JSON for one beam.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    17 inputs
    • span_mnumber“Beam span in metres (required — or use alias `span`/`length`)”
    • spannumber“Alias for span_m (beam span in metres)”
    • lengthnumber“Alias for span_m (beam span in metres)”
    • supportstring“'simply_supported' (default) or 'cantilever'”
    • sectionstring“Library section name, e.g.”
    • height_mmnumber“Rectangular section depth h in mm (default 200; ignored if `section` is set)”
    • width_mmnumber“Section width b in mm (default 100)”
    • materialstring“steel_S235 (default), steel_S275, steel_S355, steel_S460, aluminium_6061 or concrete_C30 (shorthand S235/S275/S355/S460 ok)”
    • load_typestring“'udl' (default) or 'point'”
    • load_knnumber“UDL in kN/m or point load in kN, downward (default 10)”
    • loadnumber“Alias for load_kn (kN/m as a UDL, kN as a point load)”
    • udlnumber“Alias for load_kn as a UDL in kN/m”
    • uniform_loadnumber“Alias for load_kn as a UDL in kN/m”
    • point_loadnumber“Point load in kN, downward (implies load_type 'point')”
    • load_position_fracnumber“Point-load position along the span, 0..1 (default 0.5; 1.0 for cantilever)”
    • load_positionnumber“Alias for load_position_frac (0..1 along the span)”
    • point_positionnumber“Alias for load_position_frac (0..1 along the span)”
  • create_frameon 8 other serverscreates or changes datadescribed as changing data

    “Generate a solver-ready FERS model JSON for a 2-D rectangular portal frame (columns + beams).”

    Publisher declares: read-only yes · idempotent yes · open-world no

    12 inputs
    • baysnumber“Number of bays (default 1)”
    • storeysnumber“Number of storeys (default 1)”
    • bay_width_mnumber“Bay width in metres (default 5)”
    • storey_height_mnumber“Storey height in metres (default 3)”
    • column_height_mmnumber“Column section depth in mm (default 200)”
    • column_width_mmnumber“Column section width in mm (default 200)”
    • beam_height_mmnumber“Beam section depth in mm (default 240)”
    • beam_width_mmnumber“Beam section width in mm (default 120)”
    • materialstring“steel_S355 (default), steel_S235, steel_S275, steel_S460, aluminium_6061 or concrete_C30”
    • basestring“'fixed' (default) or 'pinned' column bases”
    • roof_udl_kn_per_mnumber“Gravity UDL on the top-storey beams, kN/m (default 10)”
    • lateral_knnumber“Horizontal point load at the top-left corner, kN (default 0)”
  • stash_modelcreates or changes datadescribed as changing data

    “Park a model and get back a short handle (model_ref).”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    2 inputs, 1 required
    • modelstringrequired“Stringified FERS model JSON to park”
    • namestring“Optional label, purely to help you keep several drafts apart.”
  • set_analysiscreates or changes datadescribed as changing data

    “Configure HOW a model is solved, and switch on the analyses the engine supports beyond plain statics.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    7 inputs
    • modelstring“Stringified FERS model JSON to update”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • optionsstring“AnalysisOptions fields to merge, as a JSON object.”
    • modalstring“ModalAnalysisSettings, e.g.”
    • bucklingstring“BucklingAnalysisSettings, e.g.”
    • seismicstring“SeismicAnalysisSettings, e.g.”
    • clearstring“Optional JSON array of blocks to delete first, e.g.”
  • add_load_casecreates or changes datadescribed as changing data

    “Add an empty load case — a named bucket of UNFACTORED loads of one origin (dead, snow, wind, imposed).”

    Publisher declares: read-only yes · idempotent no · open-world no

    3 inputs, 1 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • namestringrequired“Name, e.g.”
  • add_loadcreates or changes datadescribed as changing data

    “Add ONE load of any kind to an existing load case.”

    Publisher declares: read-only yes · idempotent no · open-world no

    22 inputs, 1 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • load_case_idnumber“id of the load case to append to (from add_load_case)”
    • kindstringrequired“nodal_force | nodal_moment | distributed | member_point_force | member_point_moment | surface | plate_pressure”
    • magnitudenumber“Load size, always positive — put the sense in direction_x/y/z.”
    • direction_xnumber“X component of the direction (or moment axis).”
    • direction_ynumber“Y component.”
    • direction_znumber“Z component.”
    • nodenumber“Target node id — required for nodal_force / nodal_moment.”
    • membernumber“Target member id — required for distributed / member_point_force / member_point_moment.”
    • positionnumber“Fraction along the member, 0 = start node, 1 = end node.”
    • start_fracnumber“distributed only.”
    • end_fracnumber“distributed only.”
    • end_magnitudenumber“distributed only.”
    • axesstring“member_point_* only: "global" (default) or "local" (member frame, local x along the member).”
    • polygonstring“surface only.”
    • distribution_dxnumber“surface only, optional: X of the span direction the load is carried in.”
    • distribution_dynumber“surface only, optional: Y of the span direction.”
    • distribution_dznumber“surface only, optional: Z of the span direction.”
    • surface_idnumber“plate_pressure only: id of a model.plate_surfaces[] entry.”
    • plate_element_idnumber“plate_pressure only: one generated element.”
    • projectedboolean“plate_pressure only.”
  • add_load_combinationcreates or changes datadescribed as changing data

    “Add ONE factored load combination — a weighted sum of load cases at a given limit state.”

    Publisher declares: read-only yes · idempotent no · open-world no

    7 inputs, 2 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • namestringrequired“e.g.”
    • factorsstringrequired“Load case ids to partial factors: {"1": 1.35, "2": 1.5} or [{"load_case_id":1,"factor":1.35}].”
    • limit_statestring“ULS | SLS | FLS | ALS (case-sensitive).”
    • situationstring“Report metadata only; the solver never reads it.”
    • checkstring“Report metadata only.”
  • generate_load_combinations_ec0creates or changes datadescribed as changing data

    “Generate a complete EN 1990 (Eurocode 0) combination set from the model's load cases in one call, instead of adding them one at a time.”

    Publisher declares: read-only yes · idempotent no · open-world no

    7 inputs, 1 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • actionsstringrequired“Action type per load case: {"1":"G","2":"S","3":"W"} or [{"load_case_id":1,"action":"G"}].”
    • include_ulsboolean“Emit ULS 6.10 combinations (default true).”
    • include_slsboolean“Emit SLS characteristic combinations (default true).”
    • include_favorableboolean“Emit the gamma_G = 1.0 favourable-permanent ULS variants, which govern uplift (default true).”
    • replace_existingboolean“Replace analysis.load_combinations entirely instead of appending (default false).”
Show 24 more tools
  • add_imperfection_casecreates or changes datadescribed as changing data

    “Add a geometric imperfection — a global sway (out-of-plumb lean, EN 1993-1-1 §5.3.2) and/or a member bow — bound to specific load combinations.”

    Publisher declares: read-only yes · idempotent no · open-world no

    16 inputs, 1 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • load_combination_idsstringrequired“JSON array of combination ids this imperfection applies to, e.g.”
    • sway_ratio_denominatornumber“Sway as 1/N: pass 200 for a 1/200 lean.”
    • sway_magnitude_radnumber“Sway angle directly in radians, if you would rather not use a ratio (0.005 = 1/200).”
    • sway_axis_xnumber“Sway rotation axis X (default 0).”
    • sway_axis_ynumber“Sway rotation axis Y (default 0).”
    • sway_axis_znumber“Sway rotation axis Z (default 1).”
    • height_direction_xnumber“Direction height is measured along, X (default 0).”
    • height_direction_ynumber“Y (default 1 — these models are Y-up).”
    • height_direction_znumber“Z (default 0).”
    • translation_memberset_idsstring“JSON array of member-set ids to give a bow imperfection, e.g.”
    • translation_magnitudenumber“Bow amplitude in model length units.”
    • translation_axis_xnumber“Bow direction X (default 1).”
    • translation_axis_ynumber“Bow direction Y (default 0).”
    • translation_axis_znumber“Bow direction Z (default 0).”
  • build_modelon 1 other servercreates or changes datadescribed as changing data

    “Build a complete, solver-ready FERS model from an arbitrary node/member graph: 3-D frames, trusses, pitched roofs, bracing, towers — anything create_beam/create_frame cannot express.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    12 inputs, 2 required
    • nodesstringrequired“JSON array of [X, Y, Z] node coordinates in metres, Y up.”
    • membersstringrequired“JSON array of member rows: [start, end] / [start, end, "IPE300"] / [start, end, "IPE300", {options}].”
    • supportsstring“JSON object mapping a 1-based node number to "fixed" / "pinned" / "roller_x" / "roller_y" / "roller_z" / "free", or to an explicit DOF object {"X":"fixed","Y":…”
    • planestring“"3D" (default) or "XY".”
    • sectionsstring“JSON array of section definitions (same shape as create_section), referenced by name from the member rows.”
    • materialstring“steel_S355 (default), steel_S235, aluminium_6061 or concrete_C30.”
    • default_sectionstring“Section for members that name none.”
    • loadsstring“JSON array of load cases in kN / kN·m: [{"name":"G","udl":[[member, w]],"nodal_loads":[[node,Fx,Fy,Fz]],"nodal_moments":[[node,Mx,My,Mz]],"point_loads":[[membe…”
    • load_combinationsstring“JSON array referencing load cases by NAME: [{"name":"ULS","factors":{"G":1.35,"W":1.5},"limit_state":"ULS"}].”
    • self_weightboolean“Add self-weight as its own load case and factor it into the combinations.”
    • orderstring“"LINEAR" (default) or "NONLINEAR" for second-order.”
    • project_namestring“Label for the model.”
  • create_sectionon 10 other serverscreates or changes datadescribed as changing data

    “Add or replace a cross-section on an existing FERS model and optionally assign it to members.”

    Publisher declares: read-only yes · idempotent no · open-world no

    25 inputs, 1 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • namestringrequired“Name for the section in this model.”
    • shapestring“library (default when library_name is given) | rect | circle | chs | rhs | shs | box | i | custom.”
    • library_namestring“Library section name, e.g.”
    • h_mmnumber“Depth in MILLIMETRES.”
    • b_mmnumber“Width in MILLIMETRES.”
    • d_mmnumber“Diameter in MILLIMETRES (circle/chs).”
    • t_mmnumber“Wall thickness in MILLIMETRES.”
    • tf_mmnumber“Flange thickness in MILLIMETRES.”
    • tw_mmnumber“Web thickness in MILLIMETRES.”
    • areanumber“Area in m² (required for shape 'custom').”
    • i_ynumber“Second moment about local y, m⁴.”
    • i_znumber“Second moment about local z (STRONG axis), m⁴.”
    • jnumber“Torsion constant, m⁴.”
    • wel_ynumber“Elastic modulus about y, m³.”
    • wel_znumber“Elastic modulus about z, m³.”
    • wpl_ynumber“Plastic modulus about y, m³.”
    • wpl_znumber“Plastic modulus about z, m³.”
    • i_wnumber“Warping constant, m⁶.”
    • a_synumber“Shear area along local y, m².”
    • a_sznumber“Shear area along local z, m².”
    • ec3string“EN 1993-1-1 design parameters: {"section_class":1,"buckling_curve_y":"a","buckling_curve_z":"b","buckling_curve_lt":"c"}.”
    • materialstring“Material preset for this section (see list_materials).”
    • apply_tostring“"all", a JSON array of member ids, or a classification string — assigns the section to those members.”
  • set_supporton 1 other servercreates or changes datadescribed as changing data

    “Write a nodal support (boundary condition) and point one or more nodes at it: creates or overwrites an entry in model.nodal_supports and sets node.nodal_support on every node you name.”

    Publisher declares: read-only yes · idempotent no · open-world no

    22 inputs, 1 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • node_idsstringrequired“JSON array of node ids to support, e.g.”
    • support_idnumber“Overwrite this existing nodal_supports entry; omit to allocate a new one.”
    • presetstring“fixed | pinned | free | roller_x | roller_y | roller_z | ground_contact_y.”
    • Xstring“Fixed | Free | Spring | PositiveOnly | NegativeOnly (global X translation).”
    • Ystring“Same, global Y (vertical in these models).”
    • Zstring“Same, global Z.”
    • RXstring“Same, rotation about global X.”
    • RYstring“Same, rotation about global Y.”
    • RZstring“Same, rotation about global Z.”
    • warpingstring“Warping DOF condition.”
    • X_stiffnessnumber“N/m — required when X is Spring.”
    • Y_stiffnessnumber“N/m — required when Y is Spring.”
    • Z_stiffnessnumber“N/m — required when Z is Spring.”
    • RX_stiffnessnumber“N·m/rad — required when RX is Spring.”
    • RY_stiffnessnumber“N·m/rad — required when RY is Spring.”
    • RZ_stiffnessnumber“N·m/rad — required when RZ is Spring.”
    • warping_stiffnessnumber“Required when warping is Spring.”
    • stiffness_curvesstring“Nonlinear support springs: {"Y":{"depends_on":"Fy","points":[[0,1e5],[10000,1e6]]}}.”
    • classificationstring“Free-text label.”
    • keep_axial_slackboolean“Leave analysis.options.axial_slack untouched when writing a one-way support.”
  • set_membercreates or changes datadescribed as changing data

    “Set structural behaviour on one or more existing members: element type, end releases (hinges), rigid end offsets, cross-section rotation/mirroring and cable parameters.”

    Publisher declares: read-only yes · idempotent no · open-world no

    13 inputs, 1 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • member_idsstringrequired“JSON array of member ids, e.g.”
    • member_typestring“Normal | Truss (pin-jointed, axial only) | Tension (drops out in compression) | Compression | Rigid | Cable.”
    • start_releasestring“End release at the START node, in the MEMBER LOCAL frame: {"mz":0.0} releases the major-axis moment.”
    • end_releasestring“Same, at the END node.”
    • start_offsetstring“Rigid arm at the start, GLOBAL frame, model length units: {"X":0,"Y":0.2,"Z":0}.”
    • end_offsetstring“Same, at the end.”
    • rotation_angle_degnumber“Roll the cross-section about the member axis, in DEGREES.”
    • mirrorboolean“Mirror the cross-section.”
    • pretensionnumber“Cable / Tension / Compression members only.”
    • unstretched_lengthnumber“Cable members only.”
    • keep_axial_slackboolean“Leave analysis.options.axial_slack untouched.”
  • set_scissor_hingecreates or changes datadescribed as changing data

    “Let a continuous beam turn or slide on the members it crosses (a scissor hinge, engine 0.2.68), with no link member or extra node: a rail resting on beams, a bracing pair crossing at a bolt.”

    Publisher declares: read-only yes · idempotent no · open-world no

    9 inputs
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • member_idsstring“JSON array of the continuous beam's member ids, e.g.”
    • member_set_idnumber“Instead of member_ids: put the hinge on this existing member set.”
    • releasesstring“Axes to release: {"rz":0.0} frees rotation about global Z, {"tx":0.0} lets the beam slide along X, a positive number is a spring (force/length for tx/ty/tz, fo…”
    • axesstring“"Global" (default) or {"User":{"x":[1,0,0],"y":[0,1,0]}} for a frame turned in plan.”
    • at_nodesstring“JSON array of the beam's node ids where the hinge applies; omit for every node where the beam meets another member.”
    • scissor_hinge_idnumber“Reuse this existing scissor hinge definition (and rewrite it when releases or axes are given).”
    • clearboolean“Take the scissor hinge off the beam's member set.”
  • set_member_designcreates or changes datadescribed as changing data

    “Set the design (code-check) data that lives on a MemberSet — buckling restraints, buckling lengths, LTB length, effective-length factors — plus the per-member chi override.”

    Publisher declares: read-only yes · idempotent no · open-world no

    13 inputs, 1 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • member_set_idsstringrequired“JSON array of member-set ids, or "all".”
    • classificationstring“Alternative selector: exact match on the set's classification.”
    • buckling_length_ynumber“L_cr about local y, in model length units, measured along the whole member chain.”
    • buckling_length_znumber“L_cr about local z.”
    • buckling_length_tnumber“Torsional buckling length.”
    • ltb_lengthnumber“Lateral-torsional buckling length.”
    • effective_length_factor_ynumber“K about y — multiplies the INDIVIDUAL element's length, not the chain's.”
    • effective_length_factor_znumber“K about z, same caveat.”
    • buckling_restraintsstring“[{"node_id":3,"restrains_local_y":true,"restrains_local_z":true,"restrains_torsion":true}].”
    • chinumber“EN 1993-1-1 reduction factor override in (0,1], written onto every member of the set.”
    • set_classificationstring“Rename the set's classification.”
  • add_plate_surfacecreates or changes datadescribed as changing data

    “Add a meshed plate/shell surface (slab, wall, deck, panel) to a FERS model.”

    Publisher declares: read-only yes · idempotent no · open-world no

    24 inputs
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • corner_pointsstring“JSON array of [x,y,z] corner points forming an OPEN planar ring (do not repeat the first point).”
    • boundary_node_idsstring“JSON array of EXISTING node ids to hang the plate off, e.g.”
    • thicknessnumber“Plate thickness in metres.”
    • material_idnumber“Existing model.materials id.”
    • divisions_unumber“Structured mesh divisions along the first edge.”
    • divisions_vnumber“Divisions along the other edge.”
    • mesh_methodstring“auto | structured | unstructured (Delaunay — required for openings).”
    • target_sizenumber“Element edge length for the unstructured mesher, in metres.”
    • element_shapestring“auto | triangle | quad.”
    • theorystring“auto (default: picks from span/thickness) | kirchhoff (best for thin plates) | mindlin (shear-flexible but coarse-mesh stiff) | engine_auto.”
    • behaviorstring“shell (default) | membrane.”
    • plane_statestring“plane_stress (default) | plane_strain.”
    • local_x_directionstring“[x,y,z] setting the plate's local axes, which fix the sign and meaning of mx/my/mxy.”
    • offsetnumber“Offset of the plate mid-surface, metres.”
    • stiffness_modifier_membranenumber“Multiplier on membrane stiffness.”
    • stiffness_modifier_bendingnumber“Multiplier on bending stiffness (0.5 doubles deflection).”
    • stiffness_modifier_shearnumber“Multiplier on shear stiffness.”
    • edge_supportstring“none (default) | pinned | fixed — supports the generated perimeter nodes.”
    • edge_support_idnumber“Reuse an existing nodal_supports id for the edge.”
    • surface_idnumber“Overwrite this surface id instead of allocating a new one.”
    • namestring“Label for the surface.”
    • classificationstring“Free-text group name.”
  • add_plate_openingcreates or changes datadescribed as changing data

    “Cut a hole (stairwell, duct, riser) in an existing PlateSurface: creates the hole's boundary nodes and appends a PlateOpening to that surface's `openings`.”

    Publisher declares: read-only yes · idempotent no · open-world no

    7 inputs
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • surface_idnumber“id of the plate surface to cut the hole in.”
    • corner_pointsstring“JSON array of [x,y,z] points bounding the hole, inside the surface and in its plane.”
    • boundary_node_idsstring“Existing node ids bounding the hole instead.”
    • target_sizenumber“Mesh size around the hole, metres.”
    • opening_idnumber“Overwrite this opening id.”
  • add_plate_grid_elementscreates or changes datadescribed as changing data

    “Author plate elements EXPLICITLY (model.plate_elements) as a regular quad grid over four corner points, instead of letting the solver mesh a PlateSurface.”

    Publisher declares: read-only yes · idempotent no · open-world no

    13 inputs, 1 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • corner_pointsstringrequired“JSON array of exactly 4 [x,y,z] corners, in order around the panel.”
    • divisions_unumber“Cells along the first edge.”
    • divisions_vnumber“Cells along the other edge.”
    • thicknessnumber“Plate thickness in metres.”
    • material_idnumber“Existing model.materials id.”
    • theorystring“auto | kirchhoff | mindlin | engine_auto.”
    • behaviorstring“shell | membrane.”
    • plane_statestring“plane_stress | plane_strain.”
    • local_x_directionstring“[x,y,z] local axis direction.”
    • edge_supportstring“none | pinned | fixed on the perimeter.”
    • first_element_idnumber“Starting id for the generated elements.”
  • summarize_plate_resultsreads or searches

    “Reduce a solved FERS document to the plate numbers an engineer actually reads, and derive extreme-fibre stresses.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    6 inputs, 1 required
    • resultsstringrequired“A solved FERS document (or just its `results` block) from solve_model.”
    • thicknessnumber“Plate thickness in metres — needed to turn moments and forces into extreme-fibre stresses.”
    • case_or_combinationstring“Name of one load case or combination.”
    • top_nnumber“How many governing elements to list per quantity (default 5).”
    • quantitiesstring“JSON array from: deflection, nx, ny, nxy, mx, my, mxy, qx, qy, von_mises, sigma_x, sigma_y, tau_xy, principal_max, principal_min.”
    • yield_stressnumber“Yield stress in Pa — adds a von Mises utilization if given.”
  • render_reporton 7 other serversgenerates content

    “Render the human-readable HTML hand-calc report from an ALREADY-SOLVED document (the full JSON you got back from solve_model or run_unity_checks, including its `results`).”

    Publisher declares: read-only yes · idempotent yes · open-world no

    1 input, 1 required
    • solved_modelstringrequired“Stringified solved FERS document — model + analysis + results”
  • list_sectionson 26 other serversreads or searches

    “List the named steel sections FERS knows: European (IPE, HEA, HEB, HEM, UPE, RHS, SHS, CHS, L), UK (UB, UC, PFC) and US (W, HP, HSS, Pipe).”

    Publisher declares: read-only yes · idempotent yes · open-world no

    1 input
    • familystring“Filter by family/prefix, e.g.”
  • get_sectionon 13 other serversreads or searches

    “Get a named section's full properties in SI units (m, m², m⁴): area, second moments i_y/i_z, torsion constant j, warping constant i_w, shear areas, and the elastic/plastic moduli wel_y/wel_z/wpl_y/wp…”

    Publisher declares: read-only yes · idempotent yes · open-world no

    1 input, 1 required
    • namestringrequired“Section name, e.g.”
  • list_materialson 10 other serversreads or searches

    “List the named material presets the model builders accept, with their E, G, density and yield stress in SI units.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    Takes no inputs.

  • get_schemaon 32 other serversreads or searches

    “Look up the FERS model input contract — the authoritative JSON Schema the solver itself is generated from.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    1 input
    • rootstring“Schema to expand, e.g.”
  • get_check_schemareads or searches

    “Get the canonical schema for authoring unity (code) checks: the UnityCheckDefinition schema and everything it references, read straight from the solver's OpenAPI, plus a worked EN 1993 example.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    Takes no inputs.

  • add_unity_checkcreates or changes datadescribed as changing data

    “Append a unity (code) check to a model's analysis.unity_checks.”

    Publisher declares: read-only yes · idempotent no · open-world no

    3 inputs, 1 required
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
    • checkstringrequired“Stringified UnityCheckDefinition JSON (get its schema + an example from get_check_schema)”
  • save_modelcreates or changes datadescribed as changing data

    “Save a model to this machine's FERS model folder.”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    4 inputs, 1 required
    • namestringrequired“A name for the saved model”
    • descriptionstring“Optional description”
    • modelstring“Stringified FERS model JSON”
    • model_refstring“Handle from stash_model, used INSTEAD of `model`.”
  • load_modelreads or searches

    “Load one of your saved models' full JSON by id (owner only).”

    Publisher declares: read-only yes · idempotent yes · open-world no

    1 input, 1 required
    • idstringrequired“Saved model id”
  • list_modelson 94 other serversreads or searches

    “List your saved models (id, name, description, last-updated time).”

    Publisher declares: read-only yes · idempotent yes · open-world no

    Takes no inputs.

  • list_templateson 111 other serversreads or searches

    “List all available template structural models.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    Takes no inputs.

  • get_templateon 45 other serversreads or searches

    “Retrieve the full JSON of a template structural model by name.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    1 input, 1 required
    • namestringrequired“Template name (e.g.”
  • get_usageon 99 other serversreads or searches

    “Check your FERS tier and how solves run on this server: member limits, licence state and where results come from.”

    Publisher declares: read-only yes · idempotent yes · open-world no

    Takes no inputs.

Each quoted sentence is the first sentence of the publisher’s own description. The kind of tool and the “changes data” mark are our AI model’s reading of that description, not something we tested: two differently worded runs had to agree, otherwise no label is shown, and nobody has checked them by hand. A tool without the “changes data” mark is described as only reading, searching or calculating, or the two runs did not agree. No tool was called. Read the publisher’s full description before relying on it. “Publisher declares” lists the hints the server itself sends with the tool (MCP annotations: read-only, destructive, idempotent, open-world); they are the publisher's claims, not checked by us. Inputs are the parameters in the tool's own input schema: name, declared type, whether it is required, and the first sentence of its description. Read 2026-10-23.

How well are its tools described?

Features #4 and #5

How clearly this server's own tool descriptions say what a tool does, and how consistent its tool list is. The first part is an AI model's yes/no reading of each description; the second part is counted. We do not turn it into a grade.

Descriptions

AI reading of each description

Says what the tool does
100% of 36 tools
Says what it returns
100% of 36 tools
States limits, defaults or errors
100% of 3 tools
Says when to use it
100% of 36 tools
Items covered per tool
4.0 of 4 on average

Counted from the listing

Parameters with a description
100% of 278
Tools with a description
100% of 36
Typical description length
1,048 characters

The tool set

Counted from the listing

Tools
36
Size of the list
about 21,504 tokens for an agent to load (characters ÷ 4)
Naming
36 of 36 names use snake_case

AI reading: easy to mix up

No pair found.

The AI items cover 36 of 36 tools: for a tool where two differently worded runs disagreed, that item is left out. They were not checked by hand, and no tool was called. “Easy to mix up” means two tools whose names or descriptions overlap without saying how they differ; the AI found none. We do not rate whether the tool set is complete or whether side effects are spelled out, because our AI reading of those was not reliable enough.

How do I add it to my client?

Config from the registry entry

From the npm package @ferscloud/fers-mcp

Our sandbox started this package on 2026-10-23 (a read-only session: no tool was called).

Add to CursorAn install link in the format Cursor documents, holding the Cursor config below. The command runs the publisher’s code on your machine.

Claude Desktop · claude_desktop_config.json (Settings → Developer → Edit Config)
{
  "mcpServers": {
    "fers": {
      "command": "npx",
      "args": [
        "-y",
        "@ferscloud/fers-mcp@2.1.0"
      ]
    }
  }
}
Cursor · .cursor/mcp.json in a project, or ~/.cursor/mcp.json
{
  "mcpServers": {
    "fers": {
      "command": "npx",
      "args": [
        "-y",
        "@ferscloud/fers-mcp@2.1.0"
      ]
    }
  }
}
VS Code · .vscode/mcp.json
{
  "servers": {
    "fers": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@ferscloud/fers-mcp@2.1.0"
      ]
    }
  }
}
VS Code (command line) · Bash or zsh terminal (macOS, Linux)
code --add-mcp '{"name":"fers","type":"stdio","command":"npx","args":["-y","@ferscloud/fers-mcp@2.1.0"]}'
Claude Code
claude mcp add --transport stdio fers -- npx -y @ferscloud/fers-mcp@2.1.0
Try it in the MCP Inspector · runs on your machine, opens in your browser · Node 22.19+
npx @modelcontextprotocol/inspector@2.11.0 -- npx -y @ferscloud/fers-mcp@2.1.0
  • Optional settings the entry also lists (left out above): FERS_API_KEY.
  • This runs the publisher's code on your machine (npx). Read its README first.
  • The MCP Inspector lists the server's tools, resources and prompts; a tool you call there runs for real.

From the remote endpoint (Streamable HTTP)

Add to CursorAn install link in the format Cursor documents, holding the Cursor config below.

Claude Desktop or claude.ai
Settings → Connectors → Add custom connector, then paste:
https://ferscloud.com/api/mcp
Cursor · .cursor/mcp.json in a project, or ~/.cursor/mcp.json
{
  "mcpServers": {
    "fers": {
      "url": "https://ferscloud.com/api/mcp"
    }
  }
}
VS Code · .vscode/mcp.json
{
  "servers": {
    "fers": {
      "type": "http",
      "url": "https://ferscloud.com/api/mcp"
    }
  }
}
VS Code (command line) · Bash or zsh terminal (macOS, Linux)
code --add-mcp '{"name":"fers","type":"http","url":"https://ferscloud.com/api/mcp"}'
Claude Code
claude mcp add --transport http fers https://ferscloud.com/api/mcp
Try it in the MCP Inspector · runs on your machine, opens in your browser · Node 22.19+
npx @modelcontextprotocol/inspector@2.11.0 --server-url https://ferscloud.com/api/mcp --transport http
  • The server runs on the operator's infrastructure; it may ask you to sign in when you first connect.
  • The MCP Inspector lists the server's tools, resources and prompts; a tool you call there runs for real.

Built from the server's registry entry with each client's documented format (checked 2026-10-14; the Cursor link and the VS Code command 2026-10-19; the MCP Inspector command 2026-10-21). Values in < > are yours to fill in; this page never contains a key. Where the server needs a setting the entry does not declare, it can still fail to start.

Can it be installed, and is it up to date?

Version pin · advisories

Listed version

Registry lists
2.1.0
Latest stable
2.1.0
Status
current
Withdrawn
no

Source: registry.npmjs.org · 2026-10-23. About the version the registry lists; a manual install may resolve to a different one.

Dependency advisories

critical0high0moderate0low0

Counted in the full dependency tree as resolved on 2026-10-24 (npm audit; each bar counts packages with an advisory, not advisories). Bars share one scale. The package itself has no known vulnerability (OSV.dev).

Integrity, provenance, license

Integrity
sha512-avj/e3zrruO7j91wa…
Signature
signed

Source: the package registry · 2026-10-22.

Does the registry listing match what we found?

Feature #6

The registry verifies a package once, when it is published, and does not re-check it. A difference below is about the listing, not a judgement of the publisher.

Registry saysWe foundResultSource · date
Remote endpoint ferscloud.com/api/mcpEndpoint answered and asked for sign-inmatchesour test · 2026-10-23
No credential declared as requiredRequired sign-indiffersour test · 2026-10-23
Published package can be startedStarted and answeredmatchesour test · 2026-10-23
Version 2.1.0 on npmExists and can be installedmatchesnpm · 2026-10-23
Repository github.com/Jeroen124/FERS_coreOpens publiclymatchesapi.github.com · 2026-10-22

Who made it?

Feature #7 · lineage

Facts about the publisher. We do not turn them into a trust score.

Namespace
com.ferscloud
GitHub owner
a personal account (Jeroen124)
Build record
signed
Repository
github.com/Jeroen124/FERS_core
Stars
2
Repository age
over a year
Last push
0–30 days ago
Archived
no
Security policy
none found (we looked for SECURITY.md in the repository and in its owner’s .github repository)

Source: the registry entry and api.github.com · 2026-10-22; security policy read from GitHub · 2026-10-23.

Publish this server? Run these checks against it yourself before release, from your own machine: a server the command starts, or your own server at its URL after a one-time proof that you control it: npx protocolprobe-selftest.

Choosing

Record checks

Public records · not a safety rating

6 of 9 record checks met

  • Not ranked by downloads: no download figure available
  • Not ranked by stars: 2 stars (ranked from 10)
  • MetRegistry entry is active and says how to run itActive, with a package or a remote address.
  • MetSource repository link opensThe linked GitHub repository is public.
  • MetRepository is not archivedNot archived.
  • MetCode pushed to the repository in the 90 days before our checkLast push 0-30 days before our check.
  • Not metRepository publishes a security policy (SECURITY.md)No SECURITY.md in the places GitHub reads it from.
  • Not metPackage names its licence with a standard (SPDX) identifierA licence is mentioned, but not as a standard identifier (for example "SEE LICENSE IN …").
  • MetThe version the registry lists can be installed and is not withdrawnThe listed version exists and is current.
  • Not metnpm package carries build provenance (attestation)Signed by npm, but no build attestation.
  • MetNo known critical or high advisory in the package or its dependenciesNone known in the package or its dependency tree.

Read from public records only: the registry entry, npm/PyPI, GitHub and advisory databases, checked 2026-10-22. No tool was called. Only “met” and “not met” are counted, so the total differs between servers; a check that does not apply or that we could not run is listed, never counted against it. It is not a safety rating. How each check works · Leaderboards

Common questions about com.ferscloud/fers

Answered from the data above

Is com.ferscloud/fers safe to install?

We do not rate servers as safe or unsafe. 6 of its 9 applicable record checks are met (facts from public records, each listed on this page). What the records show: Its source repository opens publicly. Its repository had a push in the last 90 days. The listed version is the latest stable release. The package itself has no known vulnerability (OSV.dev). Its full dependency tree has no known advisory. 23 of its tools describe changing data (our AI model's reading of the descriptions). These are facts with their sources on this page, not a safety guarantee, and we did not run its tools.

Is com.ferscloud/fers free to use?

Its website (ferscloud.com/mcp) describes a freemium pricing model. This is an AI-classified reading of the page on 2026-10-23, so check the page itself before relying on it.

Has com.ferscloud/fers been security tested?

Partly. 4 of the 13 checks that apply to it were exercised. We started the package in an isolated sandbox and read what it declares, but this test round was read-only, so its tools were not called. No security verdict is published before verification.

What can com.ferscloud/fers do?

It lists 36 tools. In our AI model's reading of their descriptions (two runs had to agree, nobody checked it by hand), they include tools that read or search, create or change data, run code or commands and generate content. We did not call any tool, so this describes the text, not the behaviour.

Can com.ferscloud/fers change or delete data?

23 of its tools say in their description that they create, edit, delete, send or run something (our AI model's reading). We did not call any tool, so we cannot say what actually happens.

Does com.ferscloud/fers publish a security policy?

We found no SECURITY.md in its repository (root, .github/ or docs/) or in its owner's .github repository.

Is the listed version current?

Yes. The registry lists 2.1.0, the latest stable release on npm.

Where is the source code of com.ferscloud/fers?

In github.com/Jeroen124/FERS_core, which opens publicly.

Found this page useful?

Anonymous · no sign-in

A quick, anonymous reaction — no account, no email. One per kind from your browser. The tally updates when the page is next refreshed, and it is only a rough count, never a safety rating or a measured number of people.

Compare with another server

Side by side: registry entry, our read-only session, the tools and the 18 classification fields. Same values as each page; no score.

Security testing

What did we test, and what did we leave out?

18 checks · features #1, #2

Not probed (read-only run)

We started the package in an isolated sandbox and read what it declares, but this test round was read-only, so its tools were not called. No security score is given; a check we did not run is never counted as passed.

The 18 checks at a glanceour test · 2026-10-23
  1. Inventory: exercised
  2. Hidden instructions: exercised
  3. Real execution: not run · our policy
  4. Secret leak: not run · nothing to check it against
  5. Internal addresses: not run · our policy
  6. Unconfirmed changes: not run · our policy
  7. Bad input: not run · our policy
  8. Model requests: not run · nothing to check it against
  9. Sensitive questions: not run · nothing to check it against
  10. Folder boundary: not run · our policy
  11. Log leaks: not run · nothing to check it against
  12. Hidden content: exercised
  13. Fake assistant turns: exercised
  14. Token passthrough: not applicable
  15. Token audience: not applicable
  16. Sign-in redirect: not applicable
  17. Consent handling: not applicable
  18. Sign-in metadata: not applicable

4 exercised9 not run (reason given)5 not applicable

Each check ends in exactly one state: exercised, not run (with the reason), or not applicable (with the reason). 4 of the 13 checks that apply to it were exercised. We do not publish security-check outcomes for named servers.

Exercised · 4
  • 1Inventory
    tool-list
    Reads the declared tools, resources and prompts.exercised
  • 2Hidden instructions
    description-poisoning
    Looks for hidden instructions in tool descriptions.exercised
  • 12Hidden content
    audience-hiding
    Checks resources that hide content from the user.exercised
  • 13Fake assistant turns
    fake-assistant-turn
    Checks prompts that pose as the assistant's own words.exercised
Not run, with the reason · 9
  • 3Real execution
    real-execution
    Calls a tool and checks what really happens.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy
  • 4Secret leak
    canary-leak
    Plants a fake secret and checks whether it leaks.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 5Internal addresses
    ssrf
    Checks whether a tool can be steered to internal addresses.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy
  • 6Unconfirmed changes
    write-without-confirmation
    Checks whether tools that change data act without asking.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy
  • 7Bad input
    error-handling
    Sends bad input and watches how the server answers.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy
  • 8Model requests
    sampling
    Checks whether the server asks the client's model to act for it.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 9Sensitive questions
    elicitation-sensitive-data
    Checks whether the server asks users for sensitive data.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 10Folder boundary
    root-boundary
    Checks whether the server reaches outside the folders it was given.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy
  • 11Log leaks
    logging-side-channel
    Checks whether log messages carry data they should not.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
Does not apply to this server · 5
  • 14Token passthrough
    token-passthrough
    Checks whether the server forwards a user's token to other services.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable
  • 15Token audience
    token-audience-validation
    Checks whether tokens meant for another service are accepted.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable
  • 16Sign-in redirect
    open-redirect
    Checks the sign-in redirect for abuse.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable
  • 17Consent handling
    confused-deputy
    Checks consent handling when one service acts for another.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable
  • 18Sign-in metadata
    oauth-url-scheme
    Checks the published sign-in metadata for unsafe URLs.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable

Source: our own test in an isolated sandbox, 2026-10-23, mcp-runtime-engine@0.1.0. Which checks count and why follows our published scoring model. This server also has a remote test (1 of 18 applicable checks exercised).

What happened during the test?

Feature #8

The steps in order, as the test record holds them.

  1. 0 msStarted the published package in an isolated sandbox (read-only mode)
  2. 1,652 msConnected after 0 redirects.
  3. Read the inventory: 36 tools, 1,661 resources, 4 prompts.
  4. 3,461 msFinished: 4 checks exercised.

Reference

How is it classified?

18 fields

One value per field, each with its source. Fields written by AI models are marked. A field with no value says why.

TopicAI-classified
no value
No value: the two AI models (Gemini and Claude) disagreed, so neither answer is shown.
Pricing modelAI-classified
freemium
read from ferscloud.com/mcp · 2026-10-23

“Free for non-commercial use up to 100 members; Pro, which covers commercial use, up to 10,000.”

Programming language
api.github.com · 2026-10-23
Hosting type
registry · 2026-10-23
MCP capability
completions, prompts, resources, tools
our test · 2026-10-23
Transport
standard input/output, streamable HTTP
registry · 2026-10-23
Required credentials
none declared
registry · no declaration is not a guarantee
Package registry
registry · 2026-10-23
Freshness
0–30 days
registry updatedAt · 2026-10-23
Lifecycle status
registry · 2026-10-23
License class
not stated
license field present but not a usable SPDX identifier: "SEE LICENSE IN LICENSE"
Integrity hash
declared (sri)
package registry · 2026-10-22
Signature / provenance
signed
package registry · 2026-10-22
Dependency advisories
none known
npm audit · 2026-10-24
Popularity
not stated
npm downloads API gave no number (404)
Publisher signals
owner: a personal account · repository age: over a year · stars: 0–9 · build record: signed
api.github.com · 2026-10-22
Maintenance
api.github.com · 2026-10-22
Environment
either (remote or your machine)
where it runs, from the hosting type

“Not stated” means the source did not state it; “does not apply” means it does not apply to this kind of server; “our limit” means our own lookup failed. A linked value opens the directory filtered to the same value.

Cite or correct this page

Sources and corrections

Suggested citation

ProtocolProbe. “com.ferscloud/fers: MCP server record.” Data checked 2026-10-23. https://protocolprobe.com/mcp/servers/com.ferscloud/fers

Figures are valid for the date shown. Our facts on this page are CC BY 4.0: reuse them with a link and the check date. Quoted text (the publisher’s descriptions, website quotes, tool names) is not ours to license.

As JSON: this record in the API · API documentation.

Badge for your README

ProtocolProbe: 6 of 9 record checks met

[![ProtocolProbe](https://protocolprobe.com/api/v1/badge/com.ferscloud/fers)](https://protocolprobe.com/mcp/servers/com.ferscloud/fers)

It shows this server's record-check count: facts from public records, no tool called. It is not a security rating or a pass. It links here and updates after each data reload.

Something wrong, or is this yours?

If a fact here is wrong, tell us and we will re-check it. If you operate this server, you can run our checks on it yourself with the free self-test command; we call no server’s tools ourselves for anything shown here.

Write to hello@protocolprobe.com · corrections log · methodology