skills/blowfish-launch-token/SKILL.md
Launch Solana tokens programmatically via the Blowfish Agent API. Use this skill when an agent needs to create new SPL tokens on Solana, check token deployment status, list deployed tokens, view claimable fees, or claim accumulated trading fees.
npx skillsauth add enudimmud/enki-openclaw blowfish-launch-tokenInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Launch Solana tokens via the Blowfish Agent API at https://api-blowfish.neuko.ai.
This skill enables autonomous token launches on Solana through a simple REST API. The flow is:
All endpoints except /health require a Bearer JWT obtained via the challenge-response flow.
curl -s -X POST https://api-blowfish.neuko.ai/api/auth/challenge \
-H "Content-Type: application/json" \
-d '{"wallet": "<WALLET_PUBLIC_KEY>"}'
Response:
{"nonce": "<random-nonce>"}
The nonce expires after 5 minutes.
Sign the following message with the wallet's ed25519 keypair:
Sign this message to authenticate: <nonce>
Encode the signature as base58.
curl -s -X POST https://api-blowfish.neuko.ai/api/auth/verify \
-H "Content-Type: application/json" \
-d '{"wallet": "<WALLET_PUBLIC_KEY>", "nonce": "<nonce>", "signature": "<base58-signature>"}'
Response:
{"token": "<jwt>"}
The JWT is valid for 15 minutes. Use it in all subsequent requests:
Authorization: Bearer <jwt>
See references/authentication.md for the complete TypeScript implementation.
curl -s -X POST https://api-blowfish.neuko.ai/api/v1/tokens/launch \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <jwt>" \
-d '{
"name": "My Token",
"ticker": "MYTKN",
"description": "A description of the token",
"imageUrl": "https://example.com/logo.png"
}'
| Field | Type | Required | Constraints |
|-------|------|----------|-------------|
| name | string | yes | 1–255 characters |
| ticker | string | yes | 2–10 chars, uppercase alphanumeric only |
| description | string | no | max 1000 characters |
| imageUrl | string | no | valid URL, max 255 characters |
{
"success": true,
"message": "We will notify you when your token is deployed",
"eventId": "<uuid>"
}
curl -s https://api-blowfish.neuko.ai/api/v1/tokens/launch/status/<eventId> \
-H "Authorization: Bearer <jwt>"
Response:
{
"status": "pending | success | failed | rate_limited",
"processedAt": "<ISO-8601 or null>"
}
Poll every 5–10 seconds until status is success, failed, or rate_limited.
curl -s https://api-blowfish.neuko.ai/api/v1/tokens/ \
-H "Authorization: Bearer <jwt>"
Response:
{
"tokens": [
{
"poolAddress": "string",
"tokenMint": "string",
"ticker": "string",
"tokenName": "string",
"isClaimed": false,
"claimedAt": null,
"claimedToAddress": null,
"deployedAt": "2026-01-15T12:00:00Z"
}
]
}
curl -s https://api-blowfish.neuko.ai/api/v1/tokens/<mintAddress> \
-H "Authorization: Bearer <jwt>"
Returns a single token object matching the structure above.
curl -s https://api-blowfish.neuko.ai/api/v1/tokens/claims \
-H "Authorization: Bearer <jwt>"
Response:
{
"claims": [
{
"tokenMint": "string",
"poolAddress": "string",
"ticker": "string",
"dbcClaimableFees": 0.5,
"dbcTotalFees": 1.0,
"dbcClaimedFees": 0.5,
"lpClaimableFees": 0.25,
"lpTotalFees": 0.5,
"lpClaimedFees": 0.25,
"isMigrated": false
}
]
}
Two-step process — get the unsigned transaction, sign it locally, then submit.
curl -s -X POST https://api-blowfish.neuko.ai/api/v1/tokens/claims/<mintAddress> \
-H "Authorization: Bearer <jwt>"
Response:
{
"success": true,
"transaction": "<base64-encoded-unsigned-transaction>"
}
Sign the transaction with the wallet keypair, then submit:
curl -s -X POST https://api-blowfish.neuko.ai/api/v1/tokens/claims/<mintAddress> \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <jwt>" \
-d '{"signedTransaction": "<base64-encoded-signed-transaction>"}'
Response:
{
"success": true,
"transactionHash": "string",
"claimedSOL": 0.75
}
See references/fee-claims.md for detailed walkthrough.
curl -s https://api-blowfish.neuko.ai/health
No authentication required.
{"ok": true, "db": "connected", "timestamp": "2026-01-15T12:00:00Z"}
All errors return: {"error": "Human-readable message"}
| Status | Scenario | Action | |--------|----------|--------| | 400 | Invalid request body | Validate fields against constraints above | | 401 | Missing or expired JWT | Re-authenticate for a fresh token | | 404 | Event or token not found | Verify the eventId or mintAddress | | 409 | Duplicate ticker | Choose a different ticker | | 429 | Rate limited | Wait until UTC midnight to retry |
See references/error-handling.md for full error catalog.
documentation
Post tweets to @HelvetiVault with validation and posting rules enforcement. Supports text, threads, and media. Enforces daily limits and content guidelines.
development
Crypto wallet, token swaps, cross-chain bridges, Tempo transfers, and access to paid external services (search, image gen, web scraping, AI, and more) via x402 and MPP micropayments.
tools
# Scrapling Skill - Advanced Web Scraping ## Overview Scrapling is a modern web scraping framework with: - **Adaptive element finding** — Survives website redesigns - **Anti-bot bypass** — Handles Cloudflare Turnstile - **MCP Server** — Token-optimized content extraction for AI - **Multiple fetchers** — HTTP (fast) or browser-based (stealth) ## Installation Already installed in venv at `~/.openclaw/workspace/skills/scrapling/venv/` **Dependencies:** - Python 3.10+ - Chromium browser (instal
development
Identify plants, detect diseases, and provide biodynamic care recommendations using Pl@ntNet API. Supports image URLs and local files. Returns species name, confidence score, care tips aligned with lunar calendar, and treatment recommendations.