feat: improve homepage marketing and add integrations section
- Update headline to "THE NPM FOR AI TOOLS" for clearer positioning - Add new integrations section showing Claude, Cursor, Windsurf support - Include config code example for easy onboarding - Fix search placeholder to use real tool names - Improve featured tools display (hide N/A scores, show "New" for 0 downloads) - Update site metadata and structured data with new tagline - Add comprehensive TPMJS features documentation
This commit is contained in:
parent
d64983163c
commit
faf4b622c7
4 changed files with 779 additions and 18 deletions
698
TPMJS_FEATURES.md
Normal file
698
TPMJS_FEATURES.md
Normal file
|
|
@ -0,0 +1,698 @@
|
||||||
|
# TPMJS Platform - Complete Feature Documentation
|
||||||
|
|
||||||
|
A comprehensive overview of all TPMJS functionality for marketing, fundraising, and pet project ideation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
1. [Platform Overview](#platform-overview)
|
||||||
|
2. [Core Architecture](#core-architecture)
|
||||||
|
3. [Tool Registry & Discovery](#tool-registry--discovery)
|
||||||
|
4. [Tool Execution System](#tool-execution-system)
|
||||||
|
5. [MCP (Model Context Protocol) Implementation](#mcp-model-context-protocol-implementation)
|
||||||
|
6. [Collections System](#collections-system)
|
||||||
|
7. [Agent System](#agent-system)
|
||||||
|
8. [API Endpoints](#api-endpoints)
|
||||||
|
9. [SDK & Packages](#sdk--packages)
|
||||||
|
10. [Security & Privacy](#security--privacy)
|
||||||
|
11. [Infrastructure](#infrastructure)
|
||||||
|
12. [Use Cases](#use-cases)
|
||||||
|
13. [Competitive Advantages](#competitive-advantages)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Platform Overview
|
||||||
|
|
||||||
|
**TPMJS (Tool Package Manager for JavaScript)** is an open platform for discovering, sharing, and executing AI tools via the Model Context Protocol (MCP). Think of it as "npm for AI tools" - a registry where developers can publish tools that AI assistants can use.
|
||||||
|
|
||||||
|
### Key Value Propositions
|
||||||
|
|
||||||
|
1. **Unified Tool Registry** - One place to discover and use AI tools
|
||||||
|
2. **Instant MCP Servers** - Any collection becomes an MCP-compatible server
|
||||||
|
3. **Secure Execution** - Sandboxed tool execution with rate limiting
|
||||||
|
4. **AI Agent Infrastructure** - Build multi-turn conversational agents with tool access
|
||||||
|
5. **Developer-Friendly** - Publish tools via npm, use via standard protocols
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Core Architecture
|
||||||
|
|
||||||
|
### Tech Stack
|
||||||
|
|
||||||
|
| Layer | Technology |
|
||||||
|
|-------|------------|
|
||||||
|
| Frontend | Next.js 16 (App Router), React 19, Tailwind CSS |
|
||||||
|
| Backend | Next.js API Routes (Serverless) |
|
||||||
|
| Database | PostgreSQL (Neon) with Prisma ORM |
|
||||||
|
| Auth | NextAuth.js (GitHub OAuth) |
|
||||||
|
| Hosting | Vercel (Edge + Serverless) |
|
||||||
|
| Package Registry | npm (mirrored) |
|
||||||
|
| Build System | Turborepo + pnpm workspaces |
|
||||||
|
|
||||||
|
### Monorepo Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
tpmjs/
|
||||||
|
├── apps/
|
||||||
|
│ ├── web/ # Main Next.js application (tpmjs.com)
|
||||||
|
│ └── playground/ # Interactive tool testing environment
|
||||||
|
├── packages/
|
||||||
|
│ ├── @tpmjs/types # Shared TypeScript types & Zod schemas
|
||||||
|
│ ├── @tpmjs/ui # React component library
|
||||||
|
│ ├── @tpmjs/utils # Utility functions
|
||||||
|
│ ├── @tpmjs/env # Environment variable validation
|
||||||
|
│ ├── @tpmjs/db # Prisma database client
|
||||||
|
│ ├── @tpmjs/mocks # MSW mock server for testing
|
||||||
|
│ └── @tpmjs/config # Shared configs (ESLint, Tailwind, TypeScript)
|
||||||
|
└── templates/
|
||||||
|
└── vercel-executor/ # Template for deploying tool executors
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tool Registry & Discovery
|
||||||
|
|
||||||
|
### What is a TPMJS Tool?
|
||||||
|
|
||||||
|
A TPMJS tool is an npm package with:
|
||||||
|
1. The `tpmjs` keyword in package.json
|
||||||
|
2. A `tpmjs` field defining the tool's MCP schema
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "my-awesome-tool",
|
||||||
|
"keywords": ["tpmjs"],
|
||||||
|
"tpmjs": {
|
||||||
|
"name": "my-tool",
|
||||||
|
"description": "Does awesome things",
|
||||||
|
"inputSchema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"query": { "type": "string" }
|
||||||
|
},
|
||||||
|
"required": ["query"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tool Tiers
|
||||||
|
|
||||||
|
| Tier | Description | Features |
|
||||||
|
|------|-------------|----------|
|
||||||
|
| **Minimal** | Basic tool definition | Name, description, input schema only |
|
||||||
|
| **Rich** | Full-featured tool | Executor URL, examples, categories, tags |
|
||||||
|
|
||||||
|
### Discovery Methods
|
||||||
|
|
||||||
|
1. **npm Changes Feed Sync** (every 2 minutes)
|
||||||
|
- Monitors npm's real-time changes feed
|
||||||
|
- Catches new packages and updates instantly
|
||||||
|
- Processes ~100 changes per run
|
||||||
|
|
||||||
|
2. **Keyword Search Sync** (every 15 minutes)
|
||||||
|
- Actively searches npm for `tpmjs` keyword
|
||||||
|
- Backfills any missed packages
|
||||||
|
- Processes up to 250 packages per run
|
||||||
|
|
||||||
|
3. **Metrics Sync** (hourly)
|
||||||
|
- Updates download statistics
|
||||||
|
- Calculates quality scores
|
||||||
|
- Refreshes ranking data
|
||||||
|
|
||||||
|
### Quality Scoring Algorithm
|
||||||
|
|
||||||
|
```
|
||||||
|
Quality Score = Tier Score + Downloads Score + Stars Score
|
||||||
|
|
||||||
|
Where:
|
||||||
|
- Tier Score: rich = 0.6, minimal = 0.4
|
||||||
|
- Downloads Score: min(0.3, log10(downloads + 1) / 10)
|
||||||
|
- Stars Score: min(0.1, log10(githubStars + 1) / 10)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tool Categories
|
||||||
|
|
||||||
|
- AI/ML
|
||||||
|
- Development Tools
|
||||||
|
- Data Processing
|
||||||
|
- Web Scraping
|
||||||
|
- APIs & Integrations
|
||||||
|
- Utilities
|
||||||
|
- And more...
|
||||||
|
|
||||||
|
### Current Registry Stats
|
||||||
|
|
||||||
|
- **170+ Official Tools** in the ajax-collection
|
||||||
|
- **Growing Community Tools** published by developers
|
||||||
|
- **Real-time Sync** with npm registry
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tool Execution System
|
||||||
|
|
||||||
|
### Execution Flow
|
||||||
|
|
||||||
|
```
|
||||||
|
User Request → TPMJS API → Executor Selection → Sandboxed Execution → Response
|
||||||
|
```
|
||||||
|
|
||||||
|
### Executor Types
|
||||||
|
|
||||||
|
1. **HTTP Executor** - Calls external HTTP endpoints
|
||||||
|
2. **Serverless Executor** - Runs in Vercel Edge/Serverless
|
||||||
|
3. **Code Executor** - Executes arbitrary code in sandbox
|
||||||
|
|
||||||
|
### Sandboxing Features
|
||||||
|
|
||||||
|
- **Network Isolation** - Zero-trust or semi-trusted modes
|
||||||
|
- **Timeout Limits** - Configurable per-tool (1-900 seconds)
|
||||||
|
- **Resource Limits** - Memory and CPU constraints
|
||||||
|
- **Input Validation** - Zod schema validation
|
||||||
|
|
||||||
|
### Executor Template
|
||||||
|
|
||||||
|
The `templates/vercel-executor/` provides a ready-to-deploy executor:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Example executor implementation
|
||||||
|
export async function POST(request: Request) {
|
||||||
|
const { tool, input } = await request.json();
|
||||||
|
|
||||||
|
// Validate input against schema
|
||||||
|
const validated = toolSchema.parse(input);
|
||||||
|
|
||||||
|
// Execute tool logic
|
||||||
|
const result = await executeTool(tool, validated);
|
||||||
|
|
||||||
|
return Response.json(result);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Code Execution (via MCP Tool)
|
||||||
|
|
||||||
|
The platform includes a powerful code execution tool:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// Execute code in 42+ languages
|
||||||
|
{
|
||||||
|
"language": "python",
|
||||||
|
"code": "print('Hello, World!')",
|
||||||
|
"network_mode": "zerotrust", // or "semitrusted"
|
||||||
|
"ttl": 60 // timeout in seconds
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Supported languages include:
|
||||||
|
- Python, JavaScript, TypeScript
|
||||||
|
- Go, Rust, C, C++
|
||||||
|
- Ruby, PHP, Perl
|
||||||
|
- Java, Kotlin, Scala
|
||||||
|
- And 30+ more
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## MCP (Model Context Protocol) Implementation
|
||||||
|
|
||||||
|
### What is MCP?
|
||||||
|
|
||||||
|
MCP is an open protocol for AI assistants to interact with tools. TPMJS provides:
|
||||||
|
- **MCP Server Hosting** - Every collection is an MCP server
|
||||||
|
- **Multiple Transports** - HTTP and SSE support
|
||||||
|
- **Standard Compliance** - Full MCP specification support
|
||||||
|
|
||||||
|
### Transport Options
|
||||||
|
|
||||||
|
#### HTTP Transport
|
||||||
|
```
|
||||||
|
POST /api/mcp/{username}/{collection-slug}/http
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### SSE Transport
|
||||||
|
```
|
||||||
|
POST /api/mcp/{username}/{collection-slug}/sse
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{"jsonrpc": "2.0", "id": 1, "method": "initialize"}
|
||||||
|
```
|
||||||
|
|
||||||
|
### MCP Methods Supported
|
||||||
|
|
||||||
|
| Method | Description |
|
||||||
|
|--------|-------------|
|
||||||
|
| `initialize` | Initialize MCP session |
|
||||||
|
| `tools/list` | List available tools |
|
||||||
|
| `tools/call` | Execute a tool |
|
||||||
|
| `resources/list` | List available resources |
|
||||||
|
| `resources/read` | Read a resource |
|
||||||
|
| `prompts/list` | List available prompts |
|
||||||
|
| `prompts/get` | Get a specific prompt |
|
||||||
|
|
||||||
|
### Authentication
|
||||||
|
|
||||||
|
- **API Key Auth** - Bearer token in Authorization header
|
||||||
|
- **Session Auth** - Cookie-based for web users
|
||||||
|
- **Scopes** - Granular permission control
|
||||||
|
- `mcp:access` - Access MCP endpoints
|
||||||
|
- `mcp:execute` - Execute tools
|
||||||
|
- `tools:read` - List tools
|
||||||
|
- `tools:execute` - Execute specific tools
|
||||||
|
- `collections:read` - Access collections
|
||||||
|
|
||||||
|
### Integration Examples
|
||||||
|
|
||||||
|
#### Claude Desktop
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"tpmjs": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "@anthropic/mcp-remote",
|
||||||
|
"https://tpmjs.com/api/mcp/ajax/ajax-collection/sse"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Cursor IDE
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"tpmjs": {
|
||||||
|
"url": "https://tpmjs.com/api/mcp/ajax/ajax-collection/sse"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Collections System
|
||||||
|
|
||||||
|
### What are Collections?
|
||||||
|
|
||||||
|
Collections are curated groups of tools that form an MCP server. Users can:
|
||||||
|
- Create public or private collections
|
||||||
|
- Add tools from the registry
|
||||||
|
- Share collections as MCP endpoints
|
||||||
|
|
||||||
|
### Collection Features
|
||||||
|
|
||||||
|
- **Custom Naming** - Unique slug per user
|
||||||
|
- **Tool Curation** - Add/remove tools
|
||||||
|
- **Access Control** - Public or private
|
||||||
|
- **MCP Endpoint** - Automatic server generation
|
||||||
|
|
||||||
|
### Collection API
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Create collection
|
||||||
|
POST /api/collections
|
||||||
|
{ "name": "My Tools", "slug": "my-tools", "isPublic": true }
|
||||||
|
|
||||||
|
// Add tool to collection
|
||||||
|
POST /api/collections/{id}/tools
|
||||||
|
{ "toolId": "tool-123" }
|
||||||
|
|
||||||
|
// Get collection's MCP endpoint
|
||||||
|
GET /api/mcp/{username}/{collection-slug}/http
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agent System
|
||||||
|
|
||||||
|
### What are TPMJS Agents?
|
||||||
|
|
||||||
|
Agents are AI-powered conversational interfaces with access to TPMJS tools. They enable:
|
||||||
|
- Multi-turn conversations
|
||||||
|
- Tool execution within context
|
||||||
|
- Custom system prompts
|
||||||
|
- Provider flexibility (OpenAI, Anthropic, etc.)
|
||||||
|
|
||||||
|
### Agent Configuration
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface Agent {
|
||||||
|
id: string;
|
||||||
|
uid: string; // Unique identifier
|
||||||
|
name: string;
|
||||||
|
description?: string;
|
||||||
|
provider: "OPENAI" | "ANTHROPIC" | "GOOGLE";
|
||||||
|
modelId: string; // e.g., "gpt-4o-mini"
|
||||||
|
systemPrompt?: string;
|
||||||
|
isPublic: boolean;
|
||||||
|
tools: Tool[]; // Attached tools
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Agent Features
|
||||||
|
|
||||||
|
1. **Multi-Turn Conversations**
|
||||||
|
- Persistent chat history
|
||||||
|
- Context-aware responses
|
||||||
|
- Tool execution in conversation
|
||||||
|
|
||||||
|
2. **Provider Flexibility**
|
||||||
|
- OpenAI (GPT-4, GPT-4o-mini)
|
||||||
|
- Anthropic (Claude)
|
||||||
|
- Google (Gemini)
|
||||||
|
- Custom providers
|
||||||
|
|
||||||
|
3. **Tool Integration**
|
||||||
|
- Attach any TPMJS tool
|
||||||
|
- Automatic tool calling
|
||||||
|
- Result injection into context
|
||||||
|
|
||||||
|
4. **Public Chat Pages**
|
||||||
|
- Share agents via public URL
|
||||||
|
- Embeddable chat interfaces
|
||||||
|
- No auth required for public agents
|
||||||
|
|
||||||
|
### Agent API
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Create agent
|
||||||
|
POST /api/agents
|
||||||
|
{ "name": "My Agent", "provider": "OPENAI", "modelId": "gpt-4o-mini" }
|
||||||
|
|
||||||
|
// Chat with agent
|
||||||
|
POST /api/agents/{id}/chat
|
||||||
|
{ "messages": [{"role": "user", "content": "Hello!"}] }
|
||||||
|
|
||||||
|
// Stream response
|
||||||
|
POST /api/agents/{id}/chat
|
||||||
|
{ "messages": [...], "stream": true }
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API Endpoints
|
||||||
|
|
||||||
|
### Public Endpoints (No Auth)
|
||||||
|
|
||||||
|
| Endpoint | Method | Description |
|
||||||
|
|----------|--------|-------------|
|
||||||
|
| `/api/health` | GET | Health check with build info |
|
||||||
|
| `/api/stats` | GET | Platform statistics |
|
||||||
|
| `/api/stats/health` | GET | Tool health metrics |
|
||||||
|
| `/api/tools` | GET | List public tools |
|
||||||
|
| `/api/tools/{id}` | GET | Get tool details |
|
||||||
|
| `/api/tools/search` | GET | Search tools |
|
||||||
|
| `/api/collections/public` | GET | List public collections |
|
||||||
|
|
||||||
|
### Authenticated Endpoints
|
||||||
|
|
||||||
|
| Endpoint | Method | Description |
|
||||||
|
|----------|--------|-------------|
|
||||||
|
| `/api/user` | GET | Current user profile |
|
||||||
|
| `/api/user/settings` | PATCH | Update user settings |
|
||||||
|
| `/api/user/api-keys` | GET/POST | Manage API keys |
|
||||||
|
| `/api/agents` | CRUD | Agent management |
|
||||||
|
| `/api/collections` | CRUD | Collection management |
|
||||||
|
|
||||||
|
### MCP Endpoints
|
||||||
|
|
||||||
|
| Endpoint | Method | Description |
|
||||||
|
|----------|--------|-------------|
|
||||||
|
| `/api/mcp/{user}/{collection}/http` | POST | HTTP transport |
|
||||||
|
| `/api/mcp/{user}/{collection}/sse` | POST | SSE transport |
|
||||||
|
| `/api/mcp/{user}/{collection}/http` | GET | Server info |
|
||||||
|
|
||||||
|
### Sync Endpoints (Cron)
|
||||||
|
|
||||||
|
| Endpoint | Schedule | Description |
|
||||||
|
|----------|----------|-------------|
|
||||||
|
| `/api/sync/changes` | */2 * * * * | npm changes feed |
|
||||||
|
| `/api/sync/keyword` | */15 * * * * | Keyword search |
|
||||||
|
| `/api/sync/metrics` | 0 * * * * | Metrics update |
|
||||||
|
|
||||||
|
### Tool Execution
|
||||||
|
|
||||||
|
| Endpoint | Method | Description |
|
||||||
|
|----------|--------|-------------|
|
||||||
|
| `/api/tools/{id}/execute` | POST | Execute a tool |
|
||||||
|
| `/api/execute/code` | POST | Execute code (sandbox) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SDK & Packages
|
||||||
|
|
||||||
|
### Published npm Packages
|
||||||
|
|
||||||
|
| Package | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| `@tpmjs/types` | TypeScript types and Zod schemas |
|
||||||
|
| `@tpmjs/ui` | React component library |
|
||||||
|
| `@tpmjs/utils` | Utility functions |
|
||||||
|
| `@tpmjs/env` | Environment validation |
|
||||||
|
|
||||||
|
### Type Definitions
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Tool types
|
||||||
|
interface TpmjsTool {
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
inputSchema: JSONSchema;
|
||||||
|
outputSchema?: JSONSchema;
|
||||||
|
executor?: string;
|
||||||
|
category?: string;
|
||||||
|
tags?: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
// MCP types
|
||||||
|
interface McpRequest {
|
||||||
|
jsonrpc: "2.0";
|
||||||
|
id: string | number;
|
||||||
|
method: string;
|
||||||
|
params?: Record<string, unknown>;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface McpResponse {
|
||||||
|
jsonrpc: "2.0";
|
||||||
|
id: string | number;
|
||||||
|
result?: unknown;
|
||||||
|
error?: McpError;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### UI Components
|
||||||
|
|
||||||
|
- Buttons, Cards, Badges
|
||||||
|
- Form inputs with validation
|
||||||
|
- Code editors with syntax highlighting
|
||||||
|
- Chat interfaces
|
||||||
|
- Tool cards and lists
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Security & Privacy
|
||||||
|
|
||||||
|
### Authentication Methods
|
||||||
|
|
||||||
|
1. **GitHub OAuth** - Primary user auth
|
||||||
|
2. **API Keys** - Programmatic access
|
||||||
|
3. **Session Cookies** - Web auth
|
||||||
|
|
||||||
|
### API Key Security
|
||||||
|
|
||||||
|
- SHA-256 hashed storage
|
||||||
|
- Prefix-only display after creation
|
||||||
|
- Scoped permissions
|
||||||
|
- Optional expiration
|
||||||
|
- Revocation support
|
||||||
|
|
||||||
|
### Rate Limiting
|
||||||
|
|
||||||
|
- Per-user limits
|
||||||
|
- Per-IP limits
|
||||||
|
- Per-tool limits
|
||||||
|
- Customizable thresholds
|
||||||
|
|
||||||
|
### Data Privacy
|
||||||
|
|
||||||
|
- No tool input logging by default
|
||||||
|
- Optional usage analytics
|
||||||
|
- GDPR-compliant data handling
|
||||||
|
- User data export/deletion
|
||||||
|
|
||||||
|
### Sandbox Security
|
||||||
|
|
||||||
|
- Network isolation modes
|
||||||
|
- Resource limits
|
||||||
|
- No persistent storage
|
||||||
|
- Ephemeral execution
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Infrastructure
|
||||||
|
|
||||||
|
### Deployment Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ Vercel │
|
||||||
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
||||||
|
│ │ Edge │ │ Serverless │ │ Serverless │ │
|
||||||
|
│ │ Network │→ │ Functions │→ │ Executors │ │
|
||||||
|
│ │ (CDN) │ │ (API) │ │ (Tool Runners) │ │
|
||||||
|
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
||||||
|
└─────────────────────────────────────────────────────────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ Neon PostgreSQL │
|
||||||
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
||||||
|
│ │ Tools │ │ Users │ │ Collections │ │
|
||||||
|
│ │ Registry │ │ & Auth │ │ & Agents │ │
|
||||||
|
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
||||||
|
└─────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Monitoring
|
||||||
|
|
||||||
|
- **Health Checks** - Every 5 minutes via GitHub Actions
|
||||||
|
- **Vercel Analytics** - Performance monitoring
|
||||||
|
- **Sync Logging** - All sync operations logged
|
||||||
|
- **Error Tracking** - Automatic error collection
|
||||||
|
|
||||||
|
### CI/CD Pipeline
|
||||||
|
|
||||||
|
1. **Pre-commit** - Lint, format, type-check (Lefthook)
|
||||||
|
2. **CI** - Full test suite (GitHub Actions)
|
||||||
|
3. **Deploy** - Automatic on merge (Vercel)
|
||||||
|
4. **Health Check** - Post-deploy verification
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Use Cases
|
||||||
|
|
||||||
|
### For Developers
|
||||||
|
|
||||||
|
1. **Publish AI Tools**
|
||||||
|
- Package as npm module
|
||||||
|
- Add `tpmjs` keyword
|
||||||
|
- Automatically synced to registry
|
||||||
|
|
||||||
|
2. **Build Tool Collections**
|
||||||
|
- Curate tools for specific use cases
|
||||||
|
- Share as MCP endpoint
|
||||||
|
- Embed in applications
|
||||||
|
|
||||||
|
3. **Create AI Agents**
|
||||||
|
- Attach tools to agents
|
||||||
|
- Custom system prompts
|
||||||
|
- Deploy public chat interfaces
|
||||||
|
|
||||||
|
### For AI Applications
|
||||||
|
|
||||||
|
1. **Integrate Tools**
|
||||||
|
- Connect via MCP protocol
|
||||||
|
- Use any TPMJS collection
|
||||||
|
- Standard JSON-RPC interface
|
||||||
|
|
||||||
|
2. **Extend Capabilities**
|
||||||
|
- Web scraping, code execution
|
||||||
|
- API integrations
|
||||||
|
- Data processing
|
||||||
|
|
||||||
|
3. **Build Workflows**
|
||||||
|
- Chain multiple tools
|
||||||
|
- Agent-based automation
|
||||||
|
- Custom orchestration
|
||||||
|
|
||||||
|
### For Enterprises
|
||||||
|
|
||||||
|
1. **Private Tool Registry**
|
||||||
|
- Internal tools only
|
||||||
|
- Access control
|
||||||
|
- Usage analytics
|
||||||
|
|
||||||
|
2. **Secure Execution**
|
||||||
|
- Sandboxed environments
|
||||||
|
- Audit logging
|
||||||
|
- Compliance ready
|
||||||
|
|
||||||
|
3. **Custom Agents**
|
||||||
|
- Brand-specific AI assistants
|
||||||
|
- Internal knowledge access
|
||||||
|
- Tool-enabled support
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Competitive Advantages
|
||||||
|
|
||||||
|
### vs. Building Custom MCP Servers
|
||||||
|
|
||||||
|
| TPMJS | Custom MCP Server |
|
||||||
|
|-------|-------------------|
|
||||||
|
| Instant setup | Days/weeks of development |
|
||||||
|
| 170+ tools ready | Build each tool |
|
||||||
|
| Hosted infrastructure | Self-hosted required |
|
||||||
|
| Automatic scaling | Manual scaling |
|
||||||
|
|
||||||
|
### vs. Other Tool Platforms
|
||||||
|
|
||||||
|
| Feature | TPMJS | Competitors |
|
||||||
|
|---------|-------|-------------|
|
||||||
|
| Open Protocol (MCP) | ✅ | Often proprietary |
|
||||||
|
| npm Integration | ✅ | Custom registries |
|
||||||
|
| Self-hostable | ✅ | Usually SaaS-only |
|
||||||
|
| Code Execution | ✅ | Limited |
|
||||||
|
| Agent System | ✅ | Separate product |
|
||||||
|
|
||||||
|
### Unique Features
|
||||||
|
|
||||||
|
1. **npm-Native** - Tools are just npm packages
|
||||||
|
2. **MCP-First** - Built on open standard
|
||||||
|
3. **Hybrid Execution** - Local + cloud options
|
||||||
|
4. **Collection System** - Curated tool sets
|
||||||
|
5. **Agent Platform** - Full conversational AI
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Appendix: Official Tools Collection
|
||||||
|
|
||||||
|
The `ajax-collection` includes 170+ tools across categories:
|
||||||
|
|
||||||
|
### Web & Data
|
||||||
|
- `firecrawl-aisdk` - Web crawling and extraction
|
||||||
|
- `tpmjs-tools-page-brief` - Page summarization
|
||||||
|
- `tpmjs-tools-search` - Web search
|
||||||
|
|
||||||
|
### Development
|
||||||
|
- `tpmjs-unsandbox` - Code execution (42+ languages)
|
||||||
|
- `tpmjs-tools-toc-generate` - Markdown TOC generator
|
||||||
|
- `tpmjs-tools-changelog-entry` - Changelog generation
|
||||||
|
|
||||||
|
### Content
|
||||||
|
- `tpmjs-createblogpost` - Blog post creation
|
||||||
|
- `tpmjs-tools-recipe-hash` - Recipe/workflow hashing
|
||||||
|
- `tpmjs-tools-workflow-variant-generate` - Workflow variations
|
||||||
|
|
||||||
|
### And Many More...
|
||||||
|
- API integrations
|
||||||
|
- Data transformations
|
||||||
|
- File processing
|
||||||
|
- Image manipulation
|
||||||
|
- Text analysis
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
TPMJS is a comprehensive platform for AI tool discovery, execution, and orchestration. Key takeaways:
|
||||||
|
|
||||||
|
1. **Registry** - npm-native tool discovery with automatic syncing
|
||||||
|
2. **Execution** - Secure, sandboxed tool running
|
||||||
|
3. **MCP** - Standard protocol for AI integration
|
||||||
|
4. **Collections** - Curated tool sets as MCP servers
|
||||||
|
5. **Agents** - Conversational AI with tool access
|
||||||
|
6. **Infrastructure** - Production-ready, scalable, monitored
|
||||||
|
|
||||||
|
The platform enables developers to publish tools, AI applications to consume them, and enterprises to build secure, tool-enabled AI experiences.
|
||||||
|
|
@ -23,11 +23,11 @@ const spaceMono = Space_Mono({
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
metadataBase: new URL('https://tpmjs.com'),
|
metadataBase: new URL('https://tpmjs.com'),
|
||||||
title: {
|
title: {
|
||||||
default: 'TPMJS - Tool Package Manager for AI Agents',
|
default: 'TPMJS - The NPM for AI Tools',
|
||||||
template: '%s | TPMJS',
|
template: '%s | TPMJS',
|
||||||
},
|
},
|
||||||
description:
|
description:
|
||||||
'Discover and use npm packages as AI agent tools. No config files, automatic discovery, works with any framework.',
|
'Discover and use npm packages as AI agent tools. Works with Claude, GPT, LangChain, and any MCP-compatible client.',
|
||||||
icons: {
|
icons: {
|
||||||
icon: [
|
icon: [
|
||||||
{ url: '/favicon.svg', type: 'image/svg+xml' },
|
{ url: '/favicon.svg', type: 'image/svg+xml' },
|
||||||
|
|
@ -55,9 +55,9 @@ export const metadata: Metadata = {
|
||||||
locale: 'en_US',
|
locale: 'en_US',
|
||||||
url: 'https://tpmjs.com',
|
url: 'https://tpmjs.com',
|
||||||
siteName: 'TPMJS',
|
siteName: 'TPMJS',
|
||||||
title: 'TPMJS - Tool Package Manager for AI Agents',
|
title: 'TPMJS - The NPM for AI Tools',
|
||||||
description:
|
description:
|
||||||
'Discover and use npm packages as AI agent tools. No config files, automatic discovery, works with any framework.',
|
'Discover and use npm packages as AI agent tools. Works with Claude, GPT, LangChain, and any MCP-compatible client.',
|
||||||
images: [
|
images: [
|
||||||
{
|
{
|
||||||
url: '/api/og/home',
|
url: '/api/og/home',
|
||||||
|
|
@ -71,9 +71,9 @@ export const metadata: Metadata = {
|
||||||
card: 'summary_large_image',
|
card: 'summary_large_image',
|
||||||
site: '@tpmjs_registry',
|
site: '@tpmjs_registry',
|
||||||
creator: '@tpmjs_registry',
|
creator: '@tpmjs_registry',
|
||||||
title: 'TPMJS - Tool Package Manager for AI Agents',
|
title: 'TPMJS - The NPM for AI Tools',
|
||||||
description:
|
description:
|
||||||
'Discover and use npm packages as AI agent tools. No config files, automatic discovery, works with any framework.',
|
'Discover and use npm packages as AI agent tools. Works with Claude, GPT, LangChain, and any MCP-compatible client.',
|
||||||
images: ['/api/og/home'],
|
images: ['/api/og/home'],
|
||||||
},
|
},
|
||||||
robots: {
|
robots: {
|
||||||
|
|
@ -101,7 +101,7 @@ export default function RootLayout({
|
||||||
url: 'https://tpmjs.com',
|
url: 'https://tpmjs.com',
|
||||||
logo: 'https://tpmjs.com/logo.png',
|
logo: 'https://tpmjs.com/logo.png',
|
||||||
description:
|
description:
|
||||||
'Discover and use npm packages as AI agent tools. No config files, automatic discovery, works with any framework.',
|
'The NPM for AI tools. Discover and use npm packages as AI agent tools. Works with Claude, GPT, LangChain, and any MCP-compatible client.',
|
||||||
sameAs: ['https://github.com/tpmjs/tpmjs', 'https://x.com/tpmjs_registry'],
|
sameAs: ['https://github.com/tpmjs/tpmjs', 'https://x.com/tpmjs_registry'],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -111,7 +111,7 @@ export default function RootLayout({
|
||||||
name: 'TPMJS',
|
name: 'TPMJS',
|
||||||
url: 'https://tpmjs.com',
|
url: 'https://tpmjs.com',
|
||||||
description:
|
description:
|
||||||
'Discover and use npm packages as AI agent tools. No config files, automatic discovery, works with any framework.',
|
'The NPM for AI tools. Discover and use npm packages as AI agent tools. Works with Claude, GPT, LangChain, and any MCP-compatible client.',
|
||||||
potentialAction: {
|
potentialAction: {
|
||||||
'@type': 'SearchAction',
|
'@type': 'SearchAction',
|
||||||
target: {
|
target: {
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ export default async function HomePage(): Promise<React.ReactElement> {
|
||||||
Featured Tools
|
Featured Tools
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-lg text-foreground-secondary max-w-2xl mx-auto mb-8">
|
<p className="text-lg text-foreground-secondary max-w-2xl mx-auto mb-8">
|
||||||
Top-rated tools from our registry. Sorted by quality score and community adoption.
|
Production-ready tools you can use today. Add to your AI agent in one line.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -129,12 +129,18 @@ export default async function HomePage(): Promise<React.ReactElement> {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mt-4 pt-4 border-t border-border flex items-center justify-between text-xs text-foreground-tertiary">
|
<div className="mt-4 pt-4 border-t border-border flex items-center justify-between text-xs text-foreground-tertiary">
|
||||||
|
{tool.qualityScore && Number(tool.qualityScore) > 0 ? (
|
||||||
|
<span className="flex items-center gap-1">
|
||||||
|
<span className="text-brutalist-accent">★</span>
|
||||||
|
{Number(tool.qualityScore).toFixed(2)}
|
||||||
|
</span>
|
||||||
|
) : (
|
||||||
|
<span />
|
||||||
|
)}
|
||||||
<span>
|
<span>
|
||||||
Quality:{' '}
|
{(tool.package.npmDownloadsLastMonth ?? 0) > 0
|
||||||
{tool.qualityScore ? Number(tool.qualityScore).toFixed(2) : 'N/A'}
|
? `${tool.package.npmDownloadsLastMonth?.toLocaleString()} downloads/mo`
|
||||||
</span>
|
: 'New'}
|
||||||
<span>
|
|
||||||
{tool.package.npmDownloadsLastMonth?.toLocaleString() || '0'} downloads/mo
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -164,6 +170,62 @@ export default async function HomePage(): Promise<React.ReactElement> {
|
||||||
</Container>
|
</Container>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
{/* Integration Section */}
|
||||||
|
<section className="py-16 bg-surface border-y border-border">
|
||||||
|
<Container size="xl" padding="lg">
|
||||||
|
<div className="text-center mb-12">
|
||||||
|
<h2 className="text-3xl md:text-4xl font-bold mb-4 text-foreground">
|
||||||
|
Works Everywhere
|
||||||
|
</h2>
|
||||||
|
<p className="text-lg text-foreground-secondary max-w-2xl mx-auto">
|
||||||
|
Use TPMJS tools with any MCP-compatible AI client. One URL, instant access.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-12">
|
||||||
|
<div className="p-6 border border-border rounded-lg bg-background text-center">
|
||||||
|
<div className="text-2xl mb-3 font-mono text-brutalist-accent">Claude</div>
|
||||||
|
<p className="text-sm text-foreground-secondary">Desktop, Projects, and API</p>
|
||||||
|
</div>
|
||||||
|
<div className="p-6 border border-border rounded-lg bg-background text-center">
|
||||||
|
<div className="text-2xl mb-3 font-mono text-brutalist-accent">Cursor</div>
|
||||||
|
<p className="text-sm text-foreground-secondary">AI-powered code editor</p>
|
||||||
|
</div>
|
||||||
|
<div className="p-6 border border-border rounded-lg bg-background text-center">
|
||||||
|
<div className="text-2xl mb-3 font-mono text-brutalist-accent">Windsurf</div>
|
||||||
|
<p className="text-sm text-foreground-secondary">Agentic IDE</p>
|
||||||
|
</div>
|
||||||
|
<div className="p-6 border border-border rounded-lg bg-background text-center">
|
||||||
|
<div className="text-2xl mb-3 font-mono text-brutalist-accent">Any MCP</div>
|
||||||
|
<p className="text-sm text-foreground-secondary">Open protocol support</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Code Example */}
|
||||||
|
<div className="max-w-2xl mx-auto">
|
||||||
|
<div className="bg-background border border-border rounded-lg overflow-hidden">
|
||||||
|
<div className="px-4 py-2 border-b border-border bg-surface-secondary text-xs font-mono text-foreground-secondary">
|
||||||
|
claude_desktop_config.json
|
||||||
|
</div>
|
||||||
|
<pre className="p-4 text-sm font-mono text-foreground overflow-x-auto">
|
||||||
|
<code>{`{
|
||||||
|
"mcpServers": {
|
||||||
|
"tpmjs": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "@anthropic/mcp-remote",
|
||||||
|
"https://tpmjs.com/api/mcp/ajax/ajax-collection/sse"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}`}</code>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<p className="text-center mt-4 text-sm text-foreground-secondary">
|
||||||
|
Add this to your config and get instant access to 170+ tools.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
{/* Publish Your Tool Section */}
|
{/* Publish Your Tool Section */}
|
||||||
<section className="py-16 bg-surface">
|
<section className="py-16 bg-surface">
|
||||||
<Container size="xl" padding="lg">
|
<Container size="xl" padding="lg">
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ export function HeroSection({ stats }: HeroSectionProps): React.ReactElement {
|
||||||
className="mb-8 font-bold leading-none tracking-tight text-foreground"
|
className="mb-8 font-bold leading-none tracking-tight text-foreground"
|
||||||
style={{ fontSize: 'clamp(48px, 10vw, 96px)' }}
|
style={{ fontSize: 'clamp(48px, 10vw, 96px)' }}
|
||||||
>
|
>
|
||||||
TOOL REGISTRY FOR AI AGENTS
|
THE NPM FOR AI TOOLS
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
{/* Live Metrics Strip */}
|
{/* Live Metrics Strip */}
|
||||||
|
|
@ -83,7 +83,8 @@ export function HeroSection({ stats }: HeroSectionProps): React.ReactElement {
|
||||||
|
|
||||||
{/* Subheading */}
|
{/* Subheading */}
|
||||||
<p className="mb-12 max-w-3xl text-xl md:text-2xl font-medium leading-relaxed text-foreground-secondary tracking-tight">
|
<p className="mb-12 max-w-3xl text-xl md:text-2xl font-medium leading-relaxed text-foreground-secondary tracking-tight">
|
||||||
The open registry for AI tools. Browse, publish, and integrate tools into your agents.
|
Discover and use npm packages as AI agent tools. Works with Claude, GPT, LangChain, and
|
||||||
|
any MCP-compatible client.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{/* Brutalist Search Interface */}
|
{/* Brutalist Search Interface */}
|
||||||
|
|
@ -122,8 +123,8 @@ export function HeroSection({ stats }: HeroSectionProps): React.ReactElement {
|
||||||
{/* Helper Text */}
|
{/* Helper Text */}
|
||||||
<div className="mt-4 flex items-center gap-4 font-mono text-xs text-foreground-tertiary uppercase tracking-wider">
|
<div className="mt-4 flex items-center gap-4 font-mono text-xs text-foreground-tertiary uppercase tracking-wider">
|
||||||
<span>
|
<span>
|
||||||
Try: “web-scraper”, “github-manager”,
|
Try: “web scraper”, “discord”, “code
|
||||||
“sql-query”
|
interpreter”
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue