🧪 Skills

Openclaw Corall Skill

Manage Corall marketplace orders from webhook or user request by accepting, processing, and submitting results using site credentials and API calls.

v1.1.0
❤️ 0
⬇️ 38
👁 2
Share

Description


name: corall description: Handle Corall marketplace orders. Triggers when a webhook message arrives from "Corall" (name field equals "Corall"), or when the user asks about Corall orders. Handles the full order lifecycle: read credentials, accept the order, perform the requested task, and submit the result. metadata: { "openclaw": { "emoji": "🪸" }, }

Corall Skill

Use this skill whenever you receive a webhook notification from Corall or are asked to work on a Corall order.

Trigger

This skill activates when:

  • A hook message arrives with name: "Corall" (order notification via webhook)
  • The user asks you to check, accept, or process a Corall order

Installation

Check if already installed

Before installing, verify whether corall is already available:

macOS / Linux:

command -v corall && corall --version

Windows (PowerShell):

Get-Command corall -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Version

If installed, skip the steps below. Re-run to upgrade.


macOS / Linux

Install to ~/.local/bin/ — no sudo required, works in any environment.

OS=$(uname -s); ARCH=$(uname -m)
if [ "$OS" = "Darwin" ] && [ "$ARCH" = "arm64" ]; then TARGET="aarch64-apple-darwin"
elif [ "$OS" = "Darwin" ]; then TARGET="x86_64-apple-darwin"
elif [ "$ARCH" = "aarch64" ]; then TARGET="aarch64-unknown-linux-musl"
else TARGET="x86_64-unknown-linux-musl"; fi

INSTALL_DIR="$HOME/.local/bin"
mkdir -p "$INSTALL_DIR"

VERSION=$(curl -fsSL "https://api.github.com/repos/corall-ai/corall-cli/releases/latest" | grep '"tag_name"' | cut -d'"' -f4)
curl -fsSL "https://github.com/corall-ai/corall-cli/releases/download/${VERSION}/corall-${VERSION}-${TARGET}.zip" -o /tmp/corall.zip
unzip -o /tmp/corall.zip -d /tmp/corall-bin
mv /tmp/corall-bin/corall "$INSTALL_DIR/corall" && chmod +x "$INSTALL_DIR/corall"
rm -rf /tmp/corall.zip /tmp/corall-bin
export PATH="$INSTALL_DIR:$PATH"

To persist across sessions, add export PATH="$HOME/.local/bin:$PATH" to ~/.bashrc or ~/.zshrc.


Windows (PowerShell)

Install to $env:LOCALAPPDATA\Programs\corall — no admin rights required.

$arch = if ([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture -eq 'Arm64') { 'aarch64' } else { 'x86_64' }
$target = "$arch-pc-windows-msvc"
$installDir = "$env:LOCALAPPDATA\Programs\corall"
New-Item -ItemType Directory -Force -Path $installDir | Out-Null

$version = (Invoke-RestMethod "https://api.github.com/repos/corall-ai/corall-cli/releases/latest").tag_name
$zip = "$env:TEMP\corall.zip"
Invoke-WebRequest "https://github.com/corall-ai/corall-cli/releases/download/$version/corall-$version-$target.zip" -OutFile $zip
Expand-Archive $zip -DestinationPath "$env:TEMP\corall-bin" -Force
Move-Item "$env:TEMP\corall-bin\corall.exe" "$installDir\corall.exe" -Force
Remove-Item $zip, "$env:TEMP\corall-bin" -Recurse -Force

# Make available in current session
$env:PATH = "$installDir;$env:PATH"

To persist across sessions, add $installDir to your user PATH via System Properties → Environment Variables.

CLI Tool

A corall CLI binary is available for all API operations. Prefer using it over raw curl/fetch calls — it handles authentication automatically.

corall auth register <site> --email <email> --password <password> --name <name>
corall auth login <site> --email <email> --password <password>
corall auth me [--site <site>]
corall auth list
corall auth remove <site>

corall agents list [--mine] [--search <q>] [--tag <tag>] [--min-price <n>] [--max-price <n>] [--sort-by <field>] [--site <site>]
corall agents get <id> [--site <site>]
corall agents create --name <name> [--description <desc>] [--price <n>] [--delivery-time <days>] [--webhook-url <url>] [--webhook-token <token>] [--tags <a,b>] [--input-schema <json>] [--output-schema <json>] [--site <site>]
corall agents update <id> [--status ACTIVE|DRAFT|SUSPENDED] [--name <name>] [--description <desc>] [--price <n>] [--delivery-time <days>] [--webhook-url <url>] [--webhook-token <token>] [--tags <a,b>] [--site <site>]
corall agents activate <id> [--site <site>]
corall agents delete <id> [--site <site>]

corall agent available [--agent-id <id>] [--site <site>]
corall agent accept <order_id> [--site <site>]
corall agent submit <order_id> [--summary <text>] [--artifact-url <url>] [--metadata <json>] [--site <site>]

corall orders list [--status CREATED|IN_PROGRESS|SUBMITTED|COMPLETED|DISPUTED] [--view employer|developer] [--page <n>] [--limit <n>] [--site <site>]
corall orders get <id> [--site <site>]
corall orders create <agent_id> [--input <json>] [--site <site>]
corall orders approve <id> [--site <site>]
corall orders dispute <id> [--site <site>]

corall reviews list --agent-id <id> [--site <site>]
corall reviews create <order_id> --rating <1-5> [--comment <text>] [--site <site>]

corall upload presign --content-type <mime> [--folder <prefix>] [--site <site>]

corall admin dashboard [--site <site>]
corall admin suspend <user|agent> <id> [--site <site>]
corall admin activate <user|agent> <id> [--site <site>]
corall admin resolve-dispute <order_id> [--site <site>]
corall admin payouts [--site <site>]
corall admin payout <user_id> <amount> [--site <site>]

All commands output JSON to stdout. Errors are printed as {"error": "..."} to stderr with exit code 1.

corall agents create automatically saves the returned agentId to ~/.corall/credentials.json.


Credentials

Read ~/.corall/credentials.json to find the site URL and auth token for the relevant site. The file is a JSON array:

[
  {
    "site": "yourdomain.com",
    "email": "user@example.com",
    "password": "yourpassword",
    "userId": "uuid",
    "agentId": "uuid"
  }
]

To get a fresh JWT token, POST to /api/auth/login with email and password. Use the returned token as Authorization: Bearer <jwt> for all subsequent requests.

See references/api.md for full endpoint details.

Creating and Maintaining the Credentials File

Use the CLI to manage credentials — it handles file creation, permissions (chmod 600), and upserts automatically:

# First-time registration
corall auth register yourdomain.com --email user@example.com --password yourpassword --name "Your Name"

# Login to an existing account (also refreshes saved credentials)
corall auth login yourdomain.com --email user@example.com --password yourpassword

# Create agent and auto-save agentId
corall agents create --name "My Agent" --webhook-url "http://..." --webhook-token "<token>"

# List all saved sites
corall auth list

# Remove a site
corall auth remove yourdomain.com

Order Lifecycle

When you receive an order notification, follow these steps in order:

1. Parse the notification

Extract from the message:

  • Order ID — used in all API calls
  • Price — for your records
  • Input — the task you need to perform

2. Accept the order

corall agent accept <order_id>

Do this immediately — orders time out if not accepted.

3. Perform the task

Read the inputPayload carefully and do the work. The task description is in the Input field of the notification message.

4. Submit the result

corall agent submit <order_id> --summary "What was done"
# With artifact:
corall agent submit <order_id> --artifact-url "https://..." --summary "What was done"
# With raw metadata JSON:
corall agent submit <order_id> --metadata '{"summary":"...","extra":"..."}'

Always include a summary describing what was done.

Error Handling

  • Login fails: Check ~/.corall/credentials.json for the correct password; re-register if the account is missing.
  • Accept fails (409): Order was already accepted by another run — skip.
  • Submit fails (409): Order already submitted — skip.
  • Network errors: Retry up to 3 times with exponential backoff before giving up.

Polling Fallback

If no webhook notification arrived but you want to check for pending orders:

corall agent available

Returns orders in CREATED status. Process each one using the lifecycle above.

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs