Skip to main content
MeshTest logo
Now in v0.4 — CLI + MCP server on npm

Live API tests,
without writing tests.

Import your Postman collection or OpenAPI spec. MeshTest generates a full regression suite with auth auto-detected, drift detection built in, and an MCP server so Claude, Cursor, or any AI agent can run your tests directly. In one command.

$npm install -g @meshtest/cli
~/payment-api
$meshtest generate --from postman ./collection.json
 Parsed 12 requests across 3 folders
 Auth detected: bearer
 Environment vars: 4
 CRUD chains detected: 2
 Generated meshtest.yaml

$meshtest run --env staging
 meshtest › payment-api › staging

  ▸ Invoices
     List invoices 156ms
     Create invoice 342ms
     Get created invoice 198ms
     Update status 204ms
     Delete invoice 134ms

 All 12 tests passed (2.3s)

You already have your API's spec.
So why are you writing tests from scratch?

Your team's Postman collection describes what your API does. Your OpenAPI spec describes what it should do. Both sit unused when it's time to catch a regression in staging.

Writing a proper regression suite from scratch is a week of engineering nobody has time for. And it goes stale the moment someone ships a new endpoint.

MeshTest turns the spec you already have into the test suite you always wanted. One command. Runnable in CI. Drivable by AI agents.

3
commands
generate → run → diff. That's the whole loop.
5
auth types
bearer, api_key, basic, header, fetch — all auto-detected.
0
test files to write
Manifests are generated from your spec. Never hand-authored.
How it works

Three commands. That's it.

From a Postman collection to a drift-detecting test suite in the time it takes to read this sentence.

01

Generate a manifest from your spec

Point meshtest generate at your Postman collection or OpenAPI spec. It parses every request, auto-detects auth, extracts environment variables, and identifies CRUD chains so dynamic IDs flow naturally between related tests. The output is a plain-YAML meshtest.yaml you commit to your repo.
generate
$meshtest generate --from postman ./collection.json -o meshtest.yaml
 Parsed 12 requests, 3 folders
 Auth detected: bearer (extracted from headers)
 Env vars: 4 → ${API_URL}, ${AUTH_TOKEN}, ${TENANT}, ${CLIENT_ID}
 CRUD chains: 2 (POST → GET → PATCH → DELETE)
 Wrote meshtest.yaml
02

Run against staging. See what actually works.

meshtest run executes every test in your manifest against your live environment. Captures response values between tests. Times every request. Fails loudly on unexpected status codes, body shape changes, or slow endpoints.
run
$meshtest run --env staging

  meshtest › payment-api › staging

  ▸ Invoices
     List invoices 156ms
     Create invoice 342ms  →  captured: invoice_id
     Get created invoice 198ms
     Update status 204ms
     Delete invoice 134ms

  ▸ Subscriptions
     List subscriptions 178ms
     Get subscription 222ms

 All 12 tests passed (2.3s)
03

Snapshot responses. Fail CI when they change.

meshtest diff --record saves a baseline snapshot of every response. Later runs compare against the baseline — different status? removed field? doubled latency? — and exit non-zero for CI to catch it. Baselines are plain JSON. Commit them, review them, roll them back like any code.
diff
$meshtest diff --tag v1.2.0

  meshtest › payment-api › drift check

   List invoices (matches baseline)
   Create invoice (matches baseline)
   Get invoice by id
       status: 200 → 404
       body:   removed 3 fields
   Update status (matches baseline)

 1 drift detected (exit 1)
What makes it different

Not just a test runner.

MeshTest ships with what most teams end up building themselves — auth handling, drift detection, environment resolution, AI-agent integration — so you skip straight to the useful part.

Zero-config generation

Imports Postman/OpenAPI directly. Auto-detects the five common auth patterns. Extracts environment variables. Chains CRUD requests so dynamic IDs flow naturally between tests. You don't hand-author manifests — you generate them.

Baseline drift detection

Snapshot every response's status, body, and latency. Every subsequent run compares against the snapshot and fails CI on semantic changes. No hand-written assertions. No maintenance.

AI-agent native

Ships as an MCP server too. Claude Desktop, Cursor, Windsurf, or any MCP-compatible agent can run your regression tests via natural language. Same manifest. Same auth. Driven by an AI.

Portable & open

Plain YAML manifests. Plain JSON baselines. No lock-in, no cloud dependency, no vendor account. Move to any other tool the moment you want to — nothing has to be rewritten.

Real auth, not toy auth

Bearer, API key, basic, custom header, and OAuth token-fetch with caching. Shared profiles across services. Per-suite and per-test overrides. Auth 'none' to strip. Everything a real production API actually needs.

Capture chains + hooks

Setup and teardown hooks per suite. Capture response values with JSONPath and reuse them across tests. Built-in vars (run_id, timestamp, random_int) for realistic payloads. CRUD lifecycles just work.

Two paths, one manifest

CLI for humans. MCP for agents.

Same meshtest.yaml. Same tests. Same auth. Same baselines. Whether an engineer or Claude runs the suite, the result is identical.

@meshtest/cli

The CLI

For engineers and CI. Ships as the meshtest binary. Generate manifests, run tests, record baselines, diff against them. Wire into GitHub Actions, GitLab CI, CircleCI, or any container that runs Node.

  • Terminal-first, human-friendly output
  • Parallel test execution with per-suite tagging
  • JSON output flag for machine consumption
  • Manifest auto-discovery across a repo
CLI reference →
@meshtest/server

The MCP server

For AI agents. Ships as the meshtest-server binary. Speaks the Model Context Protocol natively. Wire into Claude Desktop, Cursor, Windsurf, or any MCP-compatible client and let the agent drive your tests via natural language.

  • Five MCP tools: discover, run, probe, diff, explain
  • Claude Desktop verified working
  • Multi-repo registry support via config
  • Rule-based or LLM-powered failure diagnosis
MCP integration →
How it compares

The gap MeshTest fills.

Each tool below is genuinely good at what it does. MeshTest occupies the space between them: zero-config CI regression testing that speaks Postman and OpenAPI, plus MCP so AI agents can drive it.

CapabilityMeshTestNewmanPostman CloudBrunok6DD Synthetic
Import Postman collection
Import OpenAPI specPartialPartialPartialPartial
Auto-detect auth from spec
Baseline drift detection
Runs in CI (no cloud required)
AI-agent driven (MCP)
Zero-config CRUD chains
Plain-text, git-friendly config

Partial means the tool ingests OpenAPI in some form — usually as raw requests you then configure yourself. Only MeshTest auto-generates a runnable test manifest with auth, expectations, and CRUD chains straight from the spec. Every tool listed is genuinely good at what it does; the point of this table is to show which gap MeshTest is filling.

Who it's for

Built for the messy middle.

The teams whose APIs are past prototyping but not yet SLA-monitored. Where the spec exists but the tests don't.

Backend engineers

Maintaining production HTTP APIs. Want CI regression testing without standing up Postman Cloud or Datadog Synthetic.

Platform teams

Standardising testing across a fleet of services. Need one manifest format, one runner, one baseline store — that engineers on any service can adopt in an afternoon.

Pre-launch startups

Where every release ships breaking changes that "should work" and sometimes don't. Snapshot every response today, notice the regression before your customers do.

AI-tooling teams

Building agents that test production behaviour, not just read source code. MeshTest gives them a native interface via MCP — no glue scripts, no shell parsing.

Start testing the API you already have.

Free to use. No account, no cloud dependency, no signup wall. Installs in the time it takes to write a commit message.

$npm install -g @meshtest/cli