agentforge
# AgentForge
**One API key. 300+ AI agents. Zero configuration.**
AgentForge is a unified API gateway and marketplace for AI agents. Use a single API key to access hundreds of AI agents — no need to manage individual API keys, authentication, or billing for each one.
[Live Demo](https://patreon.zeabur.app) | [API Docs](https://patreon.zeabur.app/#/docs) | [Browse Agents](https://patreon.zeabur.app/#/agents)
## Why AgentForge?
Most AI agent platforms make you manage separate API keys, auth flows, and billing for every agent you use. AgentForge gives you **one key to rule them all**.
- **Unified API** — Call any agent through a single REST endpoint
- - **300+ agents** — Pre-loaded with trending agents from GitHub and HuggingFace
- - **Creator economy** — Publish your own agents and earn revenue (90% creator share)
- - **Built for developers** — RESTful API, streaming support, API key auth, rate limiting
- - **MCP support** — Use AgentForge as a Model Context Protocol server to access all agents from Claude, Cursor, and other MCP clients
- ## Quick Start
- ### Use the API (no install needed)
- ```bash
# 1. Get your API key at https://patreon.zeabur.app/#/settings/api-keys
# 2. Call any agent:
curl -X POST https://patreon.zeabur.app/api/agents/AGENT_ID/invoke \
-H "Authorization: Bearer af_k_your_key_here" \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "Hello!"}]}'
```
### Python
```python
import requests
response = requests.post(
"https://patreon.zeabur.app/api/agents/AGENT_ID/invoke",
headers={"Authorization": "Bearer af_k_your_key_here"},
json={"messages": [{"role": "user", "content": "Hello!"}]}
)
print(response.json())
```
### JavaScript
```javascript
const response = await fetch(
"https://patreon.zeabur.app/api/agents/AGENT_ID/invoke",
{
method: "POST",
headers: {
"Authorization": "Bearer af_k_your_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
messages: [{ role: "user", content: "Hello!" }],
}),
}
);
const data = await response.json();
```
## MCP Server (Model Context Protocol)
AgentForge ships a built-in **MCP server** (`mcp/server.ts`) that exposes all 300+ agents as MCP tools. This lets any MCP-compatible client — Claude Desktop, Cursor, Continue, etc. — discover and invoke agents with zero extra configuration.
### MCP Tools exposed
| Tool | Description |
|------|-------------|
| `list_agents` | List all agents on the marketplace (optional category/limit filter) |
| `get_agent` | Get full details for a specific agent by ID |
| `invoke_agent` | Invoke any agent with a chat-completion style messages array |
| `check_agent_health` | Check the health/availability of a specific agent |
| `get_platform_stats` | Retrieve aggregate platform statistics |
### Running the MCP server locally
```bash
git clone https://github.com/doggychip/agentforge.git
cd agentforge
npm install
# Set your AgentForge API key (get one at https://patreon.zeabur.app/#/settings/api-keys)
export AGENTFORGE_API_KEY=af_k_your_key_here
# Start the MCP server (communicates over stdio)
npm run mcp:start
```
### Connecting to Claude Desktop
Add the following to your `claude_desktop_config.json`
(`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
```json
{
"mcpServers": {
"agentforge": {
"command": "npx",
"args": ["tsx", "/path/to/agentforge/mcp/server.ts"],
"env": {
"AGENTFORGE_API_KEY": "af_k_your_key_here"
}
}
}
}
```
Restart Claude Desktop. You will now see AgentForge tools available in the MCP connector panel.
### Connecting to other MCP clients
Any MCP client that supports stdio transport can connect to AgentForge:
```bash
# Generic stdio invocation
AGENTFORGE_API_KEY=af_k_your_key_here npx tsx /path/to/agentforge/mcp/server.ts
```
### Environment variables for the MCP server
| Variable | Required | Description |
|----------|----------|-------------|
| `AGENTFORGE_API_KEY` | Yes (for invoke_agent) | Your AgentForge API key |
| `AGENTFORGE_BASE_URL` | No | Override base URL (default: `https://patreon.zeabur.app`) |
## Features
### For Users
- Browse and discover 300+ AI agents, tools, and APIs
- - One API key to access all agents
- - Free and paid agents with transparent pricing
- - Streaming support for real-time responses
- - Usage tracking and billing history
- ### For Creators
- - Publish unlimited agents with your own pricing
- - 90% revenue share (10% platform fee)
- - Stripe Connect payouts to your bank account
- - Analytics dashboard with subscriber metrics
- - API proxy — we handle auth, rate limiting, and billing
- ### Platform
- - Google OAuth + email/password authentication
- - Two-factor authentication (TOTP)
- - Rate limiting (1000 req/hour, 10000 req/day per key)
- - Agent health monitoring
- - Auto-import from GitHub trending and HuggingFace
- ## API Endpoints
- | Method | Endpoint | Description |
- |--------|----------|-------------|
- | `POST` | `/api/agents/:id/invoke` | Invoke an agent |
- | `GET` | `/api/agents` | List all agents |
- | `GET` | `/api/agents/:id` | Get agent details |
- | `GET` | `/api/agents/:id/health` | Check agent health |
- | `GET` | `/api/stats` | Platform statistics |
- Full API documentation: [patreon.zeabur.app/#/docs](https://patreon.zeabur.app/#/docs)
- ## Self-Hosting
- ### Prerequisites
- - Node.js 20+
- - PostgreSQL
- ### Setup
- ```bash
git clone https://github.com/doggychip/agentforge.git
cd agentforge
npm install
# Set environment variables
export DATABASE_URL=postgresql://user:password@host:5432/agentforge
# Start development server (auto-migrates and seeds)
npm run dev
```
### Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `DATABASE_URL` | Yes | PostgreSQL connection string |
| `STRIPE_SECRET_KEY` | No | Stripe API key for payments |
| `STRIPE_WEBHOOK_SECRET` | No | Stripe webhook signing secret |
| `GOOGLE_CLIENT_ID` | No | Google OAuth client ID |
| `GOOGLE_CLIENT_SECRET` | No | Google OAuth client secret |
| `SMTP_HOST` | No | SMTP server for emails |
| `SMTP_USER` | No | SMTP username |
| `SMTP_PASS` | No | SMTP password |
### Deploy to Zeabur
1. Push to GitHub
2. 2. Create project in [Zeabur](https://zeabur.com)
3. 3. Import the repo + add PostgreSQL service
4. 4. Zeabur auto-injects `DATABASE_URL`
5. ## Tech Stack
6. - **Frontend**: React 18, Tailwind CSS, shadcn/ui, TanStack Query, wouter
- - **Backend**: Express 5, Drizzle ORM, Passport
- - **Database**: PostgreSQL
- - **Payments**: Stripe Connect
- - **Auth**: bcrypt, Google OAuth, TOTP 2FA
- - **Deploy**: Docker / Zeabur
- - **MCP**: @modelcontextprotocol/sdk (TypeScript)
- ## Project Structure
- ```
agentforge/
├── client/src/ # React frontend
│ ├── pages/ # Route pages
│ ├── components/ # Shared components
│ └── hooks/ # Auth, query hooks
├── mcp/
│ └── server.ts # MCP server (5 tools over stdio)
├── server/
│ ├── routes.ts # API endpoints
│ ├── storage.ts # Database layer
│ └── db.ts # Connection + migrations
├── shared/
│ └── schema.ts # Drizzle schema + types
└── Dockerfile
```
## Contributing
Pull requests welcome. For major changes, open an issue first.
## License
MIT
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose with no overlap. check_agent_health focuses on availability, get_agent provides detailed metadata, get_platform_stats offers aggregate platform data, invoke_agent executes agent calls, and list_agents shows the marketplace catalog. An agent can easily distinguish between these operations.
All tools follow a consistent verb_noun pattern with snake_case. The verbs (check, get, get, invoke, list) are appropriate and predictable, making the set easy to navigate and understand at a glance.
Five tools is well-scoped for managing an AI agent platform. It covers essential operations like listing, retrieving details, invoking agents, checking health, and viewing platform stats without being overwhelming or insufficient for the domain.
The toolset covers core workflows: discovery (list_agents, get_agent), execution (invoke_agent), monitoring (check_agent_health, get_platform_stats). A minor gap is the lack of update/delete tools for managing agents, but this might be intentional if the platform is read-only for users.