The local-first, AI-native OpenAPI studio

Your API, from local development
to docs and AI.

Give Codex, Claude Code and Cursor clear API definitions to code against. Generate docs from code and orchestrate tests with AI in the local-first Powerduck desktop app. Host OpenAPI docs and MCP servers for free on Hub.

commerce-api/openapi.yaml OpenAPI 3.1 · local file
One OpenAPI contract
/orders
  post  createOrder
  get   listOrders
/products
  get   listProducts
/customers
  get   listCustomers
Compiled into a runnable MCP server · 12 callable tools
Your coding agent Cursor · Claude Code · Codex
powerduck · MCP server
powerduck.read_spec() 12 operations found
powerduck.start_mock("POST /orders") Mock server live on :4010
powerduck.generate_tests("POST /orders") orders.test.js written
powerduck.call_api("POST /orders", {total:49}) 200 OK · verified against contract
powerduck.publish_docs() Reference docs updated
One OpenAPI file compiles into tools your agent calls — mock, tests, API calls and docs, all verified against the same contract.

Sign in with Google or GitHub. Powerduck provides built-in AI models and a shared account allowance.

Spec Editor  ·  API Debug  ·  Test  ·  Mock  ·  API Docs  ·  MCP Server

POWERDUCK HUB

One OpenAPI specification. Develop locally. Share online.

Keep your API workflow in the desktop app. Use Hub to share documentation and connect AI tools to your API.

  1. 01

    Build and verify

    Design, debug and test your API in Powerduck.

  2. 02

    Publish from OpenAPI

    Turn your specification into hosted documentation and an MCP endpoint.

  3. 03

    Share and connect

    Share the docs link, connect an MCP client, and choose whether to list your project publicly.

Free hosting within plan limits. Your business API continues to run on your own backend.

Why Powerduck

One local file replaces the API tool pile.

A single OpenAPI YAML in your repo drives design, debugging, tests, mocks, docs and MCP — and your coding agents use that same file.

One file runs every surface

Design, debug, test, mock, document and expose MCP from the same OpenAPI spec, so nothing drifts apart.

Others Separate collection, docs, mock and test files
Powerduck One YAML drives every tool and your agents

Every response is contract-verified

Each response is checked against the OpenAPI spec — not just displayed — so a wrong type or path is caught on the spot.

Others Sends the request and shows the 200 response
Powerduck Spec drift is flagged the moment the response returns

Local projects. One signed-in AI workspace.

Use Google or GitHub to sign in. Review code, assess tests and inspect changes with built-in AI, while you decide which files to create or publish.

Others Separate code review, tests and change tracking
Powerduck One Chat workspace with file-level evidence
~/commerce-api/openapi.yaml OpenAPI 3.1.0 3 problems unsaved
142 /users/{id}:
143 get:
144 operationId: getUser
145 summary: Retrieve a user
146 tags: [Users]
147 parameters:
148 - $ref: '#/components/parameters/UserId'
149 responses:
150 '200':
151 description: The requested user
152 content:
153 application/json:
154 schema:
155 $ref: '#/components/schemas/User'
156 '404': # description is required
157 contents:
158 application/json:
159 schema:
160 $ref: '#/components/schemas/Erorr'
161 delete:
162 summary: Delete a user
Problems 2 errors · 1 warning validated against 3.1 dialect
156:9 contents is not a valid Response Object key. Did you mean content? oas3-schema
160:24 Unresolved $ref — schemas/Erorr does not exist. ref-resolution
162:7 Operation has no operationId. It will be skipped when generating MCP tools. operation-operationId
Ln 156, Col 9 YAML UTF-8 Spaces: 2 3.1.0
Collections generated from openapi.yaml Postman import contract checks on
GET ▾
{{baseUrl}}/users/{{userId}}?include=profile
Staging ▾
Params1 Authbearer Headers3 Body Scripts Settings
# GET has no requestBody in the specification — body disabled
# Path parameter id resolved from environment → userId = usr_8Kd2Xa
200 OK 148 ms 1.2 KB Contract: 1 mismatch
Body Headers9 Cookies Contract1 Timeline
{
  "id": "usr_8Kd2Xa",
  "email": "ada@example.com",
  "created": 1757030400,
  "profile": {
    "name": "Ada L.",
    "locale": "en-GB"
  },
  "scope": "users:read orders:read"
}
Contract mismatch — response differs from the specification scope is present in the response but is not declared on components/schemas/User. Add the property to the schema or remove it from the handler.
mcp://localhost:7433 running stdio + HTTP

Generated from openapi.yaml

6 tools 7 resources 1 degraded regenerates on save

Every operation with an operationId becomes a tool. Arguments come from parameters and requestBody. Nothing is hand-written.

POST /auth/login → operationId → loginUser
loginUser

Exchange credentials for a bearer token.

email : string password : string
GET /users/{id} → operationId → getUser
getUser

Retrieve a single user by identifier.

