addrbookFor publishers
← The evidence ledger

Evidence row 561495

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint a98a51fd-2d72-47a3-b3a3-17fea547f3fb
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
62c11f0743905e7be6f66f2b4f2a0d0a3612db6b84bffffdca2517a5c6616ffe
Leaf
0xe96316202560415b767b45013127ce40b31bd4d24ba3cce4e09f9ce389ced3ea

What was observed

{
  "count": 7,
  "tools": [
    {
      "description": "Thrust, torque and shaft power for one propeller, from its printed size.\n\n    A closed-form momentum plus blade-element equation — no motor, no battery,\n    no account. Give the size as it is printed: a 10x5 is `diameter_in=10`,\n    `pitch_in=5`. `chord_ratio` is the chord at 75 % radius over the diameter:\n    0.065 thin electric, 0.07 sport, 0.10 slow flyer, 0.11 multirotor.\n    ",
      "inputSchema": {
        "properties": {
          "airspeed_m_s": {
            "default": 0,
            "title": "Airspeed M S",
            "type": "number"
          },
          "altitude_m": {
            "default": 0,
            "title": "Altitude M",
            "type": "number"
          },
          "blades": {
            "default": 2,
            "title": "Blades",
            "type": "integer"
          },
          "camber_pct": {
            "default": 3.2,
            "title": "Camber Pct",
            "type": "number"
          },
          "chord_ratio": {
            "default": 0.065,
            "title": "Chord Ratio",
            "type": "number"
          },
          "diameter_in": {
            "title": "Diameter In",
            "type": "number"
          },
          "pitch_in": {
            "title": "Pitch In",
            "type": "number"
          },
          "rpm": {
            "title": "Rpm",
            "type": "number"
          }
        },
        "required": [
          "diameter_in",
          "pitch_in",
          "rpm"
        ],
        "title": "estimate_propellerArguments",
        "type": "object"
      },
      "name": "estimate_propeller"
    },
    {
      "description": "Read one database row by its id (`comp_…`), with provenance.\n\n    Propeller rows give diameter, pitch, blade count, weight and maximum rpm.\n    Blade station geometry is never returned.\n    ",
      "inputSchema": {
        "properties": {
          "component_id": {
            "title": "Component Id",
            "type": "string"
          }
        },
        "required": [
          "component_id"
        ],
        "title": "get_componentArguments",
        "type": "object"
      },
      "name": "get_component"
    },
    {
      "description": "Read a stored result: a share `token` from a run, or a `simulation_id`.\n\n    `simulation_id` needs a ThrustLab API key in `Authorization: Bearer` and\n    reads only that account's own runs.\n    ",
      "inputSchema": {
        "properties": {
          "simulation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Simulation Id"
          },
          "token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Token"
          }
        },
        "title": "get_resultArguments",
        "type": "object"
      },
      "name": "get_result"
    },
    {
      "description": "How accurate a model is, measured against wind-tunnel and bench data.\n\n    `model` is \"fast\", \"full\", or an exact report slug such as \"prom-5.3\". The\n    numbers are error against measured data by partition and channel, with the\n    envelope they were measured inside. Quote the model name with the number.\n    ",
      "inputSchema": {
        "properties": {
          "model": {
            "default": "full",
            "title": "Model",
            "type": "string"
          }
        },
        "title": "get_validation_summaryArguments",
        "type": "object"
      },
      "name": "get_validation_summary"
    },
    {
      "description": "Find motors, propellers or batteries in the ThrustLab database.\n\n`component_type` is \"motor\", \"propeller\" or \"battery\". `query` is a\ncase-insensitive substring of the part name or its maker (\"APC\", \"T-Motor\",\n\"13x6.5\"). The maker sits under `spec.brand` for motors and batteries and under\n`spec.type` for propellers. `limit` is capped at 200 rows a\npage; when `has_more` is true, pass the returned `next_offset` as `offset` to\nread the next page. Each row carries its datasheet values, its source and the\nCC BY 4.0 attribution line. Pass a returned `id` to\n`simulate_powertrain`.\n",
      "inputSchema": {
        "properties": {
          "component_type": {
            "title": "Component Type",
            "type": "string"
          },
          "limit": {
            "default": 25,
            "title": "Limit",
            "type": "integer"
          },
          "offset": {
            "default": 0,
            "title": "Offset",
            "type": "integer"
          },
          "query": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Query"
          },
          "sort_by": {
            "default": "name",
            "title": "Sort By",
            "type": "string"
          },
          "sort_order": {
            "default": "asc",
            "title": "Sort Order",
            "type": "string"
          }
        },
        "required": [
          "component_type"
        ],
        "title": "search_componentsArguments",
        "type": "object"
      },
      "name": "search_components"
    },
    {
      "description": "Solve one operating point of a whole powertrain on the Fast model.\n\n    Battery, ESC, motor and propeller are solved together, so the answer is a\n    real thrust and current, not a propeller curve. The numbers come back in\n    `result` (`result.All` = system totals in SI units: thrust N, current A,\n    power W, time s; one entry per rotor; `result.Battery`), with a share URL.\n    No second call is needed to read them.\n    ",
      "inputSchema": {
        "$defs": {
          "PowertrainInput": {
            "description": "One powertrain, as the anonymous endpoint accepts it (spec D4).\n\nCatalog components are referenced by their public id (``comp_…``, from\n``search_components``). The propeller may instead be given as a label, which\nis all the Fast model needs.",
            "properties": {
              "airspeed_m_s": {
                "default": 0,
                "description": "0 is a static run.",
                "maximum": 300,
                "minimum": 0,
                "title": "Airspeed M S",
                "type": "number"
              },
              "altitude_m": {
                "default": 0,
                "maximum": 11000,
                "minimum": 0,
                "title": "Altitude M",
                "type": "number"
              },
              "battery_id": {
                "description": "Catalog battery public id.",
                "title": "Battery Id",
                "type": "string"
              },
              "motor_id": {
                "description": "Catalog motor public id, e.g. comp_2xK….",
                "title": "Motor Id",
                "type": "string"
              },
              "propeller_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Catalog propeller public id.",
                "title": "Propeller Id"
              },
              "propeller_label": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/PropellerLabel"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Use instead of propeller_id to run from the printed size."
              },
              "rotor_count": {
                "default": 1,
                "description": "Rotors on the craft.",
                "maximum": 16,
                "minimum": 1,
                "title": "Rotor Count",
                "type": "integer"
              },
              "throttle_pct": {
                "default": 100,
                "exclusiveMinimum": 0,
                "maximum": 100,
                "title": "Throttle Pct",
                "type": "number"
              }
            },
            "required": [
              "motor_id",
              "battery_id"
            ],
            "title": "PowertrainInput",
            "type": "object"
          },
          "PropellerLabel": {
            "description": "What is printed on the propeller — all the Fast model reads.\n\nInches and a spoken family name, because that is how a propeller is sold and\nhow a user will say it. :func:`to_schema_label` turns this into the metres\nand the enum ``app.schemas.simulation.PropellerLabel`` declares.",
            "properties": {
              "camber_pct": {
                "anyOf": [
                  {
                    "maximum": 8,
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Section camber in percent. Defaults to 3.2.",
                "title": "Camber Pct"
              },
              "chord_ratio": {
                "anyOf": [
                  {
                    "exclusiveMinimum": 0,
                    "maximum": 0.5,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Chord at 75 % radius over diameter. Give it instead of 'family' (or with family='custom'); the two cannot both be set.",
                "title": "Chord Ratio"
              },
              "diameter_in": {
                "description": "Diameter in inches, e.g. 10 for a 10x5.",
                "exclusiveMinimum": 0,
                "maximum": 400,
                "title": "Diameter In",
                "type": "number"
              },
              "family": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Chord-ratio preset: 'thin electric' (0.065 D), 'sport' (0.07 D), 'slow flyer' (0.10 D) or 'multirotor' (0.11 D). Defaults to sport.",
                "title": "Family"
              },
              "num_blades": {
                "default": 2,
                "description": "Blade count.",
                "maximum": 8,
                "minimum": 2,
                "title": "Num Blades",
                "type": "integer"
              },
              "pitch_in": {
                "description": "Pitch in inches, e.g. 5 for a 10x5.",
                "exclusiveMinimum": 0,
                "maximum": 400,
                "title": "Pitch In",
                "type": "number"
              }
            },
            "required": [
              "diameter_in",
              "pitch_in"
            ],
            "title": "PropellerLabel",
            "type": "object"
          }
        },
        "properties": {
          "powertrain": {
            "$ref": "#/$defs/PowertrainInput"
          }
        },
        "required": [
          "powertrain"
        ],
        "title": "simulate_powertrainArguments",
        "type": "object"
      },
      "name": "simulate_powertrain"
    },
    {
      "description": "Solve a powertrain across a throttle or airspeed range, up to 25 points.\n\n    `sweep.steps` is the NUMBER OF POINTS, not a step size: start 40, stop 100,\n    steps 4 gives 40, 60, 80 and 100. One sweep beats a loop of single points.\n    The points come back in `result.points` with the share URL; no second call\n    is needed to read them.\n    ",
      "inputSchema": {
        "$defs": {
          "PowertrainInput": {
            "description": "One powertrain, as the anonymous endpoint accepts it (spec D4).\n\nCatalog components are referenced by their public id (``comp_…``, from\n``search_components``). The propeller may instead be given as a label, which\nis all the Fast model needs.",
            "properties": {
              "airspeed_m_s": {
                "default": 0,
                "description": "0 is a static run.",
                "maximum": 300,
                "minimum": 0,
                "title": "Airspeed M S",
                "type": "number"
              },
              "altitude_m": {
                "default": 0,
                "maximum": 11000,
                "minimum": 0,
                "title": "Altitude M",
                "type": "number"
              },
              "battery_id": {
                "description": "Catalog battery public id.",
                "title": "Battery Id",
                "type": "string"
              },
              "motor_id": {
                "description": "Catalog motor public id, e.g. comp_2xK….",
                "title": "Motor Id",
                "type": "string"
              },
              "propeller_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Catalog propeller public id.",
                "title": "Propeller Id"
              },
              "propeller_label": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/PropellerLabel"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Use instead of propeller_id to run from the printed size."
              },
              "rotor_count": {
                "default": 1,
                "description": "Rotors on the craft.",
                "maximum": 16,
                "minimum": 1,
                "title": "Rotor Count",
                "type": "integer"
              },
              "throttle_pct": {
                "default": 100,
                "exclusiveMinimum": 0,
                "maximum": 100,
                "title": "Throttle Pct",
                "type": "number"
              }
            },
            "required": [
              "motor_id",
              "battery_id"
            ],
            "title": "PowertrainInput",
            "type": "object"
          },
          "PropellerLabel": {
            "description": "What is printed on the propeller — all the Fast model reads.\n\nInches and a spoken family name, because that is how a propeller is sold and\nhow a user will say it. :func:`to_schema_label` turns this into the metres\nand the enum ``app.schemas.simulation.PropellerLabel`` declares.",
            "properties": {
              "camber_pct": {
                "anyOf": [
                  {
                    "maximum": 8,
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Section camber in percent. Defaults to 3.2.",
                "title": "Camber Pct"
              },
              "chord_ratio": {
                "anyOf": [
                  {
                    "exclusiveMinimum": 0,
                    "maximum": 0.5,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Chord at 75 % radius over diameter. Give it instead of 'family' (or with family='custom'); the two cannot both be set.",
                "title": "Chord Ratio"
              },
              "diameter_in": {
                "description": "Diameter in inches, e.g. 10 for a 10x5.",
                "exclusiveMinimum": 0,
                "maximum": 400,
                "title": "Diameter In",
                "type": "number"
              },
              "family": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Chord-ratio preset: 'thin electric' (0.065 D), 'sport' (0.07 D), 'slow flyer' (0.10 D) or 'multirotor' (0.11 D). Defaults to sport.",
                "title": "Family"
              },
              "num_blades": {
                "default": 2,
                "description": "Blade count.",
                "maximum": 8,
                "minimum": 2,
                "title": "Num Blades",
                "type": "integer"
              },
              "pitch_in": {
                "description": "Pitch in inches, e.g. 5 for a 10x5.",
                "exclusiveMinimum": 0,
                "maximum": 400,
                "title": "Pitch In",
                "type": "number"
              }
            },
            "required": [
              "diameter_in",
              "pitch_in"
            ],
            "title": "PropellerLabel",
            "type": "object"
          },
          "SweepAxis": {
            "description": "A 1-D sweep axis. ``steps`` is the NUMBER OF POINTS, not a step size.",
            "properties": {
              "parameter": {
                "description": "'throttle_pct' or 'airspeed_m_s'.",
                "title": "Parameter",
                "type": "string"
              },
              "start": {
                "title": "Start",
                "type": "number"
              },
              "steps": {
                "description": "Point count, at most 25 anonymous.",
                "maximum": 25,
                "minimum": 2,
                "title": "Steps",
                "type": "integer"
              },
              "stop": {
                "title": "Stop",
                "type": "number"
              }
            },
            "required": [
              "parameter",
              "start",
              "stop",
              "steps"
            ],
            "title": "SweepAxis",
            "type": "object"
          }
        },
        "properties": {
          "powertrain": {
            "$ref": "#/$defs/PowertrainInput"
          },
          "sweep": {
            "$ref": "#/$defs/SweepAxis"
          }
        },
        "required": [
          "powertrain",
          "sweep"
        ],
        "title": "sweep_powertrainArguments",
        "type": "object"
      },
      "name": "sweep_powertrain"
    }
  ]
}

What the leaf hashes

{"body":"62c11f0743905e7be6f66f2b4f2a0d0a3612db6b84bffffdca2517a5c6616ffe","id":561495,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793137155788495,"prev":null,"subject":"a98a51fd-2d72-47a3-b3a3-17fea547f3fb","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).

  1. 0xe96308fe8d206c43e93502530654854dabf12a979a6d41ed1526e6ac0feccbb9
  2. 0x9c8aac2cd7cfb23319804e31e267270127d34f877cff15c8562d6718858243a7
  3. 0xc3816192353e7a2999565a497eccebb9bb704e7e264bb8a3ea419c0058cc2ebc
  4. 0xadf2110d4f85fc58c648348dfa00495879ae96760fef2c8190bb70675083c6f9
  5. 0xfcd7de753bda6eabb8021841620679d46031b629771e83afbdce092f2d31ab95
  6. 0x9e374a536213e82d1deb69a6239dc71f3079518fa28c08a1ca860a70438d20ed
  7. 0x9315b006791db30195dd80c63e95b27439e73e8040472e37fb44973542bfb971
  8. 0x0f918c2e5170ca622f7776427c034d9d7f774ae42ed25f824adc77b442356788
  9. 0xf8a87f7879fcd72045961881d5a02c4be75f4ea4eb1d8c262575084a37a5b4ec
  10. 0x2c8d0460a0b46eeed71f98874e5e7ae9376b1188e21b9ddd589f50f3dc369234
  11. 0x6a1ca1d26d7fbc3e226dc64da92fdc4ab49e077ac1ba6b010fb0df91826f652f
  12. 0x555cdc5682ffc7c8210a3ce0f57c03bc80456dce0d2723d1de26e7d1e57b0f94
  13. 0xab6eb305329046d5ccb835dd8ca955f794e3ca110379a94dbdc780d016448561
  14. 0x41f9f462759cb539183e979fb3eb967d94755cf039c44a64a9a3c4ad97523cfd
  15. 0x56f7109d4cde42492651beb1237c13cdcbf95e6fee2b2482391a2388e04c4629
  16. 0x8745bd887f5ce9f7a49558fd2b04cdcd97a05ea9f8a23f62d0e80cb13d328b0f
  17. 0xdf1105afdc109de3c09a98fc8a3864159ad964e6f49b635c105a27a1e1f14310
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON