Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.agentbot.raveculture.xyz/llms.txt

Use this file to discover all available pages before exploring further.

Skills API

Use skill endpoints to extend your agents with specialized capabilities.

Base URL

https://agentbot.sh/api/skills

List skills

GET /api/skills
Returns all available skills in the marketplace. No authentication required for basic listing. When a valid session is present and agentId is provided, the response includes which skills are already installed for that user and agent.

Query parameters

ParameterTypeDescription
categorystringFilter by category. Use all or omit for all skills. Options: streaming, events, payments, finance, productivity, communication, development, channels, music, creative, marketing, ai
featuredstringSet to true to return only featured skills
searchstringCase-insensitive search across skill names and descriptions
agentIdstringAgent identifier or managed runtime openclawInstanceId. When provided with an authenticated session, the response includes an installedSkillIds array indicating which skills are already installed on this agent.

Response

{
  "skills": [
    {
      "id": "dj-streaming",
      "name": "baseFM DJ Streaming",
      "description": "Create baseFM streams, fetch live DJs, and generate ffmpeg broadcaster commands for agent DJs.",
      "category": "streaming",
      "author": "Agentbot",
      "downloads": 150,
      "rating": 4.8,
      "ratingCount": 12,
      "installs": 47,
      "userRating": 5,
      "featured": true,
      "code": "",
      "hasDownload": true,
      "scan": {
        "trustTier": "trusted",
        "riskLevel": "low",
        "installAllowed": true,
        "reasons": [],
        "warnings": [],
        "requiresManualReview": false
      }
    }
  ],
  "categories": [
    "streaming",
    "events",
    "payments",
    "finance",
    "productivity",
    "communication",
    "development",
    "channels",
    "music",
    "creative",
    "marketing",
    "ai"
  ],
  "featured": [],
  "installedSkillIds": ["dj-streaming", "guestlist"]
}
FieldTypeDescription
skillsarrayList of skill objects matching the query filters
skills[].downloadsnumberCumulative install counter on the skill record. Maintained for backwards compatibility — prefer installs for live engagement counts.
skills[].ratingnumberAverage user-submitted rating, rounded to one decimal place. Derived from real ratings posted via POST /api/skills/{skillId}/rating. Returns 0 when no users have rated the skill yet.
skills[].ratingCountnumberNumber of unique users who have submitted a rating for the skill.
skills[].installsnumberNumber of currently enabled installations across all users and agents. Computed from live InstalledSkill rows rather than the seeded downloads counter.
skills[].userRatingnumber | nullThe authenticated caller’s own rating for the skill (1–5), or null if they have not rated it. Always null when the request is unauthenticated.
skills[].codestringSkill handler code or configuration. Empty string for platform-authored skills without custom code.
skills[].hasDownloadbooleanWhether the skill has a downloadable package. true when the skill has handler code, an MCP server, or a widget configuration that can be exported via GET /api/skills/{skillId}/download. false for catalog-only skills that must be installed via the runtime.
skills[].scanobjectMarketplace safety scan result for the skill. See scan object for field details.
categoriesstring[]All distinct skill categories in the marketplace
featuredarraySubset of skills where featured is true. Each entry includes the same rating, ratingCount, installs, userRating, and scan fields.
installedSkillIdsstring[]IDs of skills installed and enabled for the authenticated user and the specified agentId. Returns an empty array when no session is present or agentId is omitted.
The rating, ratingCount, installs, and userRating fields are derived from live engagement records, not the seeded Skill columns. New skills with no user ratings return rating: 0 and ratingCount: 0. If the database is unreachable and the endpoint falls back to the default catalog, all four fields are returned as 0 (or null for userRating).

Install skill

POST /api/skills
Requires session authentication. Installs a skill on an agent.

Request body

FieldTypeRequiredDescription
skillIdstringYesID of the skill to install
agentIdstringYesID of the agent to install the skill on. This can be either a database agent ID or a managed runtime’s openclawInstanceId.

Managed runtime resolution

When agentId does not match an existing agent row in the database, the endpoint checks whether it corresponds to the authenticated user’s managed OpenClaw runtime (openclawInstanceId). If it does, a backing agent row is automatically created in the database before the skill is installed. This allows you to install skills on managed runtimes that have not yet been explicitly registered as agents. The auto-created agent uses the following defaults:
FieldValue
nameManaged OpenClaw Runtime
modelopenclaw
statusrunning
The agent row is created via an upsert, so subsequent skill installations on the same managed runtime reuse the existing row. The same resolution logic applies to the uninstall endpoint.

Idempotency

Installs are idempotent. Repeated installs of the same skill on the same agent do not surface generic failure errors:
  • If the skill is already installed and enabled for the agent, the endpoint returns 200 OK with alreadyInstalled: true and does not redeploy.
  • If a previous install record exists but was disabled (for example, after an earlier uninstall), it is re-enabled in place and the response message reflects that the skill was re-enabled.
  • If a concurrent install causes a duplicate-key conflict at the database layer, the endpoint returns 409 Conflict with code: "already_installed" and a clear, human-readable message instead of a generic install failure.

Response

When the skill is installed and deployed to the gateway successfully:
{
  "success": true,
  "installed": {
    "id": "inst_123",
    "skillId": "dj-streaming",
    "agentId": "agent_456",
    "installedAt": "2026-03-20T00:00:00Z"
  },
  "runtimeHydrated": false,
  "deployed": true,
  "message": "Skill installed successfully."
}
When a previously disabled install is re-enabled:
{
  "success": true,
  "installed": {
    "id": "inst_123",
    "skillId": "dj-streaming",
    "agentId": "agent_456",
    "installedAt": "2026-03-20T00:00:00Z"
  },
  "runtimeHydrated": false,
  "deployed": true,
  "message": "Skill re-enabled successfully."
}
When the skill is already installed and enabled for the agent:
{
  "success": true,
  "installed": {
    "id": "inst_123",
    "skillId": "dj-streaming",
    "agentId": "agent_456",
    "installedAt": "2026-03-20T00:00:00Z"
  },
  "alreadyInstalled": true,
  "runtimeHydrated": false,
  "deployed": false,
  "message": "This skill is already installed for this agent."
}
When the skill is saved but the agent is offline or the gateway is unreachable:
{
  "success": true,
  "installed": {
    "id": "inst_123",
    "skillId": "dj-streaming",
    "agentId": "agent_456",
    "installedAt": "2026-03-20T00:00:00Z"
  },
  "runtimeHydrated": false,
  "deployed": false,
  "deployWarning": "Gateway unreachable - skill saved to database and will sync automatically",
  "message": "Skill saved to the database and will sync to the runtime automatically."
}
FieldTypeDescription
successbooleanAlways true when the skill is saved to the database
installedobjectThe installation record
installed.idstringUnique installation identifier
installed.skillIdstringID of the installed skill
installed.agentIdstringID of the agent the skill was installed on
installed.installedAtstringISO 8601 timestamp of the installation
alreadyInstalledboolean | undefinedPresent and true when the skill was already installed and enabled for this agent. The endpoint returns the existing install record without redeploying. Omitted on fresh installs and re-enables.
runtimeHydratedbooleantrue when the agentId resolved to a managed OpenClaw runtime and a backing agent row was auto-created. false when the agent already existed in the database. See managed runtime resolution.
deployedbooleanWhether the skill was successfully deployed to the gateway. false when the agent is offline, the gateway is unreachable, or the skill was already installed (alreadyInstalled: true).
deployWarningstring | undefinedPresent only when deployed is false because of a gateway issue. Describes why the deployment did not complete. The skill is still saved and will sync automatically when the agent comes back online.
messagestringHuman-readable summary of the install outcome. Varies based on whether the install was new, re-enabled, already present, whether the runtime was hydrated, and whether the gateway deploy succeeded.

Errors