id : string include? : string
POST /orders → operationId → createOrder
createOrder

Create an order for the authenticated customer.

items : array currency : string
POST /orders/{id}/refund → operationId → refundOrder
refundOrder

Refund an order in full or in part.

id : string amount? : integer
14:02:11 watch openapi.yaml changed (line 144)
14:02:11 build parsed 3.1.0 · 11 operations · 14 schemas
14:02:11 build 6 tools, 7 resources · 1 skipped (no operationId)
14:02:12 serve listening on stdio and http://localhost:7433
14:02:31 call getUser { id: "usr_8Kd2Xa" } → 200 in 148 ms
docs.example.dev/reference/users/get static export in sync with spec

Retrieve a user

GET /v1/users/{id}

Returns the user object for a valid identifier. If the user has been deleted, an Error object is returned with status 404.

Path parameters
id string Required
The identifier of the user, prefixed with usr_.
Query parameters
include string
Expand a related object.

SEE IT IN A WORKFLOW

Each familiar chore becomes a contract-driven flow.

Sign in with Google or GitHub. Powerduck provides built-in AI models and a shared account allowance.

Local work should not mean a stripped-down workspace.

Sign in to open your local workspace. Keep your project files on your machine; selected context is sent to Powerduck’s managed AI when you request analysis.

  • cURL / Postman / OpenAPI import
  • Auth & environments
  • Scripts & assertions
  • Collections & scenario tests
  • Local mock servers
  • 7-protocol debugging

Sign in with Google or GitHub. Powerduck provides built-in AI models and a shared account allowance.

Do you still read the source code to find out whether the API docs are right?

Generate docs from the project.

A reviewable API definition + a local docs link.

See setup & requirements

Have you given AI the spec, only to get different fields and paths back?

Implement from the actual API contract.

Implementation guided by the contract, checked against real responses.

See setup & requirements

Do you manually repeat the same business flow after every API change?

Run the whole business scenario.

Step-by-step results and failed assertions, not just a generated test script.

See setup & requirements

Do you switch tools just because the next endpoint uses a different protocol?

Inspect seven protocols in one place.

Manual control when you need to inspect exactly what happened.

See setup & requirements

Do you copy requests and responses into chat every time you need AI’s help?

Investigate with real request context.

A diagnosis grounded in request results, with changes you can review.

See setup & requirements

Do you maintain a separate hosting setup just to share API docs and MCP?

Publish docs and MCP from one API.

Hosted documentation and an MCP URL, without running your own hosting stack.

See setup & requirements

START ON YOUR MACHINE

Download it. Get your work back.

Sign in with Google or GitHub. Powerduck provides built-in AI models and a shared account allowance.

THE MAIN WORKSPACE

Make this your API workbench.

Sign in with Google or GitHub. Powerduck provides built-in AI models and a shared account allowance.

  1. 1 Sign in with Google or GitHub. Powerduck provides built-in AI models and a shared account allowance.
  2. 2 Open your OpenAPI file or scan an existing codebase.
  3. 3 Connect a coding agent, change the code, and verify the real backend against the contract.
Download desktop

macOS 12+ · Windows 10+ · Linux

JUST LOOKING AROUND?

Take a quick browser tour.

Sign in to use the browser workspace. Use the desktop app for local project scans, test generation and iteration history.

Open web app

Contract verification

A real contract error, then a verified fix

Ordinary API clients send the request and show the response. Powerduck also checks every response against the OpenAPI contract, so drift from the spec is caught the moment it happens.

See a working example
~/commerce-api — response check OpenAPI 3.1
Contract requires
total:
  type: number
Backend returns a string
{
  "total": "49.00"
}
/total must be number — response fails the contract
Return a number
{
  "total": 49
}
Response matches the contract

OpenAPI spec editor

OpenAPI Spec Editor

The outline follows the specification's real structure, not a guess based on indentation. Navigate paths and components as a tree, and fix errors where they live.

  • Schema-aware validation. Validate against the 3.0, 3.1 or 3.2 dialect your file actually declares.
  • Resolved $ref navigation. Jump to definitions, inspect usages, and get suggestions for misspelled references.
  • Edits in place. Your repository remains the source of truth.
  • Problems with rule names. CI failures and editor diagnostics speak the same vocabulary.
openapi.yaml 3 problems
▾ info
▾ paths
 /users
 /users/{id}
 /orders
▾ components
 schemas
 responses
142 /users/{id}:
143 get:
144 operationId: getUser
145 responses:
156 contents:
160 $ref: Erorr
Problems · 2 errors · 1 warning
156:9 contents is not a valid Response Object key
160:24 Unresolved $ref. Closest match: Error
API Debug contract checks on
▾ Users
 GET listUsers
 GET getUser
▾ Orders
 POST createOrder
GET {{baseUrl}}/users/{{userId}} Send
Params Auth Body Headers
{
  "id": "usr_8Kd2Xa",
  "email": "ada@example.com",
  "scope": "users:read"
}
Contract mismatch — "scope" is not declared on User.

API debugging

API Debugging Against Your Spec

A request builder shaped like the tools developers already use, plus one thing those tools cannot do by default: verify responses against the contract.

  • Collections generated from paths and tags. No import step and nothing to manually re-sync.
  • Contract checks on every response. Detect undeclared properties, missing fields and type drift inline.
  • Environments and variables. Reuse existing development and staging configurations.
  • Security from securitySchemes. Bearer, API key and OAuth configuration starts from the specification.

MCP server generator

Generate an MCP Server from OpenAPI

Your specification is already a tool manifest. Powerduck compiles it into a runnable MCP server and shows exactly which OpenAPI fields produced each tool.

  • Visible provenance. Every tool traces back to its operation, operationId and schema.
  • Degraded and skipped states. Missing metadata is visible instead of silently producing weak tools.
  • Regenerates on save. Change the specification and tools update without a build step.
  • Local transports. Run through stdio or HTTP for local agents and workflows.
mcp://localhost:7433 running
Generated from openapi.yaml 6 tools 7 resources
GET /users/{id} → operationId
getUser
id: string
POST /orders → operationId
createOrder
items: array
POST /auth/login
loginUser
email, password
DELETE /users/{id}
skipped
missing operationId
14:02 build 6 tools, 7 resources
14:02 serve listening on :7433
14:03 call getUser → 200
API Reference static export
Users
Overview
Retrieve a user
List users
Update user

Retrieve a user

GET /v1/users/{id}
Returns the user object for a valid identifier.
Path parameters
id · string · required
Returns
User · object
curl /users/{id}

{
  "id": "usr_...",
  "email": "ada@..."
}

API documentation generator

API Documentation from the Same Contract

Reference documentation generated directly from your OpenAPI model, exported as static files and hosted wherever you want.

  • Parameter tables from schemas. Required flags, enums and descriptions stay synchronized.
  • Multi-language samples. Generate cURL, Node, Python and Go examples from operations.
  • Responses from the real contract. Success and error responses come from the same objects your debugger validates.
  • Static export. No runtime dependency and no documentation platform lock-in.

One source of truth

One local OpenAPI file.
Every capability, AI-driven.

Open your OpenAPI files locally and work with your API contract, code quality findings, tests and iteration changes in one AI workspace. Built-in models provide evidence-backed review, and repair prompts connect the results to your coding agent.

OPEN LOCALLY
{ }
openapi.yaml
or openapi.json

The file stays in your repository.

01 Spec Editor

Edit, navigate and validate the real contract.

02 API Debugger

Send requests generated from the same operations.

03 MCP Server

Compile operations into agent-ready tools.

04 API Docs

Publish documentation from the same source.

Powerduck

Not another API client.
Not another spec viewer.
An AI-native way to build APIs.

It is the local-native, AI-driven workspace built around the OpenAPI file itself.

NO CLOUD REQUIREDYour spec never needs to leave your machine.
NO MANUAL SYNCThere is nothing else to keep aligned with the contract.
NO EXTRA COPYYour existing YAML or JSON is the workspace.

Local work, remote services and your choices

Your project remains local. AI requests send selected source context to Powerduck’s managed model providers. Publishing documentation is a separate action you choose.

Privacy Policy

Sign in with Google or GitHub. Free includes 300,000 credits daily. Pro is $39/month with 18 million credits every 7 days; Max is $99/month with 60 million. Built-in AI powers Chat, code review and test planning.

Choose your next step.

Compare products and pricing →

FAQ

Questions developers ask first

The practical details around local files, OpenAPI versions, MCP generation and licensing.

Does Powerduck upload my OpenAPI specification anywhere?

Your project remains local. AI requests send selected source context to Powerduck’s managed model providers. Publishing documentation is a separate action you choose.

Which OpenAPI versions are supported?

OpenAPI 3.0, 3.1 and 3.2. Powerduck detects the declared version and validates against the appropriate dialect instead of using a lowest common denominator.

How does the MCP server get generated?

Operations with an operationId become MCP tools. Arguments are derived from parameters and requestBody schemas. Component schemas can be exposed as resources. The generated server updates whenever the specification changes.

How do subscriptions and credit resets work?

Powerduck uses monthly subscriptions. Free credits reset daily; paid credits reset every seven days.

Can I keep using Postman collections?

Yes. Existing collections and environments can continue to be used. Powerduck treats the OpenAPI specification as the authoritative contract and helps identify where requests drift from it.

Does it work in CI?

Yes. The same validation and generation engine is exposed through @powerduck/openapi-cli, a CI-ready command-line tool that runs during pull requests and automated pipelines. It supports batch testing across 6 protocols (HTTP, SSE, WebSocket, gRPC, MCP, GraphQL), configurable concurrency, and JUnit-compatible reports for CI integration.

Explore openapi-cli →