Multimeter
<div align="center">
<a href="https://mmt.dev">
<img src="res/logo.png" alt="Logo" width="115" height="115">
</a>
<h4>Git-native REST client and API tests in VS Code. YAML .mmt files in Git.</h4>
<p>
<a href="https://mmt.dev/demos">Demo</a>
·
<a href="https://mmt.dev">Website</a>
·
<a href="https://github.com/mshobeyri/multimeter/issues/new?labels=enhancement&template=feature_request.yml">Request Feature</a>
·
<a href="https://marketplace.visualstudio.com/items?itemName=mshobeyri.multimeter">VS Code</a>
·
<a href="https://www.npmjs.com/package/mmt-testlight">CLI</a>
·
<a href="https://github.com/mshobeyri/testlight-action">GitHub Action</a>
·
<a href="https://mmt.dev/docs/quick-start">Docs</a>
·
<a href="https://mmt.dev/llms.txt">llms.txt</a>
</p>
<p>
<a href="https://marketplace.visualstudio.com/items?itemName=mshobeyri.multimeter">
<img src="https://vsmarketplacebadges.dev/installs-short/mshobeyri.multimeter.svg" alt="VS Code Installs"/>
</a>
<a href="https://www.npmjs.com/package/mmt-testlight">
<img src="https://img.shields.io/npm/dt/mmt-testlight.svg" alt="npm downloads"/>
</a>
<a href="https://marketplace.visualstudio.com/items?itemName=mshobeyri.multimeter">
<img src="https://vsmarketplacebadges.dev/version-short/mshobeyri.multimeter.svg" alt="Version"/>
</a>
<a href="https://github.com/mshobeyri/multimeter/blob/main/LICENSE.md">
<img src="https://img.shields.io/badge/license-Apache%202.0-blue.svg" alt="License"/>
</a>
</p>
</div>
<p align="center">
<img src="res/intro.png" alt="Multimeter โ Get Started, YAML, and API tester" width="640" />
</p>
## ๐ Start with a request. Grow into a platform.
**Multimeter** is Git-native API testing in VS Code. Requests, tests, mocks, and docs are YAML `.mmt` files in your repo.
Start with a single HTTP request.
Grow into tests, suites, mocks, reports, documentation, and CI when you need them.
All in the same tool. No migration. No second product.
## ๐ฏ What you get
**Simple by default**
- โ
Git-native, file-based YAML
- โ
Lightweight โ no account, no cloud lock-in
- โ
Collaboration through pull requests, like code
- โ
The same files locally and in CI
**A full testing platform when you need it**
- โ
HTTP, WebSocket, GraphQL, and gRPC
- โ
Multi-step flows and test suites
- โ
Mock servers
- โ
Generated documentation
- โ
Reports
- โ
CI with `testlight`
**AI in the same files**
- โ
Generate tests from an API or a description (Cursor, Copilot, Claude via MCP)
- โ
Judge replies โ semantic similarity, or open-ended checks like how funny a response is
- โ
Bring your own model (Ollama or cloud)
[See all features โ](https://mmt.dev/#features)
## โก Start simple
Multimeter is a VS Code-native extension. All you need:
- Click Install button in [Multimeter VS Code Extension](https://marketplace.visualstudio.com/items?itemName=mshobeyri.multimeter)
- Open **Get Started** from the `Activity bar` and follow the instructions
There you run a POST request as follows:
```yaml
type: api
title: Simple POST
url: https://test.mmt.dev/echo
method: post
format: json
body:
message: hello
```
That's enough.
- No suites.
- No mocks.
- No workflows.
- No complexity.
## ๐งช Need tests?
```yaml
type: test
steps:
- http: https://test.mmt.dev/echo
method: get
expect:
status: 200
```
- Still simple.
- Still Git-native.
- Still easy to review.
## ๐ Scale without switching tools
As your project grows, Multimeter grows with it.
Add:
- Test suites
- Mock servers
- Documentation
- Workflow execution
- Structured reporting
- CI artifacts
**Only when you need them.**
Everything stays in the same ecosystem.
[See all examples โ](./examples)
## ๐ค MCP, AI generation, and AI judges
Cursor, Copilot, and Claude write and run the same `.mmt` files you edit in VS Code. MCP (`mmt-mcp`) gives them `scaffold_test`, `validate`, `format`, and `run` โ generate tests from an API or a description, then keep them in Git.
**Judge** an API answer in the same test. Compare semantic similarity to an expected reply, or check something open-ended โ for example, how funny the response is. Bring your own model (Ollama or cloud). An alternative to a separate Promptfoo eval stack.
See [MCP docs](https://mmt.dev/docs/features/mcp) ยท [Judge docs](https://mmt.dev/docs/files/judge)
## ๐ Built for reliable CI
Multimeter validates test definitions before execution.
That means:
- โ
Earlier feedback
- โ
More deterministic execution
- โ
Fewer surprises in CI
- โ
Easier debugging
- โ
Reproducible results
GitHub Actions:
```yaml
- uses: actions/checkout@v6
- uses: mshobeyri/testlight-action@v1
with:
file: tests/suite.mmt
report: junit
report-file: results/junit.xml
```
Or from a terminal using the Multimeter CLI called `testlight`.
```sh
npm install -g mmt-testlight
testlight run tests/suite.mmt
```
See the [GitHub Action](https://github.com/mshobeyri/testlight-action) and [Testlight install](https://mmt.dev/docs/features/testlight/install).
## ๐ฆ Everything stays in Git
Your code, tests, mocks, documentation, reports, and environment settings live in the same repository.
- โ
Version controlled
- โ
Code and tests evolve together
- โ
Reviewable through pull requests
- โ
Easy to move and share
- โ
No platform lock-in
- โ
AI can update code and tests together
- โ
Environment variables never go missing
- โ
Historical test results stay with the project
## ๐ง Philosophy
Most API tools focus on requests.
Multimeter focuses on behavior.
Instead of asking:
> "Did this request return the expected response?"
Multimeter helps you answer:
> "Does this system still behave correctly?"
---
## License
Multimeter is licensed under the [Apache License 2.0](LICENSE.md).
[Demos](https://mmt.dev/demos) ยท [Documentation](./docs/toc.md) ยท [Website](https://mmt.dev) ยท [GitHub](https://github.com/mshobeyri/multimeter)TDQS
Scored across 9 tools
Most tools map to distinct workflow stages: learning syntax, seeing examples, discovering APIs, scaffolding, validating, formatting, and running. discover_api and api_card overlap for single-API inspection, but the descriptions make the preferred choice clear.
Tool names mostly follow an imperative verb_noun pattern such as read_documentation, list_examples, discover_api, scaffold_test, validate, and run. api_card breaks the pattern as a noun-only name, but the inconsistency is minor and not confusing.
Nine tools is well-scoped for this server's purpose of discovering, generating, validating, formatting, and running Multimeter tests. Each tool serves a clear role in the workflow without redundancy or bloat.
The toolset covers the core lifecycle from API discovery and test scaffolding to assertion suggestions, validation, formatting, and execution. A few peripheral capabilities like listing or deleting existing tests are absent, but agents can complete the primary authoring workflow without dead ends.