Skip to content

Commit 2c404af

Browse files
committed
docs: rewrite README — honest voice, real API validation
Replace pitch-deck style README with developer-friendly copy: - Lead with the problem, not features - Show the command in the first 10 lines - Remove self-comparison table (credibility risk at 0 stars) - Add "Tested on Real APIs" section with GitHub REST API (1,093 endpoints, 43 domains, tsc PASS, server starts) - Honest "Status" section: "This is early" - 62 insertions, 149 deletions — less is more
1 parent 8e0e4e1 commit 2c404af

1 file changed

Lines changed: 70 additions & 145 deletions

File tree

README.md

Lines changed: 70 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<div align="center">
22

33
<h1>Agentify</h1>
4-
<p><strong>Agent Interface Compiler</strong> — One command. Every agent speaks your product.</p>
4+
<p>OpenAPI in. Agent interfaces out.</p>
55

66
<img src="assets/banner.svg" alt="Agentify — OpenAPI to 9 agent interface formats" width="800">
77

@@ -16,84 +16,56 @@
1616

1717
---
1818

19-
Agentify compiles any OpenAPI specification into **9 agent interface formats** — MCP Server, CLAUDE.md, AGENTS.md, .cursorrules, Skills, llms.txt, GEMINI.md, A2A Card, and CLI. Instead of hand-building each format separately, generate them all from a single source of truth.
19+
Your API has new users it doesn't know about yet — AI agents.
20+
21+
Claude Code reads `CLAUDE.md`. Cursor reads `.cursorrules`. Codex and Copilot read `AGENTS.md`. And if you want your API callable as a tool, you need an MCP server. That's a lot of files to write and keep in sync with your API spec.
22+
23+
Agentify reads your OpenAPI spec and writes them all.
2024

2125
```bash
2226
npx agentify-cli transform https://petstore.swagger.io/v2/swagger.json
2327
```
2428

2529
<p align="center">
26-
<img src="docs/demo.gif" alt="Agentify demo — transform OpenAPI to MCP Server in 30 seconds" width="700">
30+
<img src="docs/demo.gif" alt="Agentify demo" width="700">
2731
</p>
2832

29-
## The Problem
30-
31-
AI agents are the new users of your API. But making your product agent-accessible requires building and maintaining multiple interface formats:
32-
33-
| Format | Who consumes it | Manual effort |
34-
|--------|----------------|---------------|
35-
| MCP Server | Claude, ChatGPT, Copilot | Days of coding |
36-
| CLAUDE.md | Claude Code | Write from scratch |
37-
| AGENTS.md | Codex, Copilot, Cursor, Gemini CLI | Write from scratch |
38-
| .cursorrules | Cursor IDE | Write from scratch |
39-
| Skills | 30+ agent platforms | Per-platform work |
40-
| llms.txt | LLM search engines | Manual authoring |
41-
| GEMINI.md | Gemini CLI | Write from scratch |
42-
| A2A Card | Google Agent-to-Agent protocol | JSON schema work |
43-
| CLI | Developers, scripts, CI/CD | Build from scratch |
33+
## What You Get
4434

45-
**That's 9+ formats to build, test, and keep in sync.** Every API change means updating all of them.
35+
One command generates up to **9 formats** from a single OpenAPI spec:
4636

47-
## The Solution
48-
49-
Agentify is a compiler. OpenAPI in, every agent format out.
50-
51-
```
52-
+---> MCP Server (with Dockerfile)
53-
|
54-
+---> CLAUDE.md
55-
|
56-
+---> AGENTS.md
57-
|
58-
OpenAPI Spec -----> +---> .cursorrules
59-
|
60-
+---> Skills
61-
|
62-
+---> llms.txt
63-
|
64-
+---> GEMINI.md
65-
|
66-
+---> A2A Card
67-
|
68-
+---> CLI (standalone command-line tool)
69-
```
37+
| Format | Used by |
38+
|--------|---------|
39+
| **MCP Server** | Claude, ChatGPT, Copilot (with Dockerfile) |
40+
| **CLAUDE.md** | Claude Code |
41+
| **AGENTS.md** | Codex, Copilot, Cursor, Gemini CLI |
42+
| **.cursorrules** | Cursor IDE |
43+
| **Skills** | Agent platforms |
44+
| **llms.txt** | LLM search engines |
45+
| **GEMINI.md** | Gemini CLI |
46+
| **A2A Card** | Google Agent-to-Agent protocol |
47+
| **CLI** | A standalone command-line tool that makes real API calls |
7048

7149
## Quick Start
7250