CodeError codeDescription
400Missing skillId or agentId
400Skill blocked by marketplace safety checks. The response includes a scan object with the reasons for the block. See scan object.
401Unauthorized
404Agent not found or skill not found
409already_installedA duplicate-key conflict was raised when creating the install record. Treat this as a successful install — the skill is already installed for this agent.
500install_failedInternal error. The response includes a generic install failure message suggesting the user refresh and try again, or open the OpenClaw skills manager for the agent.
Error responses for the 409 and 500 cases include a code field alongside error:
{
  "error": "This skill is already installed for this agent.",
  "code": "already_installed"
}
When a skill is blocked by safety checks, the response looks like this:
{
  "error": "Skill blocked by marketplace safety checks",
  "scan": {
    "trustTier": "blocked",
    "riskLevel": "blocked",
    "installAllowed": false,
    "reasons": ["Dynamic code execution via eval detected"],
    "warnings": [],
    "requiresManualReview": true
  }
}
A skill install is only considered active in the runtime when "deployed": true is returned. A "deployed": false response — whether from a gateway error, an unreachable runtime, or a 2xx body the gateway client rejects (for example, a runtime that returns "success": false) — means the install is saved to the database but has not been accepted by the live OpenClaw runtime. Use the agent sync endpoint to push installed skills to the runtime and confirm they are active.

Create skill

POST /api/skills/create
Requires session authentication. Creates a new custom skill in the marketplace. The skill becomes available to all users once created.

Request body

FieldTypeRequiredDescription
namestringYesDisplay name of the skill. Maximum 80 characters. Must be unique across the marketplace.
descriptionstringYesSummary of the skill’s capabilities. Maximum 600 characters.
categorystringNoCategory for the skill. Maximum 40 characters. Defaults to custom when omitted.
codestringNoSkill handler code or configuration. Maximum 2000 characters.
sourceUrlstringNoURL to the skill’s source code repository or homepage. Maximum 300 characters. Providing a source URL improves the skill’s trust tier during safety scanning.

Response

{
  "success": true,
  "skill": {
    "id": "clx9abc123",
    "name": "My Custom Skill",
    "description": "Analyzes track mix quality",
    "category": "custom",
    "code": "",
    "author": "user@example.com",
    "downloads": 0,
    "rating": 0,
    "featured": false,
    "mcpEnabled": false,
    "mcpConfig": null,
    "createdAt": "2026-04-02T12:00:00.000Z",
    "updatedAt": "2026-04-02T12:00:00.000Z"
  },
  "scan": {
    "trustTier": "review",
    "riskLevel": "medium",
    "installAllowed": true,
    "reasons": [],
    "warnings": ["Source URL missing"],
    "requiresManualReview": true
  }
}
FieldTypeDescription
skill.idstringUnique identifier for the created skill
skill.namestringDisplay name
skill.descriptionstringSkill description
skill.categorystringCategory (defaults to custom)
skill.codestringSkill handler code
skill.authorstringSet to the authenticated user’s display name or email
skill.downloadsnumberDownload count, starts at 0
skill.ratingnumberRating score, starts at 0
skill.featuredbooleanAlways false for user-created skills
skill.mcpEnabledbooleanWhether the skill has a bundled MCP server. Always false for user-created skills.
skill.mcpConfigobject | nullMCP server configuration. Always null for user-created skills.
skill.createdAtstringISO 8601 creation timestamp
skill.updatedAtstringISO 8601 last-updated timestamp
scanobjectMarketplace safety scan result. See scan object. Skills that fail the safety scan are rejected before creation.

Errors

CodeDescription
400Missing name or description, or a skill with the same name already exists
400Skill blocked by marketplace safety checks. The response includes a scan object with the reasons for the block. See scan object.
401Unauthorized
500Internal error

Uninstall skill

DELETE /api/skills
Requires session authentication. Removes a skill from an agent.

Request body

FieldTypeRequiredDescription
skillIdstringYesID of the skill to uninstall
agentIdstringYesID of the agent to uninstall the skill from. Accepts a managed runtime’s openclawInstanceId — see managed runtime resolution above.

Response

{
  "success": true,
  "runtimeHydrated": false,
  "message": "Skill removed successfully."
}
FieldTypeDescription
successbooleanAlways true when the skill is removed from the database
runtimeHydratedbooleantrue when the agentId resolved to a managed OpenClaw runtime. See managed runtime resolution.
messagestringHuman-readable summary of the uninstall outcome. Varies based on whether the runtime was hydrated.

