| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
AI Function Call Plugins & Tools for SperaxOS Source: github.com/nirholas/plugin.delivery
The plugin.delivery host is offline while hosting is being migrated. The https://plugin.delivery/... URLs in the manifests below are the canonical plugin identifiers and will resolve again once the migration completes; the plugin catalog itself ships in this repository under public/.
📚 Docs • 🚀 Quick Start • 📦 Templates • 🎨 Plugin Types • 🔧 Development
AI plugin marketplace. SDK, gateway & developer tools for building function-calling plugins. OpenAPI compatible, multi-language support, Vercel edge deployment. Build chat plugins, AI tools & extensions. Primary use in cryptocurrency, DeFI, crypto trading, and blockchain analytics. Compatible with ERC-8004 agents.
| Feature | Description |
|---|---|
| 📋 Plugin Index | JSON registry of AI-discoverable plugins |
| ⚡ Gateway Service | Secure proxy routing function calls to plugin APIs |
| 🛠️ SDK | TypeScript SDK for building custom plugins |
| 🎨 Templates | 6 starter templates for different plugin types |
| 🌍 i18n | 18 languages supported out of the box |
User: "What's the price of ETH?"
│
▼
┌─────────────────────────────────────────────────────────┐
│ SperaxOS discovers plugin from plugin.delivery index │
│ AI generates function call: getPrice(coin: "ethereum") │
│ Gateway routes request to CoinGecko API │
│ Response rendered in chat (JSON, Markdown, or UI) │
└─────────────────────────────────────────────────────────┘
│
▼
AI: "ETH is currently trading at $3,450..."
SperaxOS supports 4 distinct plugin types, each optimized for different use cases:
| Type | Rendering | Best For | Complexity |
|---|---|---|---|
| Default | Server-rendered JSON → AI formats | Data APIs, lookups | ⭐ Simple |
| Markdown | Pre-formatted rich text | Documentation, reports | ⭐ Simple |
| Standalone | Full React/HTML app in iframe | Interactive dashboards | ⭐⭐⭐ Advanced |
| OpenAPI | Auto-generated from spec | Existing APIs | ⭐⭐ Medium |
Returns JSON data that the AI formats into natural language.
{
"ui": {
"mode": "default"
}
}Use when: You have an API that returns structured data and want the AI to explain results conversationally.
Returns pre-formatted Markdown that displays directly in chat.
{
"ui": {
"mode": "markdown"
}
}Use when: You want full control over formatting — tables, code blocks, headers, etc.
Embeds a full React/HTML application in an iframe within the chat.
{
"ui": {
"mode": "standalone",
"url": "https://your-plugin.com/ui",
"height": 400
}
}Use when: You need rich interactivity — charts, forms, dashboards, embedded apps.
💡 Standalone plugins are SperaxOS's superpower — they enable experiences beyond what ChatGPT plugins can do.
Auto-generated from an OpenAPI 3.x specification. No custom code needed.
{
"openapi": "https://your-api.com/openapi.json"
}Use when: You already have an OpenAPI spec for your API.
Artifacts are rich interactive content that plugins can render directly in chat. Unlike plain text responses, artifacts can include:
Render raw HTML directly:
// In your plugin API response
return {
type: 'html',
content: `
<div style="padding: 20px;">
<h2>Price Alert</h2>
<p>ETH crossed $3,500!</p>
</div>
`
};Render React components (standalone plugins):
// ui/page.tsx
export default function PriceChart({ data }) {
return (
<div className="p-4">
<LineChart data={data}>
<Line dataKey="price" stroke="#22c55e" />
</LineChart>
</div>
);
}Embed external content:
{
"ui": {
"mode": "standalone",
"url": "https://tradingview.com/chart/?symbol=BTCUSD",
"height": 500
}
}Standalone plugins can trigger additional function calls:
import { speraxOS } from '@sperax/plugin-sdk/client';
// Trigger a new function call from your UI
speraxOS.triggerFunctionCall({
name: 'getTokenDetails',
arguments: { token: 'ETH' }
});Get started fast with our official templates:
| Template | Type | Description | Use Case |
|---|---|---|---|
| basic | Default | Standard plugin with API endpoint | Simple data lookups |
| default | Default | Plugin with settings UI | Configurable plugins |
| markdown | Markdown | Rich text output | Formatted reports |
| openapi | OpenAPI | Auto-generated from spec | Existing APIs |
| settings | Default | Plugin with user preferences | Personalized tools |
| standalone | Standalone | Full React application | Interactive dashboards |
# Clone template to new directory
cp -r templates/standalone my-plugin
cd my-plugin
# Install dependencies
bun install
# Start development
bun devtemplates/standalone/ ├── public/ │ └── manifest.json # Plugin manifest ├── src/ │ ├── api/ # API endpoints │ │ └── index.ts # Main handler │ └── ui/ # React UI (standalone only) │ └── page.tsx # UI component ├── package.json └── README.md
The SDK is not published to the npm registry yet. Install it from a clone of this repository:
git clone https://github.com/nirholas/plugin.delivery.git
cd plugin.delivery
pnpm install@sperax/plugin-sdk and @sperax/chat-plugins-gateway then resolve as workspace packages (see pnpm-workspace.yaml).
{
"$schema": "https://plugin.delivery/schema.json",
"identifier": "my-crypto-plugin",
"api": [
{
"name": "getPrice",
"description": "Get cryptocurrency price",
"url": "https://my-plugin.vercel.app/api/price",
"parameters": {
"type": "object",
"properties": {
"coin": {
"type": "string",
"description": "Coin ID (e.g., bitcoin, ethereum)"
}
},
"required": ["coin"]
}
}
],
"meta": {
"title": "My Crypto Plugin",
"description": "Get real-time crypto prices",
"avatar": "🪙",
"tags": ["crypto", "prices"]
}
}// api/price.ts
export default async function handler(req: Request) {
const { coin } = await req.json();
const res = await fetch(
`https://api.coingecko.com/api/v3/simple/price?ids=${coin}&vs_currencies=usd`
);
const data = await res.json();
return Response.json({
coin,
price: data[coin]?.usd,
timestamp: new Date().toISOString()
});
}# Deploy to Vercel
vercel --prod
# Add to plugin index (submit PR or use Plugin Store)| Guide | Description |
|---|---|
| 📖 Plugin Development Guide | Complete development walkthrough |
| 📋 Plugin Manifest Reference | Full manifest.json specification |
| 🎨 Plugin Types Guide | Default, Markdown, Standalone explained |
| 🔌 SDK API Reference | Client SDK documentation |
| 🌐 OpenAPI Integration | Using OpenAPI specs |
| 💬 Communication Guide | Plugin ↔ Host messaging |
| 🎭 Artifacts Guide | Rich UI components |
| ⚡ Complete Guide | Everything in one doc |
| Plugin | Description | Type | API |
|---|---|---|---|
| 🪙 CoinGecko Crypto | Prices, trends, market data for 1M+ tokens | OpenAPI | Free |
| 🦙 DeFiLlama Analytics | TVL, yields, stablecoins, protocol metrics | Default | Free |
| Plugin | Description | Status |
|---|---|---|
| 📊 DexScreener | DEX pairs, volume, liquidity | Planned |
| 💼 Portfolio Tracker | Multi-chain wallet aggregation | Planned |
| ⛓️ Chain Explorer | Transaction lookup, gas prices | Planned |
# Clone
git clone https://github.com/nirholas/plugin.delivery.git
cd plugins
# Install
bun install
# Dev server
bun dev| Command | Description |
|---|---|
| bun dev | Start local dev server |
| bun run format | Generate i18n translations (requires OpenAI API key) |
| bun run build | Build plugin index |
| bun test | Run tests |
| bun lint | Lint code |
⚠️ CRITICAL: You MUST create both files or the build will fail:
- src/[plugin-name].json - Plugin definition
- locales/[plugin-name].en-US.json - Locale file (REQUIRED)
{
"author": "Your Name",
"createdAt": "2025-12-29",
"homepage": "https://example.com",
"identifier": "my-plugin",
"manifest": "https://plugin.delivery/my-plugin/manifest.json",
"meta": {
"avatar": "🔌",
"description": "What your plugin does",
"tags": ["tag1", "tag2"],
"title": "My Plugin",
"category": "stocks-finance"
},
"schemaVersion": 1
}{
"meta": {
"title": "My Plugin",
"description": "What your plugin does",
"tags": ["tag1", "tag2"]
}
}{
"$schema": "https://plugin.delivery/schema.json",
"identifier": "my-plugin",
"api": [
{
"url": "https://plugin.delivery/api/my-plugin/endpoint",
"name": "myFunction",
"description": "What this function does",
"parameters": {
"type": "object",
"properties": {
"param": { "type": "string", "description": "Parameter description" }
},
"required": ["param"]
}
}
],
"meta": {
"avatar": "🔌",
"title": "My Plugin",
"description": "What your plugin does"
},
"version": "1"
}Create API endpoints in api/[plugin-name]/[endpoint].ts
⚠️ REQUIRED: Create locale file locales/[plugin-name].en-US.json:
{
"meta": {
"title": "Your Plugin Title",
"description": "Your plugin description",
"tags": ["your", "tags"]
}
}BUILD WILL FAIL without this file. Copy title, description, and tags from your plugin's meta object.
# Set OpenAI API key (required for i18n generation)
export OPENAI_API_KEY=sk-your-key-here
# Generate translations (creates all locale files from en-US)
bun run formatbun run buildgit add src/[plugin-name].json locales/[plugin-name].*.json
git commit -m "feat: add [plugin-name] plugin"
git push⚠️ Important: Always run bun run format before bun run build when adding new plugins. The format command uses OpenAI to generate translations for all 18 supported languages.
plugins/ ├── packages/ │ ├── sdk/ # @sperax/plugin-sdk │ └── gateway/ # @sperax/chat-plugins-gateway ├── templates/ # Starter templates │ ├── basic/ │ ├── default/ │ ├── markdown/ │ ├── openapi/ │ ├── settings/ │ └── standalone/ ├── public/ # Static files (auto-generated) │ ├── index.json # Plugin registry │ └── openai/ # OpenAPI manifests ├── src/ # Plugin definitions ├── locales/ # i18n translations ├── docs/ # Documentation └── api/ # Serverless functions
Both packages live in this repository and are not published to the npm registry yet.
| Package | Description | Source |
|---|---|---|
| @sperax/plugin-sdk | Plugin SDK for building SperaxOS plugins | packages/sdk |
| @sperax/chat-plugins-gateway | Gateway service for routing plugin calls | packages/gateway |
import {
pluginManifestSchema,
createPluginResponse,
PluginError
} from '@sperax/plugin-sdk';
// Client-side (in standalone UI)
import { speraxOS } from '@sperax/plugin-sdk/client';The Plugin Gateway securely routes function calls from SperaxOS to plugin APIs:
SperaxOS → Gateway → Plugin API
│
├── Auth injection
├── Rate limiting
├── Request logging
└── Response transform
# Clone gateway
cd packages/gateway
# Deploy
vercel --prod
# Set in SperaxOS
PLUGINS_GATEWAY_URL=https://your-gateway.vercel.appWe welcome contributions! See CONTRIBUTING.md.
| Resource | URL |
|---|---|
| 🌐 Plugin Index | public/index.json in this repository (the plugin.delivery host is offline while hosting is migrated) |
| 📦 SDK | packages/sdk (workspace package, not yet published to npm) |
| 🐙 GitHub | github.com/nirholas/plugins |
| 🐦 Twitter/X | @nichxbt |
All rights reserved. See LICENSE.
Plugin Delivery is deployed and accessible over HTTP via MCP Streamable HTTP transport — no local installation required.
Endpoint:
https://modelcontextprotocol.name/mcp/plugin-delivery
Add to your MCP client configuration (Claude Desktop, Cursor, SperaxOS, etc.):
{
"mcpServers": {
"plugin-delivery": {
"type": "http",
"url": "https://modelcontextprotocol.name/mcp/plugin-delivery"
}
}
}| Tool | Description |
|---|---|
| search_plugins | Search AI plugins |
| get_plugin_info | Platform info |
Search AI plugins:
curl -X POST https://modelcontextprotocol.name/mcp/plugin-delivery \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_plugins","arguments":{"query":"weather"}}}'Platform info:
curl -X POST https://modelcontextprotocol.name/mcp/plugin-delivery \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_plugin_info","arguments":{}}}'curl -X POST https://modelcontextprotocol.name/mcp/plugin-delivery \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Powered by modelcontextprotocol.name — the open MCP HTTP gateway
| Back | FazBrowse Home | New Git URL |