7351
```bash
74-
# Transform any OpenAPI spec
52+
# Transform any OpenAPI spec (Swagger 2.0 or OpenAPI 3.x)
7553
npx agentify-cli transform https://petstore.swagger.io/v2/swagger.json
7654

77-
# Specify output directory
78-
npx agentify-cli transform ./my-api.yaml -o ./output
55+
# Pick specific formats
56+
npx agentify-cli transform ./my-api.yaml -f mcp claude.md agents.md
7957

80-
# Override project name
81-
npx agentify-cli transform https://api.example.com/openapi.json -n my-project
82-
83-
# Generate only specific formats
84-
npx agentify-cli transform ./my-api.yaml -f mcp claude.md
85-
86-
# Generate a standalone CLI tool from your API
58+
# Generate a standalone CLI tool
8759
npx agentify-cli transform ./my-api.yaml -f cli -o my-api-cli
8860

89-
# Get Agentify's own agent interface files (self-describe)
90-
npx agentify-cli self-describe -o .
61+
# Custom output directory and project name
62+
npx agentify-cli transform https://api.example.com/openapi.json -o ./output -n my-project
9163
```
9264

93-
**Output:**
65+
Example output:
9466

9567
```
96-
Agentify v0.4.0
68+
Agentify v0.4.1
9769
Agent Interface Compiler
9870
9971
+-- 20 endpoints detected -> SMALL API strategy
@@ -106,80 +78,42 @@ npx agentify-cli self-describe -o .
10678
> Security scan: PASSED
10779
```
10880

109-
## Features
81+
## Tested on Real APIs
11082

111-
**Smart Strategy Selection** — Automatically chooses the right generation strategy based on API size:
83+
Agentify handles APIs of any size — from 20-endpoint demos to 1000+ endpoint production APIs.
11284

113-
| API Size | Endpoints | Strategy | Why |
114-
|----------|-----------|----------|-----|
115-
| Small | < 30 | Direct mapping | One tool per endpoint, simple and complete |
116-
| Medium | 30-100 | Direct mapping (Tool Search planned) | Detects scale; optimized generation coming soon |
117-
| Large | 100+ | Direct mapping (Code Exec planned) | Detects scale; context-optimized generation coming soon |
85+
| API | Endpoints | Domains | tsc | Server starts |
86+
|-----|-----------|---------|-----|---------------|
87+
| **Petstore** (Swagger 2.0) | 20 | 3 | PASS | PASS |
88+
| **Petstore** (OpenAPI 3.0) | 19 | 3 | PASS | PASS |
89+
| **GitHub REST API** | 1,093 | 43 | PASS | PASS |
11890

119-
**Security First** — Every generated artifact passes through:
120-
- Input sanitization (blocks eval, exec, Function constructor, require/import injection)
121-
- Handlebars template injection prevention
122-
- Prompt injection pattern detection
123-
- Generated code security scanning
124-
125-
**Production Ready** — Generated MCP servers include:
126-
- TypeScript source with full type safety
127-
- Dockerfile for containerized deployment
128-
- Environment variable configuration (.env.example)
129-
- Stdio transport (standard MCP protocol)
130-
131-
## Output Format Status
132-
133-
| Format | Status | Description |
134-
|--------|--------|-------------|
135-
| MCP Server | Available | Full server with tools, handlers, Dockerfile |
136-
| CLAUDE.md | Available | Project context for Claude Code |
137-
| AGENTS.md | Available | Universal agent instructions (Linux Foundation standard) |
138-
| .cursorrules | Available | Cursor IDE agent rules |
139-
| Skills | Available | Structured capability file for agent platforms |
140-
| llms.txt | Available | LLM-readable condensed documentation |
141-
| GEMINI.md | Available | Gemini CLI project context |
142-
| A2A Card | Available | Google Agent-to-Agent discovery card |
143-
| CLI | Available | Standalone command-line tool (opt-in: `-f cli`) |
91+
The GitHub REST API is one of the largest OpenAPI specs in the wild — 1,093 endpoints across 43 domains (actions, repos, pulls, issues, git, users, orgs, and more). Agentify generates a working MCP server with 1,093 tools, and it compiles and starts without errors.
14492

14593
## How It Works
14694

14795
```
148-
1. PARSE OpenAPI 3.x / Swagger 2.0 spec (URL or file)
149-
|
150-
2. SANITIZE Strip dangerous patterns from all spec fields
151-
|
152-
3. ANALYZE Detect domains, auth, scale -> pick strategy
153-
|
154-
4. COMPILE Generate AgentifyIR (intermediate representation)
155-
|
156-
5. EMIT Run selected emitters (MCP, Skills, Docs, etc.)
157-
|
158-
6. SCAN Security scan all generated code
159-
|
160-
7. OUTPUT Write files to disk
96+
OpenAPI Spec (URL or file)
97+
|
98+
v
99+
PARSE ──> SANITIZE ──> ANALYZE ──> COMPILE ──> EMIT ──> SCAN ──> OUTPUT
100+
| | | | |
101+
Strip unsafe Detect Build IR Run Security
102+
patterns domains, (typed) emitters scan all
103+
auth, generated
104+
API scale code
161105
```
162106

