Gostman
This server exposes a Gostman workspace over MCP so an agent can browse, send, run and save API requests without ever handling raw secrets.
Discover saved requests (
list_requests, filter by folder) and inspect one in full (get_request), with credentials masked and variables shown as{{name}}.Send requests (
send_request) — saved or ad hoc — with variables, auth, cookies and OAuth tokens filled in automatically; supports JSONPathselect, body truncation limits, and returns status, timing, test results and logs.Run collections (
run_folder) in order across a folder or whole workspace, with tag filters, bail-out, data-driven iterations, and failure details.Review responses (
last_response) — replay the last result without resending, and diff it against saved examples (optionally shape-only).Author requests (
save_request) — create or update requests with headers, body, tags, assertions and extraction rules; optimistic revision checks prevent clobbering.Import requests from OpenAPI/Swagger, Postman, Insomnia, Bruno, HAR, .http or curl (
import_requests).Manage environments (
list_environments,set_environment,set_variables) — switch active environment and persist plain variables, while secrets stay with the developer.Load test a single request (
load_test) with concurrency, RPS and duration caps, reporting latency percentiles and status codes.Mock APIs locally (
start_mock,stop_mock,mock_status) from saved example responses.Quality and safety checks —
scan_secretsfor credentials leaked into files,lint_specfor OpenAPI problems, andchangesto see recent edits by other agents.
Integrates with 1Password as a secret manager, letting requests and environments resolve stored credentials without putting secrets in collection files.
Supports Akamai EdgeGrid authentication, enabling requests to Akamai APIs with EdgeGrid-signed credentials.
Supports Atlassian ASAP authentication for calling Atlassian APIs.
Integrates with Bitwarden and Bitwarden Secrets Manager as secret managers for retrieving credentials and stored values.
Imports and exports Bruno collections, including requests, scripts, and environment data.
Imports curl commands and generates curl scripts from saved requests.
Provides a Git panel for versioning collections as plain YAML files, with diff, commit, push, branch, stash, and conflict-resolution support.
Integrates with Google Cloud secret management to retrieve secrets used by requests and environments.
Supports GraphQL requests, including a schema browser and GraphQL subscriptions.
Imports Insomnia collections, including requests and scripts.
Imports and exports JetBrains HTTP Client .http files.
Integrates with KeePassXC as a secret manager for retrieving stored credentials.
Supports MQTT over WebSocket for publish/subscribe testing against MQTT brokers.
Imports and exports Postman collections and environments.
Supports Socket.IO connections for testing real-time Socket.IO APIs.
Integrates with HashiCorp Vault as a secret manager for retrieving secrets without storing them in collections.

