Agentify

io.github.sani-savaliyaPublished by GitHub account sani-savaliyav0.1.1Updated Oct 25, 2026

Turn any OpenAPI/Swagger spec into an MCP server - every API operation becomes an agent tool.

VerifiedSTDIODesktop onlyDeveloper ToolsAI & ML

Overview

AI-generated overview

Agentify turns any OpenAPI or Swagger spec into a local MCP server, exposing each API operation as a tool an assistant can call.

What you can do
Load an OpenAPI 3.x or Swagger 2.0 spec from a URL or local file and list the discovered operations as tools, one per API operation, without writing code or hosting anything. Call those tools to build and send live HTTP requests with path, query, header and JSON body parameters, returning the response status and body. Filter the exposed tools by tag, HTTP method, name glob or a hard tool cap, and restrict to read-only methods. Supply upstream credentials through environment variables for bearer, basic or API-key auth, or inject raw headers from the command line.
When to use it
Use it when an API you want an assistant to work with already publishes an OpenAPI or Swagger document and you want its operations callable without hand-writing an integration. It suits large specs where you filter down to a few relevant endpoints, and read-only exploration of an API.
Requirements
Runs locally over stdio via npx from the npm package agentify-openapi, so Node.js is needed. A spec URL or file path is required. Network access to the target API. Optional credentials via AGENTIFY_BEARER_TOKEN, AGENTIFY_BASIC_USER and AGENTIFY_BASIC_PASS, or AGENTIFY_API_KEY with AGENTIFY_API_KEY_HEADER or AGENTIFY_API_KEY_QUERY.
Before you install
Tools send real HTTP requests to the upstream API, so non-read-only operations can create, change or delete data; use the read-only option to limit exposure. Credentials are passed through environment variables such as AGENTIFY_BEARER_TOKEN, AGENTIFY_BASIC_PASS and AGENTIFY_API_KEY, and raw headers can be injected, so keep them out of shared configs. Cookie parameters and OAuth2 flows are not handled, and multipart or form bodies are only best-effort.

Installation

In SourceWeft

  1. Open Agentify in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

agentify

Turn any OpenAPI / Swagger spec into an agent-ready MCP server.

[npm] Listed on the official MCP Registry (io.github.sani-savaliya/agentify) and Smithery.

Point it at a spec — a URL, a file, OpenAPI 3.x or Swagger 2.0 — and every operation becomes a tool an AI agent can call. No code generation, no per-API boilerplate, no hosting. One command.

bash
npx agentify-openapi https://petstore3.swagger.io/api/v3/openapi.json --list
Swagger Petstore - OpenAPI 3.0 v1.0.27Base URL: https://petstore3.swagger.io/api/v3Tools: 19
  getPetById    Find pet by ID.  findPetsByStatus    Finds Pets by status.  ...

Why

"Today, agents have to operate software designed for humans. The interfaces of the future will be built for agents — APIs, MCPs, CLIs — with agents as first-class citizens." — YC RFS: Software for Agents

There are tens of thousands of APIs that already describe themselves with an OpenAPI document. agentify makes every one of them agent-native, instantly, without anyone hand-writing an integration.

Use it with Claude, Cursor, Windsurf — any MCP client

Add it to your client's MCP config. The same command/args shape works in Claude Desktop, Claude Code (claude mcp add), Cursor (.cursor/mcp.json), Windsurf, Cline, and anything else that speaks MCP:

json
{  "mcpServers": {    "petstore": {      "command": "npx",      "args": ["-y", "agentify-openapi", "https://petstore3.swagger.io/api/v3/openapi.json"]    }  }}

The agent now has one tool per API operation. Calling a tool builds the HTTP request (path params, query string, headers, JSON body) and returns the live response.

Big API? Pick just the tools you need

Pointing at GitHub (1000+ operations) or Stripe (400+) would flood your agent with hundreds of tools and wreck its tool-selection accuracy. Filter down to what matters — by tag, HTTP method, or name glob — and cap the total:

bash
# GitHub, read-only, just the repo endpointsnpx agentify-openapi https://api.github.com/openapi.json --tag repos --read-only
# Stripe customer endpoints only, hard cap at 25 toolsnpx agentify-openapi ./stripe.json --include "*Customer*" --max-tools 25
json
{  "mcpServers": {    "github-repos": {      "command": "npx",      "args": ["-y", "agentify-openapi", "https://api.github.com/openapi.json",               "--tag", "repos", "--read-only", "--max-tools", "30"],      "env": { "AGENTIFY_BEARER_TOKEN": "ghp_your_token" }    }  }}

--read-only (GET/HEAD/OPTIONS) is also a simple safety rail — expose a giant API to an agent without exposing anything that can mutate state.

Auth

Provide credentials via environment variables — agentify reads the spec's declared security scheme to find the right header name when it can:

VariableEffect
AGENTIFY_BEARER_TOKENAuthorization: Bearer <token>
AGENTIFY_BASIC_USER / AGENTIFY_BASIC_PASSHTTP basic auth
AGENTIFY_API_KEYAPI key (sent as a header by default)
AGENTIFY_API_KEY_HEADEROverride the api-key header name
AGENTIFY_API_KEY_QUERYSend the api key as a query param instead

You can also inject raw headers from the CLI: --header "X-Org-Id: 42" (repeatable).

CLI

agentify <spec-url-or-file> [options]
  --base-url <url>     Override the API base URL from the spec  --header "K: V"      Add a raw header to every request (repeatable)  --name <name>        Override the MCP server name  --list               Print the discovered tools and exit (no server)  -h, --help           Show help
  Tool selection (keep big APIs from flooding the agent's context):  --tag <tag>          Keep only operations with this tag (repeatable)  --exclude-tag <tag>  Drop operations with this tag (repeatable)  --method <verb>      Keep only this HTTP method, e.g. GET (repeatable)  --read-only          Shorthand: keep only GET/HEAD/OPTIONS operations  --include <glob>     Keep only tools matching this glob (repeatable)  --exclude <glob>     Drop tools matching this glob (repeatable)  --max-tools <n>      Hard cap on tool count (warns when it truncates)

How it works

A small, pure pipeline — each stage is independently unit-tested:

spec ──▶ operations ──▶ tool defs ──▶ http request ──▶ response │           │              │              │              │load &    one tool       JSON Schema   path/query/    fetch + surfacederef     per op         for inputs    header/body    status & body$refs                                  + auth

Only the HTTP execution and MCP transport touch the outside world; everything else is deterministic and tested.

Programmatic use

ts
import { loadSpec, extractOperations, resolveBaseUrl, createServer } from "agentify-openapi";
const spec = await loadSpec("./openapi.yaml");const tools = extractOperations(spec);const baseUrl = resolveBaseUrl(spec);// ...build your own MCP server, or just inspect the generated tool defs

Limitations

  • JSON request/response bodies are first-class; multipart/form bodies are passed through best-effort.
  • cookie parameters and OAuth2 flows are not yet handled (use --header for now).
  • One server per spec. Multi-spec aggregation is on the roadmap.

Development

bash
npm installnpm test          # vitest, 80%+ coverage enforcednpm run build     # tsc -> dist/node scripts/smoke.mjs   # end-to-end MCP client smoke test (network)

License

MIT

Source: README.md at commit 2adbbdf

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.