163-
**AgentifyIR** is the canonical intermediate representation — a flat, typed structure that captures everything an emitter needs: product metadata, capabilities (endpoints), domains, auth config, and generation strategy.
164-
165-
## Architecture
107+
Agentify parses your spec into an intermediate representation (**AgentifyIR**), then runs pluggable emitters to produce each output format. Every generated artifact goes through a security scan before being written to disk.
166108

167-
```
168-
agentify/
169-
+-- src/
170-
| +-- cli.ts # CLI entry point (Commander.js)
171-
| +-- parser/ # OpenAPI parsing + input sanitization
172-
| +-- generator/ # Pluggable emitters for each format
173-
| | +-- templates/ # Handlebars templates
174-
| +-- security/ # Input sanitization + output scanning
175-
| +-- types.ts # AgentifyIR type definitions
176-
+-- templates/ # Generated project templates
177-
+-- test/ # Vitest test suite
178-
```
109+
**Security built in:**
110+
- Input sanitization (blocks `eval`, `exec`, `Function` constructor injection)
111+
- Prompt injection pattern detection
112+
- Generated code scanning
179113

180114
## Contributing
181115

182-
Agentify welcomes contributions, especially **new emitters** (output formats). Each emitter implements a simple interface:
116+
New emitters are welcome. Each one implements a simple interface:
183117

184118
```typescript
185119
import type { Emitter, AgentifyIR, EmitterOptions, EmitterResult } from "../types";
@@ -190,41 +124,32 @@ export class MyFormatEmitter implements Emitter {
190124

191125
async emit(ir: AgentifyIR, options: EmitterOptions): Promise<EmitterResult> {
192126
// Generate output files from the IR
193-
return { filesWritten: [...], warnings: [] };
127+
return { format: this.format, filesWritten: [...], warnings: [] };
194128
}
195129
}
196130
```
197131

198-
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide.
199-
200-
## Roadmap
201-
202-
- [x] **M0: Foundation** — OpenAPI parser, MCP emitter, security scanner, CLI
203-
- [x] **M1: Multi-Format**~~CLAUDE.md~~, ~~AGENTS.md~~, ~~Skills~~, ~~.cursorrules~~, ~~llms.txt~~, ~~GEMINI.md~~, ~~A2A Card~~
204-
- [ ] **M2: Intelligence** — Capability graph, semantic grouping, context optimization
205-
- [ ] **M3: Self-Serve** — Web UI, one-click deploy, registry integrations
206-
- [ ] **M4: Scale** — Enterprise features, custom emitters, CI/CD integration
132+
```
133+
agentify/
134+
+-- src/
135+
| +-- cli.ts # CLI entry point
136+
| +-- parser/ # OpenAPI parsing + sanitization
137+
| +-- generator/ # Pluggable emitters for each format
138+
| +-- security/ # Input sanitization + output scanning
139+
| +-- types.ts # AgentifyIR type definitions
140+
+-- test/ # Vitest test suite (136 tests)
141+
```
207142

208-
## Compared to Alternatives
143+
## Status
209144

210-
| Feature | Agentify | Speakeasy | Stainless | openapi-to-skills |
211-
|---------|----------|-----------|-----------|-------------------|
212-
| MCP Server | Yes | Yes | No | No |
213-
| Skills | Yes | CLI only | No | Yes |
214-
| CLAUDE.md | Yes | No | No | No |
215-
| AGENTS.md | Yes | No | No | No |
216-
| .cursorrules | Yes | No | No | No |
217-
| llms.txt | Yes | Yes | No | No |
218-
| GEMINI.md | Yes | No | No | No |
219-
| A2A Card | Yes | No | No | No |
220-
| CLI generation | Yes | No | No | No |
221-
| Self-as-Skills | Yes | No | No | No |
222-
| Context-aware strategy | Yes | No | Yes | No |
223-
| Security scanning | Yes | Unknown | Unknown | No |
224-
| Open source | MIT | No | No | MIT |
145+
This is early. It works on Swagger 2.0 and OpenAPI 3.x specs, handles auth detection, domain grouping, and API scale analysis. If you try it and something breaks, [open an issue](https://github.com/koriyoshi2041/agentify/issues) — that helps a lot.
225146

226-
**No existing tool compiles one OpenAPI spec into all agent interface formats.**
147+
- [x] OpenAPI parser, MCP emitter, security scanner, CLI
148+
- [x] 9 output formats: MCP, CLAUDE.md, AGENTS.md, .cursorrules, Skills, llms.txt, GEMINI.md, A2A, CLI
149+
- [ ] Capability graph and semantic grouping
150+
- [ ] Web UI and one-click deploy
151+
- [ ] Custom emitter plugins
227152

228153
## License
229154

230-
[MIT](LICENSE) -- Agentify Contributors
155+
[MIT](LICENSE)

0 commit comments

Comments
 (0)