openserv-launch
Launch tokens on Base blockchain via the OpenServ Launch API. Creates ERC-20 tokens with Aerodrome concentrated liquidity pools. Use when launching tokens, deploying memecoins, or building agents that create tokens with locked LP. Read reference.md for the full API reference. Read openserv-agent-sdk and openserv-client for building and running agents. You can launch tokens for your OpenServ agents.
git clone --depth 1 https://github.com/internet-court/internet-court-skill /tmp/openserv-launch && cp -r /tmp/openserv-launch/vendored/openserv/openserv-launch ~/.claude/skills/openserv-launchSKILL.md
# OpenServ Launch API
Launch tokens instantly on Base blockchain with one-sided concentrated liquidity pools on Aerodrome Slipstream.
**Reference files:**
- `reference.md` - Full API reference for all endpoints
- `troubleshooting.md` - Common issues and solutions
- `examples/` - Complete code examples
**Base URL:** `https://instant-launch.openserv.ai`
---
## What This API Does
- **Deploys ERC-20 tokens** - 1 billion supply, standard token contract
- **Creates Aerodrome CL pools** - One-sided liquidity with 2,000,000x price range
- **Locks LP for 1 year** - Automatic rug-pull protection
- **Splits fees 50/50** - Creator wallet receives 50% of all trading fees
---
## Quick Start
### Dependencies
```bash
npm install axios
```
### Launch a Token
```typescript
import axios from 'axios'
const response = await axios.post('https://instant-launch.openserv.ai/api/launch', {
name: 'My Token',
symbol: 'MTK',
wallet: '0x1234567890abcdef1234567890abcdef12345678',
description: 'A cool memecoin',
imageUrl: 'https://example.com/logo.png',
website: 'https://mytoken.com',
twitter: '@mytoken'
})
console.log(response.data)
// {
// success: true,
// token: { address: '0x...', name: 'My Token', symbol: 'MTK', supply: '1000000000' },
// pool: { address: '0x...', tickSpacing: 500, fee: '2%' },
// locker: { address: '0x...', lpTokenId: '12345', lockedUntil: '2027-02-03T...' },
// txHashes: { tokenDeploy: '0x...', lpMint: '0x...', lock: '0x...', buy: '0x...' },
// links: { explorer: '...', aerodrome: '...', dexscreener: '...' }
// }
```
---
## Endpoints Overview
| Endpoint | Method | Description |
| --------------------- | ------ | -------------------------------- |
| `/api/launch` | POST | Create a new token with LP pool |
| `/api/tokens` | GET | List launched tokens |
| `/api/tokens/:address`| GET | Get token details by address |
---
## Launch Request Fields
| Field | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------ |
| `name` | string | Yes | Token name (1-64 characters) |
| `symbol` | string | Yes | Token symbol (1-10 chars, uppercase, alphanumeric) |
| `wallet` | string | Yes | Creator wallet address (receives 50% of fees) |
| `description` | string | No | Token description (max 500 characters) |
| `imageUrl` | string | No | Direct link to image file (jpg, png, gif, webp, svg) |
| `website` | string | No | Website URL (must start with http/https) |
| `twitter` | string | No | Twitter handle (with or without @) |
---
## Launch Response
```typescript
interface LaunchResponse {
success: true
internalId: string // Database record ID
creator: string // Creator wallet address
token: {
address: string // Deployed token contract
name: string
symbol: string
supply: string // Always "1000000000"
}
pool: {
address: string // Aerodrome CL pool
tickSpacing: number // 500
fee: string // "2%"
}
locker: {
address: string // LP locker contract
lpTokenId: string // NFT position ID
lockedUntil: string // ISO date (1 year from launch)
}
txHashes: {
tokenDeploy: string // Token deployment tx
stakingTransfer: string // 5% staking allocation tx
lpMint: string // LP position mint tx
lock: string // LP lock tx
buy: string // Initial buy tx
}
links: {
explorer: string // Basescan token page
aerodrome: string // Aerodrome swap page
dexscreener: string // DEXScreener chart
defillama: string // DefiLlama swap
}
}
```
---
## Token Defaults
| Setting | Value |
| ------------------ | ------------------ |
| Token Supply | 1 billion |
| Initial Market Cap | $15,000 |
| Price Range | 2,000,000x (~$30B) |
| Pool Fee | 2% |
| Tick Spacing | 500 |
| Fee Split | 50/50 (creator/platform) |
| Lock Duration | 1 year |
| Staking Allocation | 5% |
| Initial Buy | 0.0005 ETH |
---
## Example: Agent with Token Launch Capability
```typescript
import { Agent, run } from '@openserv-labs/sdk'
import { provision, triggers } from '@openserv-labs/client'
import { z } from 'zod'
import axios from 'axios'
const agent = new Agent({
systemPrompt: 'You help users launch tokens on Base blockchain.'
})
agent.addCapability({
name: 'launch_token',
description: 'Launch a new ERC-20 token with LP pool on Aerodrome',
schema: z.object({
name: z.string().describe('Token name (1-64 chars)'),
symbol: z.string().describe('Token symbol (1-10 chars, uppercase)'),
wallet: z.string().describe('Creator wallet address'),
description: z.string().optional().describe('Token description'),
imageUrl: z.string().optional().describe('Logo image URL'),
website: z.string().optional().describe('Website URL'),
twitter: z.string().optional().describe('Twitter handle')
}),
async run({ args }) {
const response = await axios.post('https://instant-launch.openserv.ai/api/launch', args)
const { token, pool, links } = response.data
return `Token launched! Address: ${token.address}, Pool: ${pool.address}, Trade: ${links.aerodrome}`
}
})
async function main() {
await provision({
agent: {
instance: agent,
name: 'token-launcher',
description: 'Launch tokens on Base with Aerodrome LP'
},
workflow: {
name: 'Token Launcher',
goal: 'Launch ERC-20 tokens on Base blockchain with Aerodrome concentrated liquidity pools',Entry point for Internet Court — the trust layer for agent-to-agent commerce. Use whenever an agent needs to transact with another agent or a paid service, or a user mentions agent payments, paid APIs (HTTP 402/x402), wallet custody or trust concerns, spending mandates, delegated permissions (ERC-7710/7715), escrow, agent identity or reputation (ERC-8004), negotiation between agents (A2A), agent jobs (ERC-8183), machine payments (MPP, AP2), supervision of agent behavior, revocation, verification, or dispute resolution (GenLayer) — even if they never say "Internet Court". Routes to the vendored protocol skills and connector skills in this package.
Connect GenLayer Intelligent Contract decisions to ERC-7710-style delegated authority. Use when an agent needs to design the interface, message schema, relayer/bridge path, EVM revocation controller, constraint updates, proof/finality assumptions, and failure handling that turn a GenLayer agent-performance review into ERC-7710 revocation or policy changes.
Internet Court adapter for GenLayer Intelligent Contract supervision. Use to specify agent-performance rubrics, evidence schemas, decision outputs, and ERC-7710 connector expectations, while delegating actual GenLayer contract writing, linting, testing, deployment, and CLI interaction to the official GenLayer skills at https://skills.genlayer.com/.
Design and implement demos combining x402 HTTP payments with ERC-7710 smart contract delegations and ERC-7715 wallet permission requests for subscriptions, bounded agent budgets, recurring spend, pay-per-use APIs, and agentic commerce.
0G Compute Network guide for decentralized AI inference, fine-tuning, and GPU services. Covers chatbots, image generation, speech-to-text, SDK integration (0g-serving-broker), processResponse API, broker.inference methods, CLI commands (0g-compute-cli), and account management. Use this skill for any 0G compute, 0G AI, or decentralized GPU question.
Use this skill when the user asks to list, create, inspect, update, disable, re-enable, or revoke AltLLM Portal API keys for external agents or applications. Do NOT use for wallet login, billing history, or payment links.
Use this skill when the user asks to log in or out with a wallet session, fetch a wallet sign-in challenge, verify an externally signed challenge, or troubleshoot AltLLM Portal wallet login for the local altllm CLI. Do NOT use for API key management, billing history, or payment links.
Use this skill when the user asks to inspect AltLLM Portal balance, redeem a promo code, review billing transactions, or view usage analytics by period, model, or API key using the local altllm CLI. Do NOT use for API key lifecycle management or payment-link execution.