addrbookFor publishers
← The evidence ledger

Evidence row 559340

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint a989ac7a-90bb-4f55-bb2c-47fc5c195f14
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
7030b9647de304a16ad684081a3f107b3c90125f2b2c8a3d66d4df7e682d64a3
Leaf
0x8f3bd605484118583b14a18613d31bfe86bb3172cf98ce18b7a21380d5cab7ba

What was observed

{
  "count": 14,
  "tools": [
    {
      "description": "Makes a checkout link for a credit pack: Starter is 5 credits for $10, Pro is 25 credits for $40. Nothing is charged by this tool. The user opens the link and pays in their browser, and the credits arrive a minute later. Only call it when the user asked to buy credits.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "pack": {
            "description": "starter: 5 credits for $10. pro: 25 credits for $40.",
            "enum": [
              "starter",
              "pro"
            ],
            "type": "string"
          }
        },
        "required": [
          "pack"
        ],
        "type": "object"
      },
      "name": "buy_credits"
    },
    {
      "description": "Deletes a run and its report and measurements for good. A running run has to be stopped first. Ask the user first.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "test_id": {
            "description": "The run to delete.",
            "type": "string"
          }
        },
        "required": [
          "test_id"
        ],
        "type": "object"
      },
      "name": "delete_load_test"
    },
    {
      "description": "The account's credits, whether the free Lite run is still available, whether GitHub is connected, what each run size costs and the credit packs on sale.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_account"
    },
    {
      "description": "The full report of a finished run: the verdict, users held, requests per second, p95 latency and errors at each load level, what ran out first, CPU, busiest thread and memory on the server and per service, connections to the database and other dependencies, what the responses were, and which server size to pick or whether the user's own server is enough.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "test_id": {
            "description": "The run id start_load_test or list_load_tests returned. The latest run when left out.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_test_report"
    },
    {
      "description": "Where a run stands: building, starting servers, running (with live users, requests per second, p95 latency and error rate) or finished.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "test_id": {
            "description": "The run id start_load_test or list_load_tests returned. The latest run when left out.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_test_status"
    },
    {
      "description": "How a run moved over time: users, requests per second, p95 latency and error rate, averaged into a fixed number of points. Works while a run is going and after it ends.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "points": {
            "description": "How many points to return. Defaults to 30.",
            "maximum": 120,
            "minimum": 5,
            "type": "integer"
          },
          "test_id": {
            "description": "The run id start_load_test or list_load_tests returned. The latest run when left out.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_test_timeline"
    },
    {
      "description": "Reads a repository before testing it: the port it listens on, the environment variables the code reads, the framework, whether it needs a database, and its branches. For a Docker image it only checks the reference. Use it before start_load_test.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "branch": {
            "description": "Branch to read. The default branch when left out.",
            "type": "string"
          },
          "target": {
            "description": "GitHub repository URL or Docker image.",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "inspect_target"
    },
    {
      "description": "The GitHub repositories the user gave Stresix access to, including private ones. Public repositories work without connecting GitHub.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "list_github_repos"
    },
    {
      "description": "The account's runs, newest first: id, status, size, target, requests, when it ran and why it failed if it did.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "How many to return. Defaults to 10.",
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "status": {
            "description": "active: waiting or running. finished: completed, failed or stopped. Defaults to all.",
            "enum": [
              "all",
              "active",
              "finished"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_load_tests"
    },
    {
      "description": "Adds the credits of a promo code to the account. Only use a code the user gave you.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "description": "The promo code.",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "name": "redeem_code"
    },
    {
      "description": "Tells Stresix whether a finished run's report was useful, with an optional note. Only send what the user actually said. Sending again replaces the earlier answer.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "helpful": {
            "description": "Whether the user found the report useful.",
            "type": "boolean"
          },
          "message": {
            "description": "The user's note, up to 2,000 characters.",
            "type": "string"
          },
          "test_id": {
            "description": "The run id start_load_test or list_load_tests returned. The latest run when left out.",
            "type": "string"
          }
        },
        "required": [
          "helpful"
        ],
        "type": "object"
      },
      "name": "send_feedback"
    },
    {
      "description": "Tells a run which server the user already hosts the app on, so the report says whether that server is enough, how close to the limit it would be and what to change. Or set recommend to true to go back to a recommended size. The report is recomputed from the stored measurements, no new run needed.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "description": "A name for it, like \"Hetzner CX22\".",
            "type": "string"
          },
          "ram_gb": {
            "description": "Memory of the user's server in GB.",
            "maximum": 2048,
            "minimum": 0.25,
            "type": "number"
          },
          "recommend": {
            "description": "Set to true to drop the user's server and get a recommended size again.",
            "type": "boolean"
          },
          "test_id": {
            "description": "The run id start_load_test or list_load_tests returned. The latest run when left out.",
            "type": "string"
          },
          "vcpu": {
            "description": "vCPU count of the user's server.",
            "maximum": 256,
            "minimum": 0.25,
            "type": "number"
          }
        },
        "type": "object"
      },
      "name": "set_current_server"
    },
    {
      "description": "Load tests the user's app on a real cloud server and returns a run id. The target is a public or connected GitHub repository URL, or a Docker image. Lite is free once per person (500 users, 4 minutes). Standard (2,500 users, 10 minutes) costs 1 credit and Massive (10,000 users, 15 minutes) costs 3. A paid run is only started with confirm_spend set to true, and only after the user has agreed to the price. Without a tier it uses the free Lite run when the account still has it.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "branch": {
            "description": "Repository branch to build. The default branch when left out.",
            "type": "string"
          },
          "confirm_spend": {
            "description": "Set to true only after the user agreed to spend credits on this run.",
            "type": "boolean"
          },
          "current_server": {
            "additionalProperties": false,
            "description": "The server the user runs the app on today, if any. The report then says whether that server is enough instead of recommending a size. Can also be set after the run with set_current_server.",
            "properties": {
              "label": {
                "description": "A name for it, like \"Hetzner CX22\" or \"DigitalOcean 2 GB droplet\".",
                "type": "string"
              },
              "ram_gb": {
                "maximum": 2048,
                "minimum": 0.25,
                "type": "number"
              },
              "vcpu": {
                "maximum": 256,
                "minimum": 0.25,
                "type": "number"
              }
            },
            "required": [
              "vcpu",
              "ram_gb"
            ],
            "type": "object"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables the app needs to boot, such as NODE_ENV or a test database URL. Stored encrypted and wiped after the run. Never send production secrets.",
            "type": "object"
          },
          "paths": {
            "description": "GET paths the simulated users rotate through, for example [\"/\", \"/api/products\", \"/search?q=shoes\"]. Pick pages that hit the database. Defaults to [\"/\"]. Use requests instead for other methods, headers or bodies.",
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "type": "array"
          },
          "port": {
            "description": "The port the app listens on inside its container. Read it from the code or use inspect_target. Stresix tries 80, 3000, 5000, 8000 and 8080 when it is left out.",
            "maximum": 65535,
            "minimum": 1,
            "type": "integer"
          },
          "requests": {
            "description": "Full requests the simulated users rotate through, in place of paths. Each one is independent (no multi-step flows). Headers such as Authorization are stored encrypted and wiped after the run. Use a test account token, never a production secret. {{vu}} (the simulated user's number) and {{iteration}} (that user's request count) can go in a path, header value or body and are filled in per request, for example to give each user its own id.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "description": "Request body up to 16 KB: a string, or a JSON object or array (sent as application/json). Not allowed on GET or HEAD."
                },
                "headers": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Up to 20 headers. Host, Content-Length and a few others are set by Stresix.",
                  "type": "object"
                },
                "method": {
                  "description": "Defaults to GET.",
                  "enum": [
                    "GET",
                    "POST",
                    "PUT",
                    "PATCH",
                    "DELETE",
                    "HEAD"
                  ],
                  "type": "string"
                },
                "path": {
                  "description": "Path on the app, starting with /, with any query string.",
                  "type": "string"
                }
              },
              "required": [
                "path"
              ],
              "type": "object"
            },
            "maxItems": 10,
            "type": "array"
          },
          "target": {
            "description": "GitHub repository URL (https://github.com/owner/repo) or a Docker image (nginx:1.27, ghcr.io/owner/app:tag).",
            "type": "string"
          },
          "tier": {
            "description": "Run size. Leave it out to use the free Lite run when available.",
            "enum": [
              "lite",
              "standard",
              "massive"
            ],
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "start_load_test"
    },
    {
      "description": "Stops a run that is waiting or running and deletes its servers. A run stopped before its servers were up uses no credit. A run stopped while the load is going is not refunded, and its report covers what was measured until then. Ask the user first.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "test_id": {
            "description": "The run to stop.",
            "type": "string"
          }
        },
        "required": [
          "test_id"
        ],
        "type": "object"
      },
      "name": "stop_load_test"
    }
  ]
}

