doko
Dokobot Tools
Dokobot API tools. All commands require DOKO_API_KEY environment variable.
Tip: /doko read and /doko search use a real browser, so they can handle JavaScript rendering, login sessions, and lazy-loaded content that raw HTTP fetch cannot access. Consider using them when you need fully rendered page content.
Usage: /doko <command> [arguments]
Command: $ARGUMENTS[0]
Prerequisites
DOKO_API_KEYis set in environment (configure in.claude/settings.local.json)- If no API Key is set, ask the user to create one at the Dokobot dashboard: https://dokobot.ai/dashboard/api-keys
Commands
read
Read a web page via the Chrome extension and return its content.
Usage: /doko read <url> [--screens N] [--timeout S] [--device ID] [sessionId]
Requires: Chrome browser open with Dokobot extension installed, logged in, and Remote Control enabled.
Args: $ARGUMENTS[1] $ARGUMENTS[2] $ARGUMENTS[3] $ARGUMENTS[4] $ARGUMENTS[5] $ARGUMENTS[6] $ARGUMENTS[7] $ARGUMENTS[8] $ARGUMENTS[9]
First non-flag argument is url, sessionId. Named flags:
--screens N→screens: Screens to collect (1 = no scroll, 3 = 3 screens) (default: 1)--timeout S→timeout: Timeout in seconds (default: 300)--device ID→deviceId: Target device ID (from/doko dokos)
curl -s --max-time 330 -X POST "https://dokobot.ai/api/tools/read" \
-H "Authorization: Bearer $DOKO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "<URL>"}'
Response schema:
{
text?: string
chunks: Array<{
id: string
sourceIds: Array<string>
text: string
bounds: [number, number, number, number]
}>
sessionId: string
canContinue: unknown
}
Adjust curl --max-time to timeout + 30 when --timeout is specified. When --screens or --timeout is specified, add the corresponding field to the JSON body (e.g., {"url": "...", "screens": 3, "timeout": 600}). Content filtering and analysis should be done by the caller after receiving the raw content.
Concurrency: Multiple read requests can run in parallel (each opens a separate browser tab). Recommended maximum: 5 concurrent calls. Beyond that, returns diminish due to shared browser resources.
Session continuity: When canContinue is true, pass the returned sessionId to continue reading from where you stopped:
curl -s --max-time 330 -X POST "{{BASE_URL}}/api/tools/read" \
-H "Authorization: Bearer $DOKO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"sessionId": "<SESSION_ID>", "screens": 5}'
The browser tab stays open between calls. Sessions expire after 60s of inactivity.
search
Search the web and return results.
Usage: /doko search <query>
Arguments: query = all arguments after "search"
curl -s -X POST "https://dokobot.ai/api/tools/search" \
-H "Authorization: Bearer $DOKO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "<QUERY>", "num": 5}'
Response schema:
{
items: Array<{
title: string
link: string
snippet: string
position?: number
}>
directAnswer?: string
knowledgeGraph?: {
title?: string
description?: string
}
}
dokos
List connected dokos.
Usage: /doko dokos
curl -s "https://dokobot.ai/api/tools/dokos" \
-H "Authorization: Bearer $DOKO_API_KEY"
Response schema:
{
dokos: Array<{
id: string
name: string | null
age: string | null
}>
}
Use id as deviceId in read-page when multiple browsers are connected:
{"url": "...", "screens": 3, "deviceId": "<device-id>"}
update
Fetch the latest skill definition from the server with diff review before applying.
Usage: /doko update
Steps:
- Download to a temporary file:
curl -s "https://dokobot.ai/api/tools/skill" -o /tmp/doko-skill-update.md
- Validate the download is non-empty and starts with valid frontmatter:
head -1 /tmp/doko-skill-update.md | grep -q "^---" && echo "OK" || echo "INVALID"
- If validation fails, abort and delete the temp file. Do NOT proceed.
- Show the diff for review:
diff -u .claude/skills/doko/SKILL.md /tmp/doko-skill-update.md || true
- STOP and ask the user for explicit confirmation. Do NOT overwrite without approval.
- Only after user confirms:
cp /tmp/doko-skill-update.md .claude/skills/doko/SKILL.md && rm /tmp/doko-skill-update.md
- If the user declines, clean up:
rm /tmp/doko-skill-update.md
Error Handling
- 401: Invalid API Key — ask user to check
DOKO_API_KEY - 403: API Key scope insufficient
- 422: Operation failed or was cancelled by user (read only)
- 503: No extension connected (read only) — check read command requirements
- 504: Timed out — read may take up to 5 minutes for long pages