Errors

CodeDescription
400Missing skillId or agentId
401Unauthorized
404Agent not found
500Internal error
The uninstall endpoint returns { "success": true } even when no matching installation exists. It does not return a 404 error for missing skill installations, though it does return 404 if the agent itself cannot be found.
When a skill is uninstalled, the updated agent state is automatically synced to the OpenClaw gateway. If the sync fails, the skill is still removed from the database — you can retry the sync manually using the agent sync endpoint.

Download skill

GET /api/skills/{skillId}/download
Requires session authentication. Downloads a skill as a portable JSON manifest. Use this endpoint when a user wants to export a packaged skill (handler code, MCP server config, or widget configuration) instead of installing it directly to a runtime. The response is delivered as a file download with Content-Disposition: attachment and a slugified filename derived from the skill name.

Path parameters

ParameterTypeDescription
skillIdstringID of the skill to download

Response

Returns a JSON manifest with Content-Type: application/json; charset=utf-8 and Cache-Control: no-store:
{
  "schema": "agentbot.skill.v1",
  "exportedAt": "2026-04-29T16:52:02.000Z",
  "skill": {
    "id": "clx9abc123",
    "name": "My Custom Skill",
    "description": "Analyzes track mix quality",
    "category": "custom",
    "author": "user@example.com",
    "code": "// skill handler code",
    "mcpEnabled": false,
    "mcpConfig": null,
    "widgetUrl": null,
    "widgetConfig": null
  }
}
FieldTypeDescription
schemastringManifest schema identifier. Currently always agentbot.skill.v1.
exportedAtstringISO 8601 timestamp when the manifest was generated
skillobjectThe exported skill payload
skill.idstringSkill identifier
skill.namestringDisplay name
skill.descriptionstringSkill description
skill.categorystringSkill category
skill.authorstringAuthor name
skill.codestringSkill handler code or configuration
skill.mcpEnabledbooleanWhether the skill bundles an MCP server
skill.mcpConfigobject | nullMCP server configuration, or null when not present
skill.widgetUrlstring | nullWidget URL, or null when not present
skill.widgetConfigobject | nullWidget configuration, or null when not present

Response headers

HeaderValue
Content-Typeapplication/json; charset=utf-8
Content-Dispositionattachment; filename="<slugified-skill-name>.agentbot-skill.json"
Cache-Controlno-store
The filename slug is derived from the skill name: lowercased, non-alphanumeric characters replaced with -, leading and trailing - trimmed, and capped at 80 characters. Skills with names that slugify to an empty string fall back to agentbot-skill.

Side effects

Each successful download increments the skill’s downloads counter by 1. The increment is best-effort and does not fail the download if the database update errors.
This endpoint returns the package only when the skill has at least one downloadable component: non-empty handler code, an MCP server (mcpEnabled: true), a widgetUrl, or a widgetConfig. Catalog-only skills without any of these fields return 404 with a message directing the caller to use install instead. Check the hasDownload field on the list skills response to determine whether a skill supports download.

Errors

CodeDescription
401Sign in to download skills — no authenticated session
404Skill not found
404This skill does not have a downloadable package yet. Use Install to sync it to your runtime. — the skill exists but has no exportable code, MCP config, or widget

Rate skill

POST /api/skills/{skillId}/rating
Requires session authentication. Submits or updates the authenticated user’s rating for a skill. Each user has at most one rating per skill — re-posting overwrites the previous rating in place. After the rating is recorded, the skill’s average rating is recomputed from all SkillRating rows and persisted on the skill record so it is reflected immediately in subsequent GET /api/skills responses.

Path parameters

ParameterTypeDescription
skillIdstringID of the skill to rate

Request body

FieldTypeRequiredDescription
ratingnumberYesWhole number from 1 to 5. Decimal values, values outside this range, and non-numeric values are rejected.

Response

