Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,547Letters: 14Defects: 1,324counted just now
teppi

Server definition

Hash
sha256:016168a3f94dfb66380c82d766efe4dba1ddb231ac616146a251efbfe82528aa
What it is
What a remote MCP server returned when asked what it offers: 2 tools

The blob, as servednamed by its sha256

{ "instructions": null, "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": { "properties": { "accessControl": { "description": "The access control model. Drives the security spec auth/authorization section and the permission 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. Shapes how the architecture spec documents client-server communication.", "type": "string" }, "authStrategy": { "description": "Auth approach - a protocol built in-house (JWT/OAuth/SAML) or a managed service (Clerk, Auth0, Firebase). Feeds the security spec.", "type": "string" }, "availability": { "description": "Availability SLA target as a fraction of uptime; higher percentages allow far less downtime per year.", "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), since getting it wrong has legal consequences.", "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" }, "handle": { "description": "The developer GitHub handle. Optional; it namespaces generated task IDs (e.g. CD-jsmith-001). Infer from git config or the origin remote.", "type": "string" }, "ideAgent": { "description": "The editor or AI IDE in use - claudecode, cursor, copilot, codex, windsurf. You are the IDE, so set this yourself; it decides which rules and config files are generated.", "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. Decides which onboarding analysis is generated at the end.", "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. Becomes the non-goals section of the specs.", "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. Drives infrastructure and architecture choices.", "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" }, "userTypes": { "description": "Who is going to use this system, e.g. end users, admins, internal staff.", "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, "required": [ "answers" ], "type": "object" }, "name": "specpilot_generate_specs", "outputSchema": null }, { "description": "Returns the still-unanswered SpecPilot onboarding questions of the next incomplete step, gated by the answers supplied so far - questions that do not apply to this kind of project are omitted, and options are filtered, badged or flagged the same way the SpecPilot web chat would. Stateless: send every answer collected so far on each call.\n\nProcedure: (1) Decide whether the repository already has real source code and set `isNewBuild` accordingly - it changes which onboarding analysis is generated at the end. (2) Infer what the repo already answers rather than asking: `platforms` from the dependency manifests and layout, `languageOverride`, `ideAgent` (you are the IDE - claudecode, cursor, copilot, codex, windsurf), `handle` from git config or the origin remote, `projectName` from the package manifest or folder name, and `projectDescription` from the README only if it plainly says what the project is. (3) Call this tool with what you have; answer what the repo makes obvious and ask the developer the rest, a whole step per message. Send an empty value for an optional question the developer declines, or it will be asked again; send `todoSentinel` verbatim when they do not know yet. For `projectDescription`, sending one of the returned chip labels exactly is what infers `projectCategory` and gates every later question - free prose infers nothing. Confirm any pre-seeded value rather than accepting it 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": { "properties": { "accessControl": { "description": "The access control model. Drives the security spec auth/authorization section and the permission 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. Shapes how the architecture spec documents client-server communication.", "type": "string" }, "authStrategy": { "description": "Auth approach - a protocol built in-house (JWT/OAuth/SAML) or a managed service (Clerk, Auth0, Firebase). Feeds the security spec.", "type": "string" }, "availability": { "description": "Availability SLA target as a fraction of uptime; higher percentages allow far less downtime per year.", "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), since getting it wrong has legal consequences.", "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" }, "handle": { "description": "The developer GitHub handle. Optional; it namespaces generated task IDs (e.g. CD-jsmith-001). Infer from git config or the origin remote.", "type": "string" }, "ideAgent": { "description": "The editor or AI IDE in use - claudecode, cursor, copilot, codex, windsurf. You are the IDE, so set this yourself; it decides which rules and config files are generated.", "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. Decides which onboarding analysis is generated at the end.", "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. Becomes the non-goals section of the specs.", "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. Drives infrastructure and architecture choices.", "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" }, "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", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:016168a3f94dfb66380c82d766efe4dba1ddb231ac616146a251efbfe82528aa | sha256sum