Save a request once and use it three ways: send it from the app, check it on every pull request with gostman run, and let a coding agent call it through gostman mcp without seeing your secrets. Requests, collections and environments are plain files on your machine, and there is nothing to sign in to. New here? The tutorial builds a tested collection step by step, and the documentation covers every feature.
Gostman is a native desktop application built with Go and Wails, with the same interface in the browser at gostman.com.
Why not Bruno or Postman?
Both are good tools. Gostman is for people who want the paid-tier workflow without a paid tier or an account.
Nothing to sign in to. Collections are plain YAML files in a folder you can commit. The desktop app and the browser version both work without an account.
No telemetry. No analytics or crash reporting in the apps or the command line; they contact only the hosts you send to and the services you set up. Only the home page at gostman.com counts visits, without cookies. What Gostman connects to lists every network call.
No tiers. Data-driven runs, parallel runs, HTML reports, secret managers (Vault, AWS, Azure, Google Cloud, 1Password, Bitwarden, Bitwarden Secrets Manager, KeePassXC), the Git panel and any number of collections are all in the download. Bruno documents several of these under its Pro and Ultimate plans, and Postman lists custom data files in the Collection Runner on its paid plans.
Sharing without Git. Send a folder to a teammate as an encrypted link or file that is built on your machine and never uploaded.
More in the same download. Load testing, Socket.IO, MQTT, SignalR, GraphQL subscriptions, MCP servers, raw TCP and UDP, NATS, importers for Postman, Bruno, Insomnia, Hoppscotch, Thunder Client, HTTPie, Hurl and Firecamp, scheduled runs with a history, snapshot and negative tests, OpenAPI coverage, spec diff and fuzzing, traffic capture with rules and held calls, a secret scanner and a mock server, a VS Code extension, plus a command line that is one binary with no Node.js to install.
Prices and plans change, so check their pages before you decide. Gostman has no accounts, so it has no hosted collaboration, SSO or cloud monitors. What is free in Gostman compares the paid features of Postman, Bruno and Insomnia with Gostman. Moving from Postman, Bruno or Insomnia? Coming from Postman, Coming from Bruno and Coming from Insomnia cover importing a collection, its scripts and the matching gostman run flags.
Will Gostman add a paid tier?
Gostman has no paid tier, no account and no licence key, and every feature is in the free download. It is released under the MIT licence, so the published code stays free to use, change and fork whatever happens to the project.
Related MCP server: lunge
Quick start
Browser: open gostman.com/web, paste a URL and press Send. Requests go through a hosted proxy; run
gostman relayto use your own.Desktop: download the installer from Install and open it.
Command line: send a request, or run a collection you saved to a folder in the app.
go install github.com/kunalgoesbyken/gostman/cmd/gostman@latest
gostman send GET https://example.com -H 'Accept: text/html'
gostman run path/to/collectionTry a working collection
The examples folder holds collections that call public test APIs, so they run as soon as you clone the repository:
git clone https://github.com/kunalgoesbyken/gostman && cd gostman
gostman run examples/todo-api --env PublicPASS GET Todos/List todos 200 OK 99 ms 3/3 checks
PASS GET Todos/Get one todo 200 OK 13 ms 3/3 checks
PASS POST Todos/Create a todo 201 Created 286 ms 3/3 checks
Requests 3 passed
Checks 9 passed
Duration 412msOpen the same folder in the desktop app with Open folder to see the requests, the checks and the variable passed from one request to the next.
Learn
Tutorial: test an API builds that collection step by step: variables, folders, assertions, chaining, scripts and a data-driven run.
Tutorial: run your API tests in CI runs it on every pull request with secrets kept out of the files.
Guides by task: migrate from Postman, mock a backend before it exists, record real traffic, load test, publish docs, let a coding agent call your API.
Script reference and examples: JSON Schema checks, request signing, fetching a token, polling.
Fault-test your API with seedfall: run a collection's checks against a Go service while seedfall, a sibling project, crashes it and partitions its network.
Features
Protocols: REST, GraphQL (schema browser), gRPC (reflection or
.proto), WebSocket, Socket.IO, MQTT over WebSocket, SignalR, GraphQL subscriptions, Server-Sent Events, SOAP, MCP servers, and raw TCP and UDP and NATS (desktop), over HTTP or, on the desktop, as a local command (stdio).Auth: Basic, Bearer, API key, OAuth 2.0 (with PKCE and automatic renewal), OAuth 1, Digest, AWS SigV4, NTLM, Akamai EdgeGrid, JWT Bearer, Atlassian ASAP and Hawk.
Workflow: collections with nested folders, environments and variables, extraction rules to chain requests, a cookie jar, history, earlier responses with a side-by-side compare, and a command palette.
Checks: assertions plus pre-request and post-response scripts with
test()andexpect()in a sandbox, and snapshot checks, and a collection runner with CSV, JSON or XLSX data files, parallel runs and HTML, JUnit and JSON reports.Scheduled runs:
gostman run --everyand the Monitors dialog repeat a run, keep a history (gostman history) and post to a webhook when it starts failing.Local load testing with
gostman load: latency percentiles, thresholds and staged ramps.API testing from a spec:
gostman negativesends altered copies of saved requests,gostman fuzzsends schema-derived inputs for every operation of an OpenAPI document,gostman difflists breaking changes between two specs, andgostman run --contract --coveragelists operations a run did not reach.Secret scanner:
gostman scanand an in-app check find credentials typed into a collection before you commit or share it.Collections as files: plain YAML in a folder with a Git panel (diff, commit, push, branches, stash, conflicts) on the desktop.
Mock server and capture: serve saved examples or an OpenAPI spec locally, and record traffic from your own app.
OpenAPI: import, sync with a remote spec, and a spec viewer with a linter (
gostman lint).Docs: generate one HTML page with Markdown descriptions and an optional Try it panel.
Secret managers: HashiCorp Vault, AWS, Azure and Google Cloud; the password managers KeePassXC, 1Password and Bitwarden, and Bitwarden Secrets Manager; and your OS keychain for stored values. Fields that read from a connection are tinted with its colour.
Themes: light and dark, eight palettes, accent colours, and your own background and text colour for each part of the window, with a contrast check.
Sharing: encrypted share links that never upload anything, and Open in Gostman links.
For coding agents:
gostman mcplets Claude Code, Codex and Cursor call your API through the collection without seeing your secrets.VS Code extension: send a request from a lens above its file, run requests and folders in the Test Explorer, pick the environment from the status bar, run flows, lint an OpenAPI spec and scan for secrets, through the Gostman CLI.
AI assistant (optional, bring your own key): generate requests, checks and scripts, and explain errors.
Import and export: Postman, OpenAPI, Insomnia, HAR, WSDL, Bruno, Hoppscotch, Thunder Client, HTTPie, Hurl, Firecamp, RAML, API Blueprint, .http files (VS Code REST Client, JetBrains HTTP Client) and curl in; Postman, OpenAPI, HAR, Bruno, .http files, Hurl files, a curl script, Markdown, an HTML docs page and a Gostman backup out.
Code generation for cURL, JavaScript, Python, Go, Java, Kotlin, C#, PHP, Ruby, Swift, Rust, Dart and PowerShell, plus axios, Node http, httpx, OkHttp, RestSharp, Guzzle, HTTPie and wget (21 targets).
Install
Download the latest build from the releases page.
Platform | File | Notes |
Windows | Installer. Adds Start menu and desktop shortcuts and an uninstaller. | |
Windows | Single executable, no installation. | |
macOS | Intel and Apple Silicon. Drag Gostman to Applications. | |
Linux | Debian and Ubuntu. | |
Linux | Any distribution. | |
Linux | Other distributions. | |
Arch Linux | Community package in the AUR, maintained by @softexpert. |
The builds are not code-signed yet, so the operating system asks for confirmation the first time:
Windows: SmartScreen shows "Windows protected your PC". Choose More info, then Run anyway.
macOS: right-click Gostman in Applications and choose Open, then confirm.
Windows needs the WebView2 runtime, which ships with Windows 10 and 11; the installer fetches it when it is missing.
VS Code extension and MCP server
VS Code: install Gostman from the Visual Studio Marketplace. It calls the
gostmancommand, so install the command line too. See VS Code extension.Coding agents:
gostman mcp <workspace>serves a workspace over MCP, andgostman init --skillwrites the Agent Skill. See Use from a coding agent.
Set up with your coding agent
Install the Gostman Agent Skill for the coding agents on your machine:
npx skills add kunalgoesbyken/gostman --skill gostmanOr copy this prompt into your coding agent, from your project:
Set up Gostman in this project so you can call and test its APIs without curl.
1. If `gostman version` fails, install the gostman command with `go install github.com/kunalgoesbyken/gostman/cmd/gostman@latest`, or download the gostman-cli archive for this platform from https://github.com/kunalgoesbyken/gostman/releases/latest.
2. Run `gostman init --skill` in the project root. Note the workspace folder and the `mcp` registration command it prints.
3. Register that command with your MCP client, using the absolute workspace path.
4. If the project has an OpenAPI spec, run `gostman import <spec> --out <workspace>`. Otherwise ask me which API to call.
5. Send one request with the gostman tools, run the workspace with `gostman run <workspace>`, and tell me what passed.
Never pass --reveal. Keep credentials in {{variables}}, and ask me before calling a host that my saved requests do not already use.Secrets and Git
A folder workspace is meant to be committed. What goes where:
Safe to commit:
gostman.yaml,folder.yaml, the request files,environments/andflows/. They hold names, URLs, bodies and the values of variables you did not mark secret, so read a diff before you push.Marked secret: the value lives in the OS keychain on desktop (IndexedDB in the browser). Only the variable name is written to the YAML, so a token never lands in the folder. Mark every token: a variable you do not mark is plain text in the environment file, and the app warns when an unmarked value looks like a credential.
Never written to the folder: OAuth tokens, cookies, request history and secret values.
Keep out of Git: a
.envfile next togostman.yamlis read as{{process.env.NAME}}and never written back. A new workspace gets a.gitignorefor.env,.env.*and the.gostman-*.tmpleftovers of an interrupted save;gostman initadds it to an older workspace, and an existing.gitignoreis never changed.Check before you share:
gostman scan <folder>and the Scan for secrets command flag credentials typed into requests and variables.
See Variables for the details.
Web version
gostman.com runs the same interface in the browser. Browsers cannot call arbitrary APIs directly, so requests are relayed through a small proxy, and that includes any API token in the request. The proxy's code is open source in api/proxy.go and does not store requests or responses; this repository cannot speak for the logs of the host it runs on. To keep tokens off a server you do not run, start gostman relay on your computer and choose it under Preferences, Privacy, or use the desktop app. It differs from the desktop app in these ways:
The hosted proxy cannot reach
localhostor private network addresses. Use the desktop app for local APIs, or rungostman relayand choose it under Preferences, Privacy.The web app has no proxy, CA certificate or client certificate settings. Use the desktop app, or start
gostman relaywith--proxy,--cacertor--client-cert.A gRPC stream is collected and shown when it ends; messages for a client stream are written up front as a JSON array.
Responses larger than 3 MB are truncated. The desktop app reads up to 50 MB.
Data in the web version is kept in the browser's IndexedDB.
Documentation
The same pages are published at gostman.com/docs. The tutorials and guides are listed under Learn; the reference pages are:
Start: Getting started, What is free in Gostman, and coming from Postman, Bruno or Insomnia
Requests: Requests and responses, Protocols
Variables and secrets: Variables, Secrets and network settings
Testing and automation: Scripts and checks, Running, load testing and scanning, Gostman in CI, Fault testing with seedfall
Collections and Git: Collections, tabs and Git, Folder and collection settings, Folders, mock server and capture, Import, export and OpenAPI specs, Sharing and documentation
Agents and AI: Use from a coding agent, VS Code extension, AI features
Reference: Command line, Preferences, shortcuts and the command palette
Translations
Gostman is translated on Weblate. The first drafts of each language are checked by native speakers over time. To ask for a language, offer to translate or report a wrong translation, use issue #15. Translating Gostman explains how the translation files work and how to send changes.
Contributing
Issues and pull requests are welcome. For anything larger than a small fix, please open an issue first to agree on the approach. See CONTRIBUTING.md for how to build, test and release.
Available Tools
17 toolschangesRecent changesARead-onlyIdempotent
List the requests and environments agents saved, imported or changed in this workspace recently, oldest first, with the session that did it. Use it to see what other agents changed before you edit the same items.
Inputs: mine, since. Returns: changes, summary
get_requestShow requestARead-onlyIdempotent
Show one saved request in full: URL, headers, body, auth settings, its own variables (vars), assertions, extraction rules, scripts and the names of its saved examples. Credentials are masked; variables appear as {{name}}. options lists only the settings that differ from the defaults. revision identifies this version for save_request.
Inputs: request (required). Returns: id, url, auth, body, +20 more
import_requestsImport requestsA
Add requests to the workspace from an OpenAPI or Swagger spec, a Postman, Insomnia or Bruno collection, a HAR file, .http requests or a curl command. Nothing existing is changed: the collection settings of a Gostman export are adopted only when the workspace has none. Scripts and OAuth 2.0 settings are removed (listed in leftOut; warnings describe the source document), and an import that holds a credential, reads local files or runs local commands is refused. Returns what was added.
Inputs: url, folder, format, content. Returns: notes, folder, folders, leftOut, +9 more
last_responseLast responseARead-onlyIdempotent
Show the last response a saved request got in this session, from send_request or run_folder, without sending it again. When the request has saved examples, also compare the response with one: status, content type and, for JSON, the paths that differ.
Inputs: request (required), select, example, shape_only, +2 more. Returns: body, error, status, headers, +6 more
lint_specLint OpenAPI specARead-onlyIdempotent
Check an OpenAPI 3 or Swagger 2 document against Gostman's built-in rules: missing operation ids or descriptions, undeclared path parameters, missing error responses, undefined security schemes, broken $refs and similar. Returns the counts and findings.
Inputs: url, content. Returns: counts, omitted, findings
list_environmentsList environmentsARead-onlyIdempotent
List the environments of the workspace with the names of their variables, which one is active, and the names of the variables that have a value in this session. Values are never returned; reference a variable as {{name}}. Names under secret get their values from the developer; when one is missing from sessionVariables, ask the developer to pass it with --var-from-env.
Inputs: no named parameters. Returns: active, environments, sessionVariables
list_requestsList requestsARead-onlyIdempotent
List the API requests saved in this Gostman workspace: id, name, method, URL template, folder, tags, whether each has checks (hasTests) and whether it has saved example responses. Call this first to find a request to send instead of writing a curl command.
Inputs: folder. Returns: problems, requests, environment
load_testLoad testADestructive
Send one saved request many times at once and report throughput, latency percentiles, status codes and error samples. Limited to 20 at once, 30 seconds and 5000 requests, to hosts this session may call. Only test systems the developer owns.
Inputs: request (required), rps, requests, concurrency, +1 more. Returns: hint, total, checks, config, +13 more
mock_statusMock server statusARead-onlyIdempotent
Report whether the mock server is running, its address, its routes refreshed from the workspace, and the last requests it answered.
Inputs: no named parameters. Returns: routes, address, running, recentRequests
run_folderRun folderADestructive
Send every request in a folder, or in the whole workspace, in order, with scripts and assertions, the way the collection runner does. tags and exclude_tags narrow the run to a subset such as smoke tests; data and iterations repeat it. Use it to check that an API still works after a change. Returns the counts and, for failed requests only, the error, the failed checks (failedTests) and the console output.
Inputs: bail, data, tags, folder, +2 more. Returns: hint, summary, failures, withheld, +4 more
save_requestSave requestADestructive
Create a request in the workspace, or update one by id, so the developer finds it in the Gostman app and it can be re-run later. Only the fields you give are changed. Secrets are refused: a value that matches a variable or a credential must be written as {{name}}. Returns the request's id, name, folder and new revision. An update is refused when the request changed since you read it with get_request; read it again and merge.
Inputs: id, url, body, name, +9 more. Returns: id, name, note, folder, +2 more
scan_secretsScan for secretsARead-onlyIdempotent
Look for credentials typed into the workspace's requests, environments, scripts and saved examples. Findings show where and why, with at most the first four characters of a value. Run it before the developer commits or shares the workspace.
Inputs: skip_examples. Returns: high, medium, omitted, scanned, +1 more
send_requestSend requestADestructive
Send a saved request (give request) or an ad hoc one (give url). Prefer this over curl in a shell: Gostman fills in {{variables}}, auth, cookies and OAuth tokens itself, so no secret has to appear in the command or in the result, and a login made by one call is still in effect for the next. Saved requests also run their scripts, extraction rules and assertions. Returns two parts: a JSON summary (status, duration, size, content type, the address as sent in resolvedUrl with variable values shown as {{name}}, test results, script console output, names of cookies and variables that were set, and body.bytes, body.returnedBytes, body.truncated) followed by the response body as text. When body.truncated is true, narrow the answer with select or raise max_body_bytes. failed is true when the request could not be sent or a test did not pass. unresolved lists placeholders that have no value; withheld lists secrets that were not filled in because none of the developer's requests sends them to this address.
Inputs: url, body, method, select, +6 more. Returns: url, body, hint, logs, +17 more
set_environmentChoose environmentAIdempotent
Choose the environment whose variables fill in {{name}} for the rest of this session, for example to switch from Local to Staging. The environment's variables are read again and variables set by earlier requests are cleared; cookies and OAuth tokens are kept.
Inputs: name (required). Returns: active, environments, sessionVariables
set_variablesSet environment variablesADestructiveIdempotent
Save plain variable values such as baseUrl or userId in an environment file of the workspace, so later requests and the developer's app use them. Credentials are refused, and so are variables the developer marked secret. Values set here never let requests reach a new host. Refused when the environment changed since list_environments showed it.
Inputs: variables (required), revision, environment. Returns: set, note, active, created, +3 more
start_mockStart mock serverA
Start a mock server on localhost that answers each saved request's path with its saved example response. Use it to develop against an API that is not running. Returns the address and, per request, whether it is served and why not.
Inputs: port, delay_ms. Returns: routes, address, running, recentRequests
stop_mockStop mock serverAIdempotent
Stop the mock server started with start_mock.
Inputs: no named parameters. Returns: routes, address, running, recentRequests
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 17 tools
Most tools target a clearly distinct resource+action: the mock trio (start/stop/status), request CRUD (list/get/save), and execution tools (send_request, run_folder, load_test) each have explicit boundaries spelled out in the descriptions. The only real friction is the environment trio (list_environments / set_environment / set_variables) and the send/run/load family, which an agent must read carefully to choose between, but the descriptions do resolve them.
Roughly 13 of 17 names follow a clean verb_noun pattern (get_request, save_request, list_requests, start_mock, send_request, run_folder, lint_spec, etc.). The deviations are noun-only names like changes, last_response and mock_status, which are readable but break the otherwise predictable convention.
17 tools maps well onto the breadth of the domain — workspace requests, environments, mocking, test runs, imports and linting — and each tool plausibly earns its place. It sits at the upper end of a comfortable set and a couple of the mock/status tools could conceivably be folded together, but nothing is redundant filler.
The core lifecycle is covered — list/get/save requests, send, run a folder, load test, import, mock serving, environment selection, secrets scanning and spec linting. However there is no way to delete or archive a request, no create/delete environment, and no folder management, so agents will hit dead ends on cleanup and naming/structural operations.
Maintenance
Related MCP Connectors
Supervised API-write gateway for AI agents with policy, human approval and execution receipts.
AI-callable tools for API mocking, testing, monitoring, security, and automation.
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Capture, inspect, send and assert on webhooks and inbound email from your coding agent.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAPI client with an MCP server. Your agent builds collections from your codebase, runs requests, writes e2e flows, and exports them to GitHub Actions CI automatically. Category: Developer Tools2 npm4ISC
- FlicenseNot gradedqualityCmaintenanceAgent-native API client for executing REST, GraphQL, WebSocket, SSE, and gRPC requests from MCP-capable agents, with token-efficient responses and file-based collections.-
- AlicenseNot gradedqualityDmaintenanceA keyboard-first API client that stores requests and environments as plain files, and exposes its workspace over MCP so agents can browse, send, and create requests with vault access.277 npmMIT
- AlicenseBqualityCmaintenanceStateful interactive HTTP REPL and Agentic MCP engine for API navigation and testing.4MIT