Contributing
Contributions are welcome! Follow these guidelines to ensure your changes fit the project structure and design principles.
Before You Start
Section titled “Before You Start”- Read the Architecture guide to understand the handler registry pattern
- Review Building & Testing to know the build and test commands
- Check open issues to avoid duplicate work
Contribution Workflow
Section titled “Contribution Workflow”- Fork the repository on GitHub
- Create a feature branch from
mainordevelop - Implement your changes (see guidelines below)
- Run the full pipeline before committing:
Terminal window npm run ltfb - Add tests if you’re adding or modifying a tool
- Submit a pull request with a clear description of the change
Code Guidelines
Section titled “Code Guidelines”Maintain Read-Only Design
Section titled “Maintain Read-Only Design”This is a fundamental constraint — no write, delete, or modify operations should ever be added. The makeRequest() function in src/api.ts blocks non-GET requests at runtime. Any new tool must be read-only.
Follow the Handler Registry Pattern
Section titled “Follow the Handler Registry Pattern”New tools follow this checklist:
- Add the handler function in the appropriate
src/handlers/*.tsfile - Register the tool definition in
src/tools.ts - Add a Zod input schema in
src/schemas.ts - Add the TypeScript response interface in
src/types.ts - Use
makeRequest<T>()with the correct generic type - Format the response as human-readable text using the existing helper patterns
TypeScript and Zod
Section titled “TypeScript and Zod”- All tool parameters must have Zod schemas — no unvalidated inputs
- All API response shapes must have TypeScript interfaces in
src/types.ts - Avoid using
any— use the typedmakeRequest<T>()call
Response Formatting
Section titled “Response Formatting”- Default response format is readable text (the
textoutput format) - Responses are also available as
jsonandtoon— the output format pipeline handles this automatically once you return a properly structured response from your handler
Running Tests
Section titled “Running Tests”Add unit tests for every new handler function:
npm testTest patterns are in src/__tests__/handlers/ — mock makeRequest and assert on formatted output.
Getting Help
Section titled “Getting Help”- GitHub Issues — bug reports and feature requests
.github/copilot-instructions.md— detailed development guidelines in the repo