submit_app_requirements
Submit app requirements to the Databutton MCP Server by providing app name, pitch, and detailed specifications to initiate app planning and generate initial MVP tasks.
Instructions
Submit app requirements
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the app | |
| pitch | Yes | The pitch for the app | |
| spec | Yes |
Implementation Reference
- The main handler function implementing the 'submit_app_requirements' tool logic. Parses input with Zod schema, base64-encodes the requirements, constructs a submission URL, and returns a success response with the link or error message.export const submitAppRequirementsImpl = async ( args: RawArgs, ): Promise<Result> => { const parsed = parseToolInput<Input>({ input: args, schema }); if (parsed.success) { const base64Encoded = btoa(JSON.stringify(parsed.data)); const urlEncoded = encodeURIComponent(base64Encoded); return buildSimpleResponse( `App requirements submitted. Click the following link to get started: https://databutton.com/submit?requirements=${urlEncoded}`, ); } return buildSimpleResponse(parsed.message); };
- Tool definition exporting the MCP-compatible schema (JSON schema from Zod), name, and description used for registration and validation.export const submitAppRequirementsDef = { name: ToolName.SUBMIT_APP_REQUIREMENTS, description: "Submit app requirements", inputSchema: zodToJsonSchema(schema), };
- Zod schema defining the input validation for app requirements: name, pitch, and spec (description, targetAudience, design, typography).const schema = z.object({ name: z.string({ description: "The name of the app", }), pitch: z.string({ description: "The pitch for the app", }), spec: z.object({ description: z.string({ description: "The app's specifications given in no more than 4-5 paragraphs", }), targetAudience: z.string({ description: "The app's target audience", }), design: z.string({ description: "The app's design", }), typography: z.string({ description: "The app's typography", }), }), });
- src/index.ts:73-77 (registration)Registers the tool definition in the handler for ListToolsRequestSchema, making it discoverable by MCP clients.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [submitAppRequirementsDef], }; });
- src/index.ts:84-86 (registration)Dispatches execution to the tool handler in the CallToolRequestSchema switch statement.case submitAppRequirementsDef.name: { return await submitAppRequirementsImpl(request.params.arguments); }