← The evidence ledger
Evidence row 566118
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 88d46c34-4207-4bee-b12d-84cb261cde55
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 12c62748d3416948b90ae7b9130c13e8944d2a8c529edd2958014ad10ad00483
- Leaf
- 0xc8860795fd0cc557dfabc53d12a3e9fe8ea092012100a7bb41a922efa9b503cb
What was observed
{
"count": 2,
"tools": [
{
"description": "Generates the complete SpecPilot .specs/ file set plus the matching IDE rules and slash-command files from a full answer set - identical to what the SpecPilot web chat produces for the same answers. Requires projectName and projectDescription. Returns the files to write and the steps to follow after writing them.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"answers": {
"description": "The complete SpecPilot answer set to generate from - everything collected through specpilot_next_questions, whose schema describes each field. projectName and projectDescription are required; every other field falls back to a sensible default.",
"properties": {
"accessControl": {
"type": "string"
},
"accessibilityNotes": {
"type": "string"
},
"activeUsers": {
"type": "string"
},
"apiResponseTime": {
"type": "string"
},
"apiStyle": {
"type": "string"
},
"authStrategy": {
"type": "string"
},
"availability": {
"type": "string"
},
"buildTimeline": {
"type": "string"
},
"cicd": {
"items": {
"type": "string"
},
"type": "array"
},
"compliance": {
"items": {
"type": "string"
},
"type": "array"
},
"constraintDescription": {
"type": "string"
},
"customUserType": {
"type": "string"
},
"dataSyncStrategy": {
"type": "string"
},
"databases": {
"items": {
"type": "string"
},
"type": "array"
},
"deploymentTargets": {
"items": {
"type": "string"
},
"type": "array"
},
"designNotes": {
"type": "string"
},
"designSystem": {
"type": "string"
},
"figmaUrl": {
"type": "string"
},
"handle": {
"type": "string"
},
"hasDesignAssets": {
"type": "boolean"
},
"ideAgent": {
"type": "string"
},
"integrations": {
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"isNewBuild": {
"type": "boolean"
},
"languageOverride": {
"type": "string"
},
"localDatabases": {
"items": {
"type": "string"
},
"type": "array"
},
"nonGoals": {
"type": "string"
},
"offlineSupport": {
"type": "boolean"
},
"otherApis": {
"type": "string"
},
"platforms": {
"items": {
"type": "string"
},
"type": "array"
},
"projectCategory": {
"anyOf": [
{
"enum": [
"saas",
"api",
"mobile",
"cli",
"pipeline",
"ml",
"static",
"docs",
"extension",
"library",
"other"
],
"type": "string"
},
{
"type": "null"
}
]
},
"projectDescription": {
"type": "string"
},
"projectName": {
"type": "string"
},
"realtimeEnabled": {
"type": "boolean"
},
"realtimeTypes": {
"items": {
"type": "string"
},
"type": "array"
},
"scaleTier": {
"type": "string"
},
"securityConcerns": {
"items": {
"type": "string"
},
"type": "array"
},
"specialConsiderations": {
"items": {
"type": "string"
},
"type": "array"
},
"systemPattern": {
"type": "string"
},
"teamSize": {
"type": "string"
},
"technicalConstraints": {
"items": {
"type": "string"
},
"type": "array"
},
"testingStrategy": {
"items": {
"type": "string"
},
"type": "array"
},
"uiStyle": {
"type": "string"
},
"userTypes": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
}
},
"required": [
"answers"
],
"type": "object"
},
"name": "specpilot_generate_specs"
},
{
"description": "Returns the unanswered SpecPilot onboarding questions of the next incomplete step, gated by the answers so far: questions that do not apply are omitted, and options are filtered, badged or flagged as in the SpecPilot web chat. Stateless: send every answer collected so far on each call.\n\nProcedure: (1) Set `isNewBuild` from whether the repo already has real source code. (2) Infer what the repo answers instead of asking: `platforms` from the manifests and layout, `languageOverride`, `ideAgent` (you are the IDE), `handle` from git config or the origin remote, `projectName` from the manifest or folder name, `projectDescription` from the README only if it plainly says what the project is. (3) Call this tool, answer what the repo makes obvious and ask the developer the rest, a whole step per message. Send an empty value for a declined optional question or it is asked again; send `todoSentinel` verbatim when they do not know yet. For `projectDescription`, an exact returned chip label infers `projectCategory` and gates later questions; free prose infers nothing. Confirm pre-seeded values rather than accepting them silently. (4) Loop until `done` is true, then call specpilot_generate_specs and follow its `nextSteps` for where each file goes.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"answers": {
"description": "Every SpecPilot onboarding answer collected so far. The server is stateless, so resend the whole object on every call; omit it entirely on the first call to get step 1.",
"properties": {
"accessControl": {
"description": "The access control model.",
"type": "string"
},
"accessibilityNotes": {
"description": "Anything further on accessibility or constraints, in free text.",
"type": "string"
},
"activeUsers": {
"description": "Roughly how many active users are expected, as a range.",
"type": "string"
},
"apiResponseTime": {
"description": "Target API response time.",
"type": "string"
},
"apiStyle": {
"description": "API style - REST, GraphQL, gRPC or tRPC.",
"type": "string"
},
"authStrategy": {
"description": "Auth approach - a protocol built in-house (JWT/OAuth/SAML) or a managed service (Clerk, Auth0, Firebase).",
"type": "string"
},
"availability": {
"description": "Availability SLA target as a fraction of uptime.",
"type": "string"
},
"buildTimeline": {
"description": "How long the build is expected to take.",
"type": "string"
},
"cicd": {
"description": "CI/CD practices - automatically running tests and deploying on every change.",
"items": {
"type": "string"
},
"type": "array"
},
"compliance": {
"description": "Compliance regimes that apply - GDPR, HIPAA, SOC 2. Pick by the actual situation (EU users, health data, payments).",
"items": {
"type": "string"
},
"type": "array"
},
"constraintDescription": {
"description": "More detail on whatever was named in technicalConstraints.",
"type": "string"
},
"customUserType": {
"description": "A user type in free text, when none of the userTypes options fit.",
"type": "string"
},
"dataSyncStrategy": {
"description": "How conflicting local and server state gets reconciled once the device is back online.",
"type": "string"
},
"databases": {
"description": "Database kinds in use - SQL, NoSQL, cache/key-value, vector. As many as apply.",
"items": {
"type": "string"
},
"type": "array"
},
"deploymentTargets": {
"description": "Where this ships - cloud hosting, a package registry, a browser store. The option list depends on the project type.",
"items": {
"type": "string"
},
"type": "array"
},
"designNotes": {
"description": "Notes on the designs.",
"type": "string"
},
"designSystem": {
"description": "Design system in use.",
"type": "string"
},
"figmaUrl": {
"description": "Figma link.",
"type": "string"
},
"handle": {
"description": "The developer GitHub handle. Optional. Infer from git config or the origin remote.",
"type": "string"
},
"hasDesignAssets": {
"description": "Whether Figma files, a design system or mockups exist.",
"type": "boolean"
},
"ideAgent": {
"description": "The editor or AI IDE in use - claudecode, cursor, copilot, codex, windsurf. You are the IDE, so set this yourself.",
"type": "string"
},
"integrations": {
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"description": "Third-party integrations keyed by category, e.g. { payments: [\"stripe\"] }. Only categories relevant to the project type apply.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"isNewBuild": {
"description": "True for a greenfield project, false when adding onto an existing codebase.",
"type": "boolean"
},
"languageOverride": {
"description": "Primary language, when it should override what SpecPilot infers from the repo.",
"type": "string"
},
"localDatabases": {
"description": "On-device stores backing offline support. Leave empty when offline is not needed.",
"items": {
"type": "string"
},
"type": "array"
},
"nonGoals": {
"description": "What this project explicitly will NOT do.",
"type": "string"
},
"offlineSupport": {
"description": "Whether this has to work offline. Set automatically when localDatabases is non-empty.",
"type": "boolean"
},
"otherApis": {
"description": "External APIs or services not covered by integrations.",
"type": "string"
},
"platforms": {
"description": "Platforms this should run on, e.g. web, ios, android, desktop. Infer from the dependency manifests and repo layout.",
"items": {
"type": "string"
},
"type": "array"
},
"projectCategory": {
"anyOf": [
{
"enum": [
"saas",
"api",
"mobile",
"cli",
"pipeline",
"ml",
"static",
"docs",
"extension",
"library",
"other"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Project archetype. Normally inferred from projectDescription when it exactly matches a returned chip label - send it only if you already know it."
},
"projectDescription": {
"description": "One line saying what the project is. Required by specpilot_generate_specs. Sending one of the chip labels returned by specpilot_next_questions verbatim is what infers projectCategory and gates every later question; free prose infers nothing.",
"type": "string"
},
"projectName": {
"description": "Short name for the project. Required by specpilot_generate_specs. Infer from the package manifest or the folder name.",
"type": "string"
},
"realtimeEnabled": {
"description": "Whether anything updates live without a refresh. Set automatically when realtimeTypes is non-empty.",
"type": "boolean"
},
"realtimeTypes": {
"description": "Realtime transports - WebSockets, SSE, polling. Leave empty when nothing needs to update live.",
"items": {
"type": "string"
},
"type": "array"
},
"scaleTier": {
"description": "Expected scale of the system.",
"type": "string"
},
"securityConcerns": {
"description": "Security measures to plan for - encryption, rate limiting, audit logging.",
"items": {
"type": "string"
},
"type": "array"
},
"specialConsiderations": {
"description": "Cross-cutting concerns that apply, such as accessibility, internationalisation or offline support.",
"items": {
"type": "string"
},
"type": "array"
},
"systemPattern": {
"description": "Architecture pattern - monolith, modular monolith, or microservices.",
"type": "string"
},
"teamSize": {
"description": "How many people are building this.",
"type": "string"
},
"technicalConstraints": {
"description": "Hard constraints - budget, existing infrastructure, legacy systems, a fixed deadline.",
"items": {
"type": "string"
},
"type": "array"
},
"testingStrategy": {
"description": "Testing approaches this project will use.",
"items": {
"type": "string"
},
"type": "array"
},
"uiStyle": {
"description": "Preferred UI style.",
"type": "string"
},
"userTypes": {
"description": "Who is going to use this system, e.g. end users, admins, internal staff.",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
}
},
"type": "object"
},
"name": "specpilot_next_questions"
}
]
}What the leaf hashes
{"body":"12c62748d3416948b90ae7b9130c13e8944d2a8c529edd2958014ad10ad00483","id":566118,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793138366315528,"prev":null,"subject":"88d46c34-4207-4bee-b12d-84cb261cde55","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).
- 0xc886042ef63dfc31024771146f68490d9cfc234c569d8c957f22de7adf571d75
- 0xcf0e28305c4f014239df5f0e6af9189cd0a29b41f029d965965a05934b46f177
- 0x3691a0fbf85afdae9cb4cb7b07b8e345fb3c2388fd2ce1f7189e60d3846bb62c
- 0x3837dc172c70022be3ab8a8a7790d9b7f611802e53a0a0fc4cef9aab77104fea
- 0xf976a0e94218a758668ae3659048972238f22f19abaf577ed27519f874bd9db3
- 0x3e18e6c8e134ec136e2e338e2e4ddc572422784abf6c6f799906f27b83cd971e
- 0xea38ff15278666052d17e8a82bd39aec1515070f940c44aa7455f708fb4a7961
- 0xbff69b5a449426746fb87521b989542f04660b2c072d72a1de40b715614097ff
- 0x9d79fcbf85b18acafae8fbf8f715e557ee2a4a7e98ac6b2b40db37c6fe25c9f3
- 0xc07f68881be9c6fd04904f0cba37bbbe3a2a90327d812665083d299dcb343ba7
- 0x057a79dae7284d2b0542272663bf1bcad5f3c4a13e38a7fdd7392ad650b50c86
- 0xd16d7e5f125e1d777c4add2d34626605aa2a6b03288469395f9c1f401de8e9e1
- 0x938752e9acd199cd15f468392bc2dd8eefc52293e7144e30b87b241ca6b2513b
- 0xcc49fd573532e5a29f5be4033f62a2eff71456c020bd2258312b98e95cfe301e
- 0x969cd44e5a4e8dc3110540398fbf689659eb51df735c1cda5d8f021ef9ff5683
- 0xa94627de1af0e823832e05a9069b304ecccb8c0cdb8f9cfc4f2039bfb9799dc5
- 0xdf1105afdc109de3c09a98fc8a3864159ad964e6f49b635c105a27a1e1f14310
- 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
- 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
- Day root
- 0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
- Chained
- 0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
- Published
- On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4