$privacy-first · git-native · ai-powered

The API client that writes and tests itself

Describe an API in chat, run your project, and FetchMate reads your endpoints and builds the requests for you — every payload key already filled in. You just add the values and hit send.

free & open source · macOS, Windows & Linux · no account required

You already know this loop. It's exhausting.

Write an endpoint in your editor → alt-tab to Postman → hand-type the URL → hand-type every JSON field → send → read the error → alt-tab back → fix. Then the code changes and your requests silently drift out of sync.

FetchMate collapses that entire loop into one surface where your code and your client are the same living thing.

One loop, zero alt-tabbing

From an idea to a running, tested endpoint — without ever hand-typing a request.

01

Build by chatting

Spin up a project and describe what you want. FetchMate's agent writes the controllers, DTOs and routes right in your repo.

02

Run it in place

Start your dev server without leaving the app. Logs stream live, and FetchMate detects the port and your OpenAPI spec automatically.

03

Endpoints appear on their own

FetchMate reads the live spec and generates a full collection — every request pre-built with its payload keys. You only fill in the values.

04

Never drift again

Change the code and FetchMate flags exactly what moved: new endpoints, changed payloads, removed routes — while keeping the values you typed.

Everything you expect. Plus the part nobody else has.

Live sync engine

Point at any running server or OpenAPI spec and get a collection that stays in sync as your code evolves.

Git-native by design

Everything is plain YAML that lives in your repo. Review API changes in pull requests, just like code.

Privacy-first

Your collections never leave your machine. AI runs on your own API key — bring your own model, or run local.

Chat to build

An agent that scaffolds projects and adds endpoints on request — then watches the client fill itself in.

Full protocol support

HTTP, GraphQL and WebSockets today, with response extractors and chained requests built in.

Import what you have

Bring collections in from cURL, OpenAPI and Postman — no lock-in, no migration tax.

Works where you already work

One client, everywhere you build

FetchMate isn't a walled garden. Pull requests in from the browser, run them from your editor, and let agents drive them over MCP — all against the same plain-YAML collections in your repo.

Chrome · DevTools

Grab requests from the browser

Open your browser's Network panel, right-click any request, and send it straight into FetchMate — method, URL, headers and body intact. No copy-as-cURL gymnastics, no hand-retyping. Debug in the browser, keep it in your collection.

VS Code

Run without leaving your editor

Your collections show up in the VS Code sidebar. Run a single request or a whole collection inline while you code, or hit “Open in App” to jump into the full client. The API you're building and the client that tests it live in the same window.

Claude · one-click MCP

Hand your APIs to an agent

A one-click .dxt install drops FetchMate into Claude as tools it can actually drive — list_collections, list_requests, run_request, run_collection. Ask Claude to hit your staging API and tell you what broke; it runs the real requests with your real auth.

All open source, all in the monorepo — no proprietary bridges, no lock-in.

Agent-native& CI-ready

Your collections are plain files, so they aren't trapped in the app. Let AI agents run them over MCP, or run them headless in CI — same engine, same auth, same variable chaining.

MCP server

Point Claude, Cursor, or any MCP client at FetchMate and it can list and run your saved requests as tools — turning your API collections into something agents can drive.

list_collectionslist_requestsrun_requestrun_collection
{
  "mcpServers": {
    "fetchmate": {
      "command": "npx",
      "args": ["tsx", "packages/mcp/src/server.ts"],
      "env": { "FETCHMATE_DIR": "./" }
    }
  }
}

Try:“Use fetchmate to run the Users API against staging and tell me what failed.”

CLI for CI

Run a whole collection headlessly and gate your pipeline on it — the command exits non-zero if any request fails or a test breaks.

$ fetchmate run "Users API" --env staging
  ✓ POST  Login          200  118ms
  ✓ GET   Get profile    200  (1/1 tests)  91ms
  2 passed, 0 failed · 209ms

Same YAML collections you commit to Git — no export step, no drift.

Your APIs. Your machine. Your repo.

No forced cloud sync. No account wall. No proprietary format holding your work hostage. FetchMate stores everything as human-readable YAML you can commit alongside your code — so your API definitions are versioned, reviewable and shareable through the tools you already use.

  • 100% local storage — nothing leaves your machine
  • Plain-text YAML collections, diff-friendly in Git
  • Bring-your-own AI key, or run a local model
  • Open source and free to download
# users.collection.yaml
name: Users API
requests:
  - name: Create user
    method: POST
    url: {{baseUrl}}/users
    body:
      email: ""   # you fill this
      role:  ""   # and this

Frequently asked

The common questions. More in the docs.

Everything is stored locally on your machine as plain YAML files — no cloud, no account, no telemetry. Collections live wherever you choose, so they can sit in your Git repo alongside your code.

Be first to try it

FetchMate is in active development. Drop your email and we'll send you the download the moment it's ready — no spam, just the launch.