Matimo Documentation
Matimo (Maximum AI Tools in Modular Objects) — Define tools once in YAML, use them everywhere.
Built to solve the universal tool orchestration problem for AI agents.
Complete documentation for Matimo.
Getting Started
- Quick Start — Get up and running in 5 minutes
- Installation with npm/pnpm
- Load tools from directory
- Execute tools with SDK
- Use MCP Server
- Common tasks and examples
- Installation — Detailed setup instructions
- Requirements and dependencies
- npm/pnpm installation options
- From source for contributors
- Verification and troubleshooting
- Your First Tool — Create your first YAML tool
- Step-by-step tool creation
- Basic YAML structure
- Testing your first tool
- Common beginner mistakes
Reference
- API Reference — Complete TypeScript SDK documentation
- MatimoInstance for tool management
- MatimoInstance.init() with auto-discovery
- Tool execution and discovery methods
- @tool decorator pattern
- LangChain integration helper
- Error handling and error codes
- Complete type definitions
- Error Reference — Error handling and troubleshooting
- Error codes and meanings
- Common error scenarios
- Debugging techniques
- Error recovery patterns
- Type Definitions — Complete TypeScript types
- ToolDefinition interface
- Parameter and execution types
- Authentication configurations
- Response and validation types
- Architecture Overview — System design and patterns
- High-level architecture
- Framework integration patterns (3 approaches)
- Pure SDK vs Framework integration
- Data flow diagrams
- OAuth Architecture — OAuth2 implementation details
- OAuth2 protocol flow
- Provider integrations
- Token lifecycle management
- Security considerations
- Tool Specification — How to write YAML tools
- Tool metadata (name, version, description)
- Parameter types and validation
- Execution types (command, HTTP, script)
- Output schema definition
- Authentication configuration
- Error handling and retry logic
- Complete YAML examples
- Adding Tools to Matimo — Create tool provider packages
- 6-step guide for tool creation
- Publishing to npm as @matimo/{provider}
- Auto-discovery mechanism
- Independent package structure
- Real GitHub provider example
- CLI tool management (matimo install, list, search)
- YAML Tools — Writing tools in YAML
- YAML syntax and structure
- Parameter templating
- Command execution patterns
- HTTP request tools
- Function-based tools
- Testing Tools — Testing your tools
- Unit testing patterns
- Integration testing
- Mocking external services
- Test fixtures and examples
- Coverage requirements
- OAuth Setup — OAuth authentication for tools
- OAuth2 flow implementation
- Provider-specific configurations
- Token storage and refresh
- Security best practices
- Provider Configuration — Multi-provider tool setup
- Managing multiple providers
- Configuration patterns
- Environment variable organization
- Provider-specific settings
- Framework Integrations — LangChain & CrewAI patterns
- LangChain Agent integration
- Decorator pattern with frameworks
- CrewAI tool composition
- Custom AI framework integration
Project Information
- Release Notes — Changelog and version history
- New features and improvements
- Bug fixes and patches
- Breaking changes
- Migration guides
- Roadmap — Project roadmap and future plans
- Upcoming features
- Planned improvements
- Long-term vision
- Community requests
- Core security principles
- Secret management (environment variables)
- Input validation with schemas
- Error handling without leaking information
- Logging without sensitive data
- Authentication mechanisms
- Command execution safety
- Common vulnerabilities and fixes
- Security checklist
- Responsible vulnerability disclosure
Development
- Commit Guidelines — Conventional commits standard
- Commit format and components
- Type, scope, and subject guidelines
- Commit examples (feat, fix, docs, etc.)
- Best practices and common mistakes
- Git workflow and aliases
- SDK Patterns — Usage patterns and best practices
- Factory pattern usage
- Decorator pattern examples
- LangChain integration patterns
- Error handling strategies
- Performance optimization
- Tool Discovery — Finding and using tools
- Auto-discovery mechanism
- Tool search and filtering
- Registry management
- Loading from directories
- Dynamic tool loading
- Authentication — Authentication setup and management
- API key authentication
- OAuth2 flows
- Token management
- Provider-specific auth
- Security considerations
- Quality metrics and checklists
- Contributing Guidelines — How to contribute to Matimo
- Getting started and setup
- Code standards and best practices
- Testing with TDD approach
- Commit and PR requirements
- Adding new tools
- Performance and quality targets
- Roadmap and current focus
Quick Navigation
For First-Time Users
- Start with Quick Start for setup
- Try Your First Tool to create a tool
- Check API Reference for SDK usage
- See Tool Specification to write tools
- Review Architecture Overview to understand design
For Tool Writers
- Read Tool Specification for YAML tools
- Or use Decorator Guide for TypeScript tools
- See Adding Tools to Matimo to publish packages
- Follow Development Standards for code quality
For Framework Integration
- Check Framework Integrations for LangChain/CrewAI
- See Architecture Overview for integration patterns
- Review examples in
examples/directory
For Contributors
- Check Contributing Guidelines for contribution guidelines
- Follow Development Standards for code quality
- Use Commit Guidelines for proper commit format
For Maintainers
- Review Development Standards for quality metrics
- Check Commit Guidelines for PR commit validation
- See Contributing Guidelines for overall workflow
Documentation Structure
docs/
├── index.md # This file - documentation index
├── RELEASES.md # Release notes and changelog
├── ROADMAP.md # Project roadmap
├── getting-started/
│ ├── QUICK_START.md # 5-minute setup guide
│ ├── installation.md # Detailed installation instructions
│ └── YOUR_FIRST_TOOL.md # Create your first tool
├── api-reference/
│ ├── SDK.md # Complete SDK API
│ ├── ERRORS.md # Error handling and error codes
│ └── TYPES.md # TypeScript type definitions
├── tool-development/
│ ├── TOOL_SPECIFICATION.md # YAML tool schema
│ ├── YAML_TOOLS.md # YAML tool writing guide
│ ├── ADDING_TOOLS.md # Creating tool packages
│ ├── DECORATOR_GUIDE.md # TypeScript decorators
│ ├── TESTING.md # Testing tools
│ ├── PROVIDER_CONFIGURATION.md # Multi-provider setup
│ └── OAUTH_LINK.md # OAuth authentication
├── framework-integrations/
│ └── LANGCHAIN.md # LangChain & framework patterns
├── architecture/
│ ├── OVERVIEW.md # System design and patterns
│ └── OAUTH.md # OAuth2 implementation
├── user-guide/
│ ├── SDK_PATTERNS.md # SDK usage patterns
│ ├── TOOL_DISCOVERY.md # Discovering tools
│ ├── AUTHENTICATION.md # Authentication setup
│ └── DEVELOPMENT_STANDARDS.md # Code quality rules
├── community/
│ └── COMMIT_GUIDELINES.md # Conventional commits
└── troubleshooting/
└── FAQ.md # Common questions & solutions
Root-level files:
├── [CONTRIBUTING.md](https://github.com/tallclub/matimo/blob/main/CONTRIBUTING.md) — Contribution guidelines
├── [SECURITY.md](https://github.com/tallclub/matimo/blob/main/SECURITY.md) — Security policy
└── [README.md](https://github.com/tallclub/matimo/blob/main/README.md) — Project overview
Key Concepts
Tools
Tools are the building blocks of Matimo. They define what can be executed, what parameters they accept, and how they run.
- YAML Tools — Declarative tool definitions (see Tool Specification)
- Decorator Tools — TypeScript-based tool definitions (see Decorator Guide)
Executors
Executors run tools with different backends:
- CommandExecutor — Execute shell commands
- HttpExecutor — Make HTTP requests
See API Reference for details.
SDK
Use the Matimo SDK (TypeScript) to load and execute tools:
import { MatimoInstance } from 'matimo';
const matimo = await MatimoInstance.init('./tools');
const result = await matimo.execute('tool-name', { param: 'value' });
See Quick Start and API Reference.
MCP Server
Matimo can run as an MCP server, allowing Claude and other clients to discover and use tools:
// MCP Server - Coming in Phase 2
// import { MCPServer } from 'matimo/mcp';
const server = new MCPServer({ toolsPath: './tools', port: 3000 });
await server.start();
See Quick Start for setup.
Standards & Practices
Code Quality
- TypeScript: Strict mode enforced (no
any) - Testing: 80%+ coverage, TDD approach
- Linting: ESLint with automatic formatting
- Documentation: JSDoc comments for all public APIs
Commits
- Format: Conventional Commits (type(scope): subject)
- Types: feat, fix, docs, refactor, test, chore, perf, style, ci
- Examples: “feat(executor): add HTTP support”, “fix(schema): validate enums”
See Commit Guidelines.
Pull Requests
- Follow TDD approach (test first, implement after)
- Keep PRs focused (one feature/fix per PR)
- Ensure tests pass and coverage maintained (80%+)
- Follow code standards and get code review
Common Tasks
Write a YAML Tool
- Create
tools/provider/tool-name.yaml - Follow Tool Specification schema
- Include parameters, execution, output_schema
- Add authentication if needed
- Test with
pnpm test
Write a Decorator Tool
- Create
src/tools/tool-name.tool.ts - Use @tool and @param decorators
- Implement execute() or async execute()
- Follow Decorator Guide patterns
- Add unit tests
Integrate with LangChain
- See Framework Integrations for patterns
- Check
examples/tools/for working examples - Follow Architecture Overview for design decisions
Contribute Code
- Fork and clone repository
- Create feature branch:
git checkout -b feat/description - Write tests first (TDD)
- Implement feature
- Follow Development Standards
- Commit using Commit Guidelines
- Push and create PR
- Follow Contributing Guidelines checklist
Need Help?
- Questions? Check relevant documentation or open a GitHub Discussion
- Found a bug? Open an issue
- Troubleshooting? See FAQ
- Want to contribute? See Contributing Guidelines
Documentation Note: While I strive for accuracy and completeness, this documentation may contain oversights, outdated information, or areas needing improvement, due to my limitations. If you notice any errors, missing information, or have suggestions for enhancement, please help me to improve! See our Contributing Guidelines to learn how to submit corrections and improvements. Your contributions to documentation are highly valued! Thank you.
Last updated: February 2026