{
  "success": true,
  "skillId": "clx9abc123",
  "userRating": 5,
  "rating": 4.8,
  "ratingCount": 12
}
FieldTypeDescription
successbooleanAlways true on a successful rating
skillIdstringThe skill that was rated
userRatingnumberThe rating the authenticated user just submitted (1–5)
ratingnumberNew average rating across all users, rounded to one decimal place. Returns 0 when no ratings exist (this can only happen if the rating was rejected before reaching this point).
ratingCountnumberTotal number of unique users who have rated the skill, including the current submission

Errors

CodeDescription
400rating is missing, not an integer, or outside the range 15
401Unauthorized — sign in to rate skills
404Skill not found
500Failed to save rating

Verify skill

POST /api/skills/verify
Runs a marketplace safety scan on a skill without creating or installing it. Use this endpoint to check whether a skill would pass safety checks before submitting it to the marketplace. No authentication required.

Request body

FieldTypeRequiredDescription
namestringYesDisplay name of the skill
descriptionstringNoSkill description
codestringNoSkill handler code or configuration
authorstringNoAuthor name
featuredbooleanNoWhether the skill is featured
sourceUrlstringNoURL to the skill’s source repository

Response

{
  "scan": {
    "trustTier": "verified",
    "riskLevel": "low",
    "installAllowed": true,
    "reasons": [],
    "warnings": ["Network access present"],
    "requiresManualReview": false
  }
}
FieldTypeDescription
scanobjectThe safety scan result. See scan object.

Errors

CodeDescription
500Internal error

Scan object

Every skill listed, created, or verified includes a scan object from the marketplace safety scanner. The scanner performs static analysis on skill code to detect potentially dangerous patterns.
FieldTypeDescription
trustTierstringOne of trusted, verified, review, or blocked. See trust tiers.
riskLevelstringOne of low, medium, high, or blocked
installAllowedbooleanWhether the skill can be installed. false when the skill is blocked.
reasonsstring[]List of reasons the skill was blocked. Empty when trustTier is not blocked.
warningsstring[]Informational warnings about patterns found in the skill code (for example, network access or filesystem access). These do not prevent installation.
requiresManualReviewbooleanWhether the skill should be reviewed by a human before being promoted or sold

Trust tiers

TierDescription
trustedReserved for platform-authored skills and manually approved partners. Auto-install allowed and eligible for featured placement.
verifiedUser-created skills with a source URL that pass static checks with minimal warnings. Install allowed, visible trust badge, eligible for paid distribution.
reviewSkills that pass hard blocks but have multiple warnings or no source URL. Discoverable and installable, but not promoted or eligible for paid distribution until reviewed.
blockedSkills that match dangerous code patterns (shell injection, eval, process execution, environment variable scraping, destructive commands, or direct IP endpoints). Cannot be created or installed.

Blocked patterns

The following patterns in skill code cause a skill to be blocked:
  • Piped shell execution (curl ... | bash)
  • Dynamic code execution (eval(), Function())
  • Process execution imports or calls (child_process, exec, spawn)
  • Destructive filesystem commands (rm -rf)
  • Direct environment variable access (process.env)
  • Direct IP-based remote endpoints

Available skills

Streaming

SkillEndpointDescription
baseFM DJ Streaming/dj-streamingCreate baseFM streams, fetch live DJs, and generate ffmpeg broadcaster commands for autonomous agent DJs

Events

SkillEndpointDescription
Guestlist Manager/guestlistManage event guestlists, RSVPs, check-ins, and capacity limits
Event Ticketing/event-ticketingSell tickets with USDC payments on Base via x402 protocol
Event Scheduler/event-schedulerSchedule events across Telegram, Discord, WhatsApp, and email with recurring support
Venue Finder/venue-finderFind venues worldwide with capacity and price filters
Festival Finder/festival-finderDiscover festivals globally, compare lineups, and get recommendations

Payments

SkillEndpointDescription
USDC Payments/usdc-paymentsAccept USDC payments on Base, generate payment links, and track transactions
Booking Settlement/booking-settlementEscrow and split execution for booking payments with auto-release on gig completion
Instant Split/instant-splitExecute royalty splits instantly in USDC on Base with configurable thresholds

Finance

SkillEndpointDescription
Community Treasury/treasuryTrack spending, reimbursements, and multi-sig treasury management
Royalty Tracker/royalty-trackerTrack streaming royalties across platforms in USDC
Crypto Price Alerts/crypto-price-alertsMonitor crypto prices and send alerts via Telegram or Discord when thresholds are hit
DeFi Portfolio/defi-portfolioTrack wallet holdings, LP positions, and yield farming across Base and Ethereum
Invoice Generator/invoice-generatorCreate and send invoices in USDC with payment tracking and reminders

Productivity

SkillEndpointDescription
Google Calendar/google-calendarSchedule events, manage availability, and set reminders with full Google Calendar sync. See the Calendar API for detailed endpoint documentation.
File Manager/file-managerUpload, download, and organize files with local storage integration
Google Workspace/google-workspaceGmail, Calendar, Drive, and Sheets integration
Notion/notionSync with Notion databases, pages, and workflows
CRM Helper/crm-helperTrack leads, follow-ups, and customer interactions across channels
Meeting Notes/meeting-notesAuto-generate meeting notes from Zoom and Google Meet transcripts

Communication

SkillEndpointDescription
Email/emailSend and receive emails with newsletter support

Development

SkillEndpointDescription
Webhooks/webhookConnect to any API with HTTP requests, webhooks, and integrations
Browser Automation/browserBrowse websites, fill forms, and scrape data autonomously
Chat SDK/chat-sdkMulti-platform bot SDK for building on Slack, Teams, Discord, Google Chat, GitHub, and Linear with a single TypeScript SDK
Sentry CLI/sentry-cliProduction error monitoring with issue management, log streaming, distributed tracing, and Sentry API access
Docker Containers/docker-containersBest practices for agent container isolation, persistent state, secret management, health checks, and resource limits
Stateful Agents/stateful-agentsPersistent state management with Prisma, real-time agent coordination, scheduled tasks, and Drizzle ORM migrations
Deploy CLI/deploy-cliCLI reference for agent provisioning, secrets management, log streaming, and deployment troubleshooting
Code Review/code-reviewReview agent code against production best practices covering security, state management, error handling, and anti-pattern detection

Channels

SkillEndpointDescription
Telegram/telegramConnect via Telegram with bot commands, messages, and groups
Discord/discordConnect via Discord with slash commands, embeds, and voice channels
WhatsApp/whatsappConnect via WhatsApp with message templates, media, and status updates
WhatsApp Business/whatsapp-businessFull WhatsApp Business API with automated replies, labels, and catalogs
Slack/slackPost to channels, create threads, and handle slash commands

Music

SkillEndpointDescription
Track Archaeologist/track-archaeologistDeep catalog search via BlockDB similarity search
Setlist Oracle/setlist-oracleBPM, key, and energy analysis to build DJ sets with Camelot mixing
Demo Submitter/demo-submitterSubmit demos to Base FM for airplay consideration
Spotify Analytics/spotify-analyticsTrack streams, followers, and playlist placements with a cross-platform analytics dashboard
SoundCloud Manager/soundcloud-managerUpload tracks, manage likes, track reposts, and analyze audience demographics
Bandcamp Sync/bandcamp-syncSync releases, track sales, and manage merchandise across Bandcamp

Creative

SkillEndpointDescription
Visual Synthesizer/visual-synthesizerGenerate release artwork and social media assets using Stable Diffusion XL
AI Image Generator/ai-image-generatorGenerate images via Stable Diffusion, DALL-E, or Midjourney with batch processing
Video Editor/video-editorAuto-edit video clips with transitions, captions, and background music
Podcast Producer/podcast-producerAuto-edit podcasts, remove filler words, and add intro/outro music
Video Generator/video-generatorGenerate videos via xAI Grok, Runway, or Wan for social media and marketing
Music Generator/music-generatorCreate original music with Google Lyria or MiniMax with async generation and follow-up delivery
ComfyUI Workflows/comfyui-workflowsRun ComfyUI workflows locally or on Comfy Cloud for image, video, and music generation

Marketing

SkillEndpointDescription
Groupie Manager/groupie-managerFan segmentation, lifecycle tracking, and automated merch drop campaigns
Content Calendar/content-calendarPlan and schedule social media posts across all platforms
SEO Analyzer/seo-analyzerAnalyze website SEO, suggest keywords, and audit backlinks
Affiliate Tracker/affiliate-trackerTrack affiliate links, clicks, and conversions across networks

AI

SkillEndpointDescription
Qwen AI/qwen-aiUse Qwen models for chat, reasoning, and tool calling with fast inference
Fireworks AI/fireworks-aiAccess Fireworks AI models for generation and reasoning with high-throughput inference
Bedrock Mantle/bedrock-mantleUse Amazon Bedrock Mantle models with automatic inference profile discovery

Production availability

The following skill routes are demo-only and are disabled in production by default:
  • Booking Settlement (/booking-settlement)
  • Demo Submitter (/demo-submitter)
  • Event Scheduler (/event-scheduler)
  • Event Ticketing (/event-ticketing)
  • Festival Finder (/festival-finder)
  • Groupie Manager (/groupie-manager)
  • Instant Split (/instant-split)
  • Royalty Tracker (/royalty-tracker)
  • Setlist Oracle (/setlist-oracle)
  • Track Archaeologist (/track-archaeologist)
  • Venue Finder (/venue-finder)
When called in production without the ENABLE_DEMO_SKILLS environment variable set to true, these routes return 501 with the following response:
{
  "error": "disabled_in_production",
  "message": "{skill-name} is a demo route and is disabled in production."
}
To enable demo skill routes in production, set the ENABLE_DEMO_SKILLS=true environment variable. In non-production environments, all skill routes are available without this flag.

Use a skill

POST /api/skills/{skill-name}

Visual Synthesizer

{
  "prompt": "dark techno album cover",
  "style": "industrial"
}

Track Archaeologist

{
  "action": "search",
  "bpm": 128,
  "genre": "techno",
  "mood": "dark"
}

Setlist Oracle

{
  "action": "build",
  "genre": "house",
  "duration": 120
}

Groupie Manager

{
  "action": "segment"
}

Royalty Tracker

{
  "action": "total"
}

Demo Submitter

{
  "action": "submit",
  "title": "My Track",
  "artist": "My Name"
}

Event Ticketing

{
  "action": "purchase",
  "eventId": "e1",
  "email": "fan@example.com",
  "tier": "vip"
}

Event Scheduler

{
  "action": "schedule",
  "title": "Newsletter",
  "date": "2026-03-20",
  "time": "18:00",
  "channels": ["telegram", "email"]
}

Venue Finder

{
  "action": "search",
  "city": "London",
  "type": "underground",
  "capacity": 200,
  "maxPrice": 500
}

Festival Finder

{
  "action": "search",
  "genre": "techno",
  "country": "UK",
  "maxPrice": 350
}

Booking Settlement

Manage booking escrow, fund releases, and settlement simulations. Actions: list, get, create_escrow, release_funds, simulate_settlement
{
  "action": "create_escrow",
  "bookingId": "bk_1"
}
{
  "action": "release_funds",
  "bookingId": "bk_1"
}
{
  "action": "simulate_settlement",
  "booking": {
    "guarantee": 500,
    "backend": 200,
    "deposit": 100
  }
}

Instant Split

Execute royalty splits instantly in USDC on Base. Actions: list_pending, create_split_rule, execute_split, get_balance, simulate
{
  "action": "execute_split",
  "splitId": "split_1"
}
{
  "action": "create_split_rule",
  "splits": {
    "recipientAddress": "0x...",
    "percentage": 50,
    "role": "artist",
    "name": "Artist"
  },
  "threshold": 50
}
{
  "action": "simulate",
  "streams": 100000,
  "rate": 0.003
}

Response format

{
  "success": true
}
Each skill returns additional data specific to its function alongside the success field.

Errors

CodeDescription
400Invalid request parameters
404Skill not found
500Internal error
501Demo skill route is disabled in production. Set ENABLE_DEMO_SKILLS=true to enable. See production availability.