{
"properties": {
"status": {
"default": "available",
"enum": ["available", "pending", "sold"],
"type": "string"
}
},
"required": ["status"]
}Plug any APIinto your AI
PlugIt turns an OpenAPI, Swagger or Postman spec into tools for Claude, Codex, Cursor and VS Code. You pick the tools; it keeps your keys and your API safe.
Every screen, in your terminal
[
{ "id": 1, "name": "Rex", "status": "available" },
{ "id": 2, "name": "Mittens", "status": "available" }
]Tool detail
Parameters with their locations, the token cost, lint findings and the exact input schema, before anything reaches a model.
Screen 1 of 7. Drag the row, or use the arrows.
Twenty seconds, start to finish
Adding the Petstore API, inspecting a tool, keeping three response fields, linting, one real call, then installing into Claude Desktop. Recorded in a terminal, not mocked up.
Safe by default
Change any setting and the panel shows what the model would get.
Read-only until you say so
GET, HEAD and OPTIONS are offered. Writes need confirm-writes or full, and confirm-writes asks you in the client before each call.
Your key never reaches the model
Secrets live in the OS keyring or an environment variable. Every result is redacted, in raw, percent-encoded and base64 form, even when the API echoes the key back.
Only the fields you need
List a tool's response fields and everything else stays out of the model's context. Here, each pet loses its photos, tags and category.
[
{
"id": 1,
"name": "Rex",
"status": "available"
},
{
"id": 2,
"name": "Mittens",
"status": "available"
}
]The host is pinned
You confirm the base URL once. A spec, a redirect or the model itself can't send your key anywhere else, and private addresses are blocked unless you allow them.
Poisoned text gets caught
Lint reads every description the model would read and flags instructions aimed at it before you serve them. Edit this one.
[
{
"id": 1,
"name": "Rex",
"status": "available"
},
{
"id": 2,
"name": "Mittens",
"status": "available"
}
]From spec to tool
First, point it at a spec.
Then choose what the model gets.
Then plug it into your client.
Then see every call it makes.
Works where you work
Clients
- Claude Desktopits config file
- Claude Codeclaude mcp add
- OpenAI Codexcodex mcp add
- Cursor~/.cursor/mcp.json
- VS Code with GitHub Copilotuser mcp.json
- Windsurfmcp_config.json
- Gemini CLI~/.gemini/settings.json
- LM Studio~/.lmstudio/mcp.json
- Any other MCP clientstdio or HTTP
Specs
- OpenAPI 3.0 and 3.1JSON or YAML
- Swagger 2.0JSON or YAML
- Postman collectionsv2.0, v2.1
- Form and multipart bodies611 of 612 Stripe ops
Credentials
- Bearer, header or query keyskeyring or env
- Basic authuser:password
- OAuth2 client credentialsyour token_url
- OAuth2 device sign-inrefresh in keyring
71%fewer tokens, the same reads
Offer all nineteen Petstore tools and the model reads ≈2,287 tokens of tool list before it starts. In read-only mode it gets the eight read tools, ≈656, and the writes never reach it. Each bar is PlugIt's own estimate for one tool.
- findPetsByStatus≈103
- loginUser≈95
- getOrderById≈92
- getUserByName≈89
- getPetById≈87
- findPetsByTags≈86
- getInventory≈52
- logoutUser≈52
- addPet≈228
- updatePet≈226
- updateUser≈180
- createUsersWithListInput≈178
- placeOrder≈160
- createUser≈146
- updatePetWithForm≈141
- uploadFile≈106
- deletePet≈94
- deleteOrder≈92
- deleteUser≈80
Install PlugIt
go install github.com/swayam5342/plugit/cmd/plugit@latest
plugit add my-api https://petstore3.swagger.io/api/v3/openapi.json
plugit install my-apiGo 1.26.7 or newer (older versions fetch it for you). Windows, macOS and Linux; one binary, no CGO.