What the leaf hashes

{"body":"7030b9647de304a16ad684081a3f107b3c90125f2b2c8a3d66d4df7e682d64a3","id":559340,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793135300978198,"prev":null,"subject":"a989ac7a-90bb-4f55-bb2c-47fc5c195f14","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. 0x8f3bce24ef7258633997a907dc7c84b534e14ba1fd5ffc8125b2eec7aa623610
  2. 0x243934cc7c9622166f3881091c0fc242bd1fe7ff90dcf41957d6c562b2512e7b
  3. 0x06b94fd281f24b78096e7266f102b0bbbe2fc7efb3e922df9f4e0a5096beb93e
  4. 0x6db647897e70a7cb4f78c1061f57f6a4e07796637e8e21a49556555ccd77a8bd
  5. 0x2dc481fb63239c99224a0d8aa97ed0fa43ed04af0a6c5f2ba17679d108df7cfc
  6. 0x5af79038f3815b3f7725fc75cd8899530ef2a3e5f3cef65952538817156765a8
  7. 0x42a1b0557b019b8d9e13de646d46dc0f2766911a1994de91f8dff45b53f84729
  8. 0x8ce6b59e75864a5e3f37711e7a0370073b5be350a544d406d2360aa6b217618e
  9. 0x6daacf365fdb91c42e4a00d0820b89e86f73b3d9d7fd5a39cca9973ec90ebc29
  10. 0x41d116872d35101e280e8ba654733ed9c35d9cf4f524fd91218920226c8aca68
  11. 0xbff43d30538b90ef025129e8a238dc8959481edca06b37ecee4c2be1f617127d
  12. 0x3d13b6f855471289691a683ee58cac14977b2531dabc14f9c666e928df0908e6
  13. 0x5c9cbca5bb1d6be4d84e301b4e4c1a280536eb16ee98ed4add9057142c132dde
  14. 0x06e3b43165f5b3c31d850bc32f20b2e25b844564c4e042c141b9748c26a5a600
  15. 0xb4f7223140c8a36cb87a63d77cf617086d9968dc4658f03e102571ebe06e9ed6
  16. 0xfecf3d4646dd4984a13dd715499e842c3fde63692336d97394c2bfd8e877ca5d
  17. 0xf30fddbf4811226c58e8f0daf36fddd79fc5f1356b592bb1d99a8061ddbabe66
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON