Matimo Documentation
Matimo — Enable Agents To Extentend Itsel.. Most SDKs give agents tools. Matimo gives agents the ability to build new tools — validated, approved, and live — without restarting. The meta-tool layer is Matimo’s core differentiator.
A framework-agnostic SDK with pre-built provider tools, a skills knowledge layer, MCP out of the box, and agents that autonomously build new capabilities — governed by a policy engine you control
Complete documentation for Matimo.
⚡ Getting Started
- Quick Start — 5-minute setup (npm install → first tool execution)
- Your First Tool — Create and test a basic YAML tool
- API Reference — Understand the SDK fundamentals
Then explore Three Integration Patterns to see what’s possible.
📦 Full Installation & Requirements
- Installation — Detailed setup for Windows/macOS/Linux
- Node.js 18+ and npm/pnpm requirements
- From npm (recommended) or from source
- Troubleshooting common issues
- Environment setup (API keys, OAuth)
Reference
🟢 Core Concepts (Start Here)
- Architecture Overview — Understand how Matimo works
- High-level system design
- Three integration patterns explained
- Framework compatibility
- Data flow diagrams
- API Reference — TypeScript SDK documentation
MatimoInstanceclass and methods.execute(),.listTools(),.searchTools()- Decorator pattern (
@tool) - Error handling
- Complete type definitions
- Error Reference — Troubleshooting guide
- Error codes and meanings
- Common scenarios
- Debugging techniques
- Recovery patterns
🟡 Tool Development
- Tool Specification — Write tools in YAML
- Tool metadata and parameters
- Execution types (command, HTTP, script)
- Output validation schemas
- Authentication configuration
- Retry logic and error handling
- Real examples
- Adding Tools to Matimo — Publish @matimo/* packages
- 6-step guide for creating providers
- Auto-discovery mechanism
- Publishing to npm
- GitHub provider real example
- CLI tool management
- Testing Tools — Unit & integration testing
- Testing patterns with Jest
- Mocking external services
- Coverage requirements (80%+)
- Test fixtures
- OAuth Setup — OAuth2 authentication
- OAuth2 flow implementation
- Provider-specific configurations
- Token management
- Security best practices
🛡️ Policy & Lifecycle (Security)
- Policy Engine & Tool Lifecycle — Complete security guide
- PolicyConfig setup and immutability
- Content Validator (9 security rules)
- Risk classification levels
- Tool lifecycle: create → approve → reload → use
- Approval system (interactive, auto-approve, MCP)
- Integrity tracking (SHA-256, HMAC)
- RBAC & access control
- Audit events
- Meta-Tools Reference — Built-in tool management tools
matimo_validate_tool— Validate YAML against schema + policymatimo_create_tool— Create tools with safety enforcementmatimo_approve_tool— Promote draft tools with HMAC signingmatimo_reload_tools— Hot-reload the live registrymatimo_list_user_tools— Discover tools with metadatamatimo_create_skill— Create SKILL.md filesmatimo_list_skills— List skills in a directorymatimo_get_skill— Read a skill’s content by namematimo_validate_skill— Validate a skill against the Agent Skills spec
- Approval System — Approval handler configuration
- Auto-approve and interactive approval
- Environment variables
- Callback patterns
🔴 Advanced Topics
- OAuth Architecture — Deep dive into OAuth2
- Protocol flow details
- Provider integrations
- Token lifecycle
- Security considerations
- Provider Configuration — Multi-provider setup
- Managing multiple providers
- Configuration patterns
- Environment variables
- Provider-specific settings
- Type Definitions — Complete TypeScript types
- Full interface reference
- Parameter and execution types
- Response validation types
- Framework Integrations — LangChain & CrewAI
- LangChain agent patterns
- CrewAI tool composition
- Custom framework integration
Project Information
- Release Notes — New features, bug fixes, and breaking changes
- Roadmap — Upcoming features and long-term vision
👥 For Contributors
Want to contribute? Start here:
- Contributing Guidelines — Full contribution workflow
- Setup and development environment
- Code standards and best practices
- TDD (Test-Driven Development) approach
- Commit message format
- PR checklist
- Commit Guidelines — Conventional commits standard
- Type, scope, subject format
- Examples for feat, fix, docs, etc.
- Git workflow tips
- Development Standards — Code quality requirements
- TypeScript strictness
- Testing coverage (80%+ minimum)
- ESLint and Prettier
- JSDoc documentation
Development & Advanced Usage
Development & Advanced Usage
- SDK Patterns — SDK 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 from npm packages
- Tool search and filtering
- Registry management
- Loading from directories
- Authentication — API keys, OAuth2, and token management
- API key setup
- OAuth2 flows
- Token refresh and storage
- Provider-specific auth patterns
- Security best practices
Troubleshooting
- FAQ & Common Issues — Answers to common questions
- Setup problems
- Tool execution issues
- Authentication errors
- Performance tips
Quick Navigation by Role
🚀 Just Getting Started (First 30 minutes)
- Quick Start — Install and run your first tool
- Your First Tool — Create a basic YAML tool
- API Reference — Understand the SDK basics
- If stuck → FAQ
🛠️ Building Tools
- Tool Specification — YAML schema reference
- Adding Tools to Matimo — Publish a package
- Testing Tools — Write tests
- OAuth Setup — Add authentication
🤖 Integrating with Frameworks (LangChain, CrewAI, etc.)
- Architecture Overview — Understand patterns
- Framework Integrations — Integration examples
- SDK Patterns — Best practices
🔒 Securing Agent Tool Usage
- Policy & Lifecycle Guide — Full security setup
- Meta-Tools Reference — Built-in management tools
- Approval System — Approval handler config
- Policy Demo — 11-mission autonomous agent demo
- Skills Demo — 5-mission skills lifecycle demo
👨💻 Contributing Code
- Start here: Contributing Guidelines
- Clone repo and set up locally
- Commit Guidelines — Proper commit format
- Development Standards — Code quality rules
- Open PR and request review
📖 Maintaining/Reviewing
- Development Standards — Review checklist
- Contributing Guidelines — PR requirements
- Commit Guidelines — Validate commits
- Architecture Overview — Understand design decisions
🟢 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
- 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
│ ├── META_TOOLS.md # Built-in meta-tools reference
│ ├── POLICY_AND_LIFECYCLE.md # Policy engine and tool lifecycle
│ ├── APPROVAL-SYSTEM.md # Approval handler configuration
│ └── LOGGING.md # Winston logger integration
├── 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
├── 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