← The evidence ledger
Evidence row 2143823
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint d41afe07-d6f8-432d-b43c-5f7208fab1e2
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- d6f8eaa3c27c8dc564100fe684be346ca578263d545c555c5a6e1819755888d4
- Leaf
- 0x1ea2db4bf42bd0638f725b2d3d53a06d7656c92b5c48fcc3c43437585b16cc9a
What was observed
{
"count": 7,
"tools": [
{
"description": "Movement slugs whose name holds `query` (e.g. \"row\", \"sled\"), for\n suggest_workouts' include and exclude, machines and runs first.",
"inputSchema": {
"properties": {
"kind": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Keep one movement kind only, one of strength, olympic, plyo, cyclic, carry, mobility (cyclic: row, ski, bike, run); all when omitted. Example: \"cyclic\".",
"title": "Kind"
},
"query": {
"description": "Text the movement name holds, any case. Example: \"sled\".",
"maxLength": 100,
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "find_movementsArguments",
"type": "object"
},
"name": "find_movements"
},
{
"description": "New workouts unlike any in the library, from our generator (no AI),\n as text: evolved from the library's workouts and movements (more lines,\n fewer, other formats) into kinds it does not hold. For one person.\n Nothing is saved; other ones each call. suggest_workouts and\n vary_workout stay close to library workouts instead.\n\n A shortfall says what blocked it.",
"inputSchema": {
"properties": {
"bodyweight": {
"default": true,
"description": "False also leaves out movements needing no equipment (burpees, runs), so only the listed equipment is used. Example: false.",
"title": "Bodyweight",
"type": "boolean"
},
"count": {
"default": 3,
"description": "How many workouts, at most 5. Example: 3.",
"maximum": 5,
"minimum": 1,
"title": "Count",
"type": "integer"
},
"equipment": {
"anyOf": [
{
"items": {
"maxLength": 100,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "What the athletes have, as list_equipment keys or names (\"echo-bike\" or \"echo\", \"row erg\", \"ski erg\"), one item per entry. Say \"1 dumbbell\" or \"1 kettlebell\" when there is only one: movements needing a pair (farmers carry, dumbbell bench press) are left out. Other counts are ignored (\"1 echo\" is the echo bike): say how many train in people. Movements needing anything else (a bench press needs a bench) are left out; runs need \"running\" in the list. A name matching several keys or none is an error naming them. Example: [\"1 dumbbell\", \"box\", \"ski-erg\"]. Omitted is a full gym.",
"title": "Equipment"
},
"exclude": {
"anyOf": [
{
"items": {
"maxLength": 100,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Movement slugs or names (from find_movements) every workout must leave out. Example: [\"burpees\"].",
"title": "Exclude"
},
"format": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only this format: for_time, amrap, emom, intervals. Any when omitted. Example: \"amrap\".",
"title": "Format"
},
"include": {
"anyOf": [
{
"items": {
"maxLength": 100,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Movement slugs or names (from find_movements) every workout must hold; fewer come back the more are named. Example: [\"wallballs\"].",
"title": "Include"
},
"minutes_max": {
"anyOf": [
{
"maximum": 240,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longest estimated workout length, in minutes. Example: 25.",
"title": "Minutes Max"
},
"minutes_min": {
"anyOf": [
{
"maximum": 240,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Shortest estimated workout length, in minutes. Example: 10.",
"title": "Minutes Min"
},
"sex": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Who trains, for the weights and machine doses: \"men\", \"women\", or \"mixed\" (a man and a woman together: each at their own; Hyrox stations at the mixed doubles race load). Omitted when the user did not say: every line reads both, men's/women's (\"9/6 kg\", \"12/10 kcal\"). Anything but men gets only workouts with a women's weight on every loaded line. Example: \"women\".",
"title": "Sex"
},
"show_scores": {
"default": true,
"description": "True adds a line of scores under each workout: feasibility (0-100, can it be done as written), difficulty (0-100, the chance of not finishing inside the cap), and against the workout it was made from: stimulus (0-1, CrossFit's stimulus kept, with the levers changed), work (x the seed's), mix shift (how far the work moved between movement patterns), design (0-1) and, for Hyrox workouts, race fidelity (0-1). Example: false.",
"title": "Show Scores",
"type": "boolean"
}
},
"title": "generate_workoutsArguments",
"type": "object"
},
"name": "generate_workouts"
},
{
"description": "The workout archetypes the generator makes, one per line: key, name,\n formats, minutes, line count, and the session slots it serves.",
"inputSchema": {
"properties": {
"style": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Keep only one style's archetypes: crossfit, hyrox or hybrid; all when omitted. Example: \"hyrox\".",
"title": "Style"
}
},
"title": "list_archetypesArguments",
"type": "object"
},
"name": "list_archetypes"
},
{
"description": "The equipment suggest_workouts' `equipment` takes, one per line:\n key: name, with \"(machine)\" on ergometers (rower, ski erg, bikes).\n Keys, names and common names (\"echo\", \"row erg\", \"DB\", \"kb\") all work.",
"inputSchema": {
"properties": {},
"title": "list_equipmentArguments",
"type": "object"
},
"name": "list_equipment"
},
{
"description": "A user's verdict on a workout from these tools: a mistake (wrong\n equipment, a weight, a dose that cannot fit), or a workout they found bad\n or good. Stores the user's words for Goblin Gains, nothing else about the\n user.",
"inputSchema": {
"properties": {
"note": {
"description": "What the user said about the workout, in their words. Example: \"Farmers carry needs two dumbbells; I said I have one.\"",
"maxLength": 2000,
"minLength": 1,
"title": "Note",
"type": "string"
},
"verdict": {
"description": "One of mistake, bad, good: \"mistake\" (something in it is wrong), \"bad\" (it works but is a poor workout), \"good\". Example: \"mistake\".",
"maxLength": 100,
"title": "Verdict",
"type": "string"
},
"workout": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The workout's save link from suggest_workouts, vary_workout or generate_workouts, or its id; omitted for the tools as a whole. Example: \"https://app.goblingains.com/w/<id>\".",
"title": "Workout"
}
},
"required": [
"note",
"verdict"
],
"title": "report_workoutArguments",
"type": "object"
},
"name": "report_workout"
},
{
"description": "New workouts from our generator, as text. Ask this instead of writing\n workouts yourself. Nothing is saved.\n\n Example, two people with an echo bike, rower and ski erg, 40-60 min:\n suggest_workouts(count=5, people=2, minutes_min=40, minutes_max=60,\n equipment=[\"echo-bike\", \"row-ergometer\", \"ski-erg\"], bodyweight=False)\n\n A shortfall says what blocked it.",
"inputSchema": {
"properties": {
"archetype": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A key or name from list_archetypes; any when omitted. Example: \"A5\" or \"chipper\".",
"title": "Archetype"
},
"bodyweight": {
"default": true,
"description": "False also leaves out movements needing no equipment (burpees, runs), so only the listed equipment is used. Example: false.",
"title": "Bodyweight",
"type": "boolean"
},
"cap_minutes": {
"anyOf": [
{
"maximum": 240,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "A time cap the workout must fit, in whole minutes. Example: 30.",
"title": "Cap Minutes"
},
"count": {
"default": 3,
"description": "How many workouts, at most 5; from 3 on, a mix of archetypes (at most 2 of one unless nothing else fits). Example: 3.",
"maximum": 5,
"minimum": 1,
"title": "Count",
"type": "integer"
},
"equipment": {
"anyOf": [
{
"items": {
"maxLength": 100,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "What the athletes have, as list_equipment keys or names (\"echo-bike\" or \"echo\", \"row erg\", \"ski erg\"), one item per entry. Say \"1 dumbbell\" or \"1 kettlebell\" when there is only one: movements needing a pair (farmers carry, dumbbell bench press) are left out. Other counts are ignored (\"1 echo\" is the echo bike): say how many train in people. Movements needing anything else (a bench press needs a bench) are left out; runs need \"running\" in the list. A name matching several keys or none is an error naming them. Example: [\"1 dumbbell\", \"box\", \"ski-erg\"]. Omitted is a full gym.",
"title": "Equipment"
},
"exclude": {
"anyOf": [
{
"items": {
"maxLength": 100,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Movement slugs or names (from find_movements) every workout must leave out. Example: [\"burpees\"].",
"title": "Exclude"
},
"include": {
"anyOf": [
{
"items": {
"maxLength": 100,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Movement slugs or names (from find_movements) every workout must hold. Example: [\"wallballs\", \"sled-push\"].",
"title": "Include"
},
"minutes_max": {
"anyOf": [
{
"maximum": 240,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longest estimated workout length, in minutes. Example: 60.",
"title": "Minutes Max"
},
"minutes_min": {
"anyOf": [
{
"maximum": 240,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Shortest estimated workout length, in minutes. Example: 40.",
"title": "Minutes Min"
},
"only": {
"default": false,
"description": "True: the workouts hold the included movements and nothing else (each may repeat). Needs include. Example: true.",
"title": "Only",
"type": "boolean"
},
"partner": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True: only partner workouts (two people share the work: turns at a station, or each on a station at once, then swap). False: none. Omitted: either. Example: true.",
"title": "Partner"
},
"people": {
"default": 1,
"description": "How many train together with one of each machine. Above 1, only workouts they can share come back: partner workouts (taking turns on a station), or EMOMs/intervals with a different machine on every line and at least one line per person (start apart, rotate). Example: 2.",
"maximum": 20,
"minimum": 1,
"title": "People",
"type": "integer"
},
"sex": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Who trains, for the weights and machine doses: \"men\", \"women\", or \"mixed\" (a man and a woman together: each at their own; Hyrox stations at the mixed doubles race load). Omitted when the user did not say: every line reads both, men's/women's (\"9/6 kg\", \"12/10 kcal\"). Anything but men gets only workouts with a women's weight on every loaded line. Example: \"women\".",
"title": "Sex"
},
"show_scores": {
"default": true,
"description": "True adds a line of scores under each workout: feasibility (0-100, can it be done as written), difficulty (0-100, the chance of not finishing inside the cap), and against the workout it was made from: stimulus (0-1, CrossFit's stimulus kept, with the levers changed), work (x the seed's), mix shift (how far the work moved between movement patterns), design (0-1) and, for Hyrox workouts, race fidelity (0-1). Example: false.",
"title": "Show Scores",
"type": "boolean"
},
"temperature": {
"default": 0,
"description": "0 to 1. 0: the same ask always brings the same workouts. Above 0: other ones each call, the higher the further from the library workouts they vary (0.3 close variations, 1 far ones). Example: 0.3.",
"title": "Temperature",
"type": "number"
}
},
"title": "suggest_workoutsArguments",
"type": "object"
},
"name": "suggest_workouts"
},
{
"description": "Variations of one library workout from our generator (no AI), as\n text, in its own format or another. Nothing is saved.\n\n A shortfall says what blocked it.",
"inputSchema": {
"properties": {
"bodyweight": {
"default": true,
"description": "False also leaves out movements needing no equipment (burpees, runs), so only the listed equipment is used. Example: false.",
"title": "Bodyweight",
"type": "boolean"
},
"count": {
"default": 3,
"description": "How many variations, at most 5. Example: 3.",
"maximum": 5,
"minimum": 1,
"title": "Count",
"type": "integer"
},
"equipment": {
"anyOf": [
{
"items": {
"maxLength": 100,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "What the athletes have, as list_equipment keys or names (\"echo-bike\" or \"echo\", \"row erg\", \"ski erg\"), one item per entry. Say \"1 dumbbell\" or \"1 kettlebell\" when there is only one: movements needing a pair (farmers carry, dumbbell bench press) are left out. Other counts are ignored (\"1 echo\" is the echo bike): say how many train in people. Movements needing anything else (a bench press needs a bench) are left out; runs need \"running\" in the list. A name matching several keys or none is an error naming them. Example: [\"1 dumbbell\", \"box\", \"ski-erg\"]. Omitted is the kit the workout already uses.",
"title": "Equipment"
},
"format": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Turn it into this format first: for_time, amrap, emom, intervals. About its minutes: an EMOM gives each line its own minute when a round is over 40 s, intervals rest as long as a round's work. Omitted keeps its own. Example: \"emom\".",
"title": "Format"
},
"name": {
"description": "The library workout's name or part of it, any case; several matches are an error listing them (up to 10) to ask again. Example: \"Fran\".",
"maxLength": 100,
"title": "Name",
"type": "string"
},
"people": {
"default": 1,
"description": "How many train together with one of each machine. Above 1, only workouts they can share come back: partner workouts (taking turns on a station), or EMOMs/intervals with a different machine on every line and at least one line per person (start apart, rotate). Example: 2.",
"maximum": 20,
"minimum": 1,
"title": "People",
"type": "integer"
},
"sex": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Who trains, for the weights and machine doses: \"men\", \"women\", or \"mixed\" (a man and a woman together: each at their own; Hyrox stations at the mixed doubles race load). Omitted when the user did not say: every line reads both, men's/women's (\"9/6 kg\", \"12/10 kcal\"). Anything but men gets only workouts with a women's weight on every loaded line. Example: \"women\".",
"title": "Sex"
},
"show_scores": {
"default": true,
"description": "True adds a line of scores under each workout: feasibility (0-100, can it be done as written), difficulty (0-100, the chance of not finishing inside the cap), and against the workout it was made from: stimulus (0-1, CrossFit's stimulus kept, with the levers changed), work (x the seed's), mix shift (how far the work moved between movement patterns), design (0-1) and, for Hyrox workouts, race fidelity (0-1). Example: false.",
"title": "Show Scores",
"type": "boolean"
},
"temperature": {
"default": 0.5,
"description": "0 to 1, how far they stray from it (0.2 close, 1 far). Example: 0.5.",
"title": "Temperature",
"type": "number"
}
},
"required": [
"name"
],
"title": "vary_workoutArguments",
"type": "object"
},
"name": "vary_workout"
}
]
}What the leaf hashes
{"body":"d6f8eaa3c27c8dc564100fe684be346ca578263d545c555c5a6e1819755888d4","id":2143823,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793625686365548,"prev":null,"subject":"d41afe07-d6f8-432d-b43c-5f7208fab1e2","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (444186 rows).
- 0x1ea2d296596f5836c12a4f05e13f2c2f2b59ea3265f7a07d6aa3259566f7c8ae
- 0xaf7ef2e8e69704767aea0e95321d24ce81e3394b5f5cc38bc2c9b4fa26f7c1a7
- 0xe2712d2b53ff445dea3c03f40b7f220097cc1a11ce0c6cd9148246c29ce43f60
- 0xac5d34d23ee5a730e51d917dd525decf71fc7150e9562b19b82e9ede836092cd
- 0x65b96df0cc719ffb21f935b71c5e83f08dbe79eed97eeaa4bc7e175806c63211
- 0xa9d7ebf3dd2b60d87a96ab39a79f8ec75720feac03f226d806c85bdbe607d6cb
- 0xcb1734e3bb00e4b7c9a9b0bbad97a1b3a1d585caa11e3d1db2cd9133af46080a
- 0xb5ba7ef3408280dcd4179e414ac4701abca2e76381566536964a7ae0295bbf3e
- 0xb08cca3e32f512331aac0995708194ed35513b4758cd315ae2ecd125b1b72942
- 0x67938f519f23ba4125684dc14b49ae67e7cd284cc7e83c905db5a5534f2b7341
- 0xac0fc923a0db6bc3966b63b9f80568be71e73b50d1e4f75f4cff6ce1027de1b2
- 0x921d0608297ee8b39f59114be3d8989b8d4efd3e464dd03aef90facc4e2624f6
- 0x350e03a59bf81961fd9ce694f08f9ba0239d9ea2496b0c0dc7998c9e9855326f
- 0xc63937235d47ff2107de3051477e395be67b96d91d1349c787bf4b1ef91b602f
- 0xcd21ec8d72a18a2d4513e4fd309abbb530810fb1dbeecd4b9b85acb4d6ff8f12
- 0xac40f077ca4be8c3432a67771725cc315e8101fc2649999cfad2c900a7640e27
- 0x53a741b69e9e51c4a288a74712aa6ac3fb28c8923cd3e6461d161c4f2d48b31a
- 0x050f2978b537f7afb21ee1551577cdf146d1c56f4df12d24315ae5e69366b0a4
- 0x365b161a4b68d750dcc4b3ecce1154a2163c87b08762079428e68f0ebb6a754e
- Day root
- 0x78fecaabbe319e56f5c4b80fc02e2052e198ad24781da8832a475ff65f2002d1
- Chained
- 0xdc35957db5d1371ca382b9152878ffece28ec7c5cb4f98fd71ddb367f8b999b2
- Published
- On Arc Testnet, block 70432815: 0x56b814612eb2e3e544153df3e91e1f7199106d1e430c7d8c6b653feeb9ebe9af