TencentDB DatabaseClaw Skill

Data & APIs

This skill should be used when an AI agent or automated system needs to send messages to a TencentDB DatabaseClaw instance and receive streaming responses. It provides a verified Python client (scripts/chat.py) and complete TC3-HMAC-SHA256 signing reference for the CreateChatCompletion SSE API. Trigger on keywords: DatabaseClaw, DBClaw, clawins-, TDAI chat, agent-to-agent database query.

Install

openclaw skills install tencentdb-databaseclaw-skill

TencentDB-DatabaseClaw

Send messages to a DatabaseClaw instance via the CreateChatCompletion SSE API and receive streaming Agent responses.

When to Use

  • An AI agent needs to invoke DatabaseClaw for SQL execution, inspection, or data analysis
  • Building an AI workflow that integrates DatabaseClaw as a tool (LangChain / CrewAI / custom)
  • Verifying a DatabaseClaw instance is healthy by sending a test message
  • Cross-product function-calling where DBClaw acts as a backend tool

Not for: instance lifecycle management (isolate/restart/offline) — user must operate in the DatabaseClaw Console.

API Scope: This skill ONLY uses CreateChatCompletion (SSE chat) and CreateClawSession (create session for console visibility). No other APIs are supported.


Critical Facts (Must-Know Before Starting)

FactValue
SSE streaming hosttdai.ai.tencentcloudapi.com
Non-streaming host (list/describe)tdai.tencentcloudapi.com
Service name (for TC3 signing)tdai
API version2025-07-17
Action (chat)CreateChatCompletion
Action (session)CreateClawSession (non-streaming host)
Required body fieldsInstanceId, InputContent
Optional body fieldsChatId (pass SessionKey here to link with console session list)
Forbidden body fieldsAppId, Uin, OwnerUin, IdempotencyKey (identity derived from AK/SK)
Instance requirementStatus must be running
SSE end markerdata: [DONE]
Response wrapperFrames may be wrapped in {"Response": {...}} — unwrap before parsing
Heartbeat interval20 seconds (ignore these frames)
Recommended timeout120s (covers 99% cases); complex multi-region scans may take 60-90s
Timeout guidanceSimple Q&A: 2-5s; single query: 5-15s; multi-region scan: 30-90s

Domain split is the #1 pitfall: CreateChatCompletion MUST hit tdai.ai.tencentcloudapi.com. Using tdai.tencentcloudapi.com returns InternalError.


Workflow

Step 0: Ensure Instance is Running

Before using this skill, the target DatabaseClaw instance must be in running status. If the instance is not running (API returns an error like "实例状态异常"), guide the user to:

  1. Open the DatabaseClaw Console
  2. Locate the target instance and ensure it is in "运行中" status
  3. If the instance is stopped/isolated, click "重启" or "解除隔离" in the console

Important: This skill only uses the CreateChatCompletion API (and optionally CreateClawSession). Instance lifecycle operations (restart/isolate/offline) are NOT supported via this skill — the user must operate them in the console.

Step 1: Session Creation (Default Behavior)

By default, chat.py automatically calls CreateClawSession (on tdai.tencentcloudapi.com) to get a SessionKey before sending the message. This makes the conversation visible in the console's session list page (会话列表).

# Default: session is created automatically
python3 scripts/chat.py --instance-id $INSTANCE_ID --secret-id $SECRET_ID --secret-key $SECRET_KEY \
  --message "hello"

To skip session creation (conversation won't appear in console list):

python3 scripts/chat.py --instance-id $INSTANCE_ID --secret-id $SECRET_ID --secret-key $SECRET_KEY \
  --no-session --message "hello"

Step 2: Send Message (Programmatic)

Use scripts/chat.py — two output modes:

  • Default (clean): Only final Agent response on stdout. Ideal for piping into other tools or Agent integrations.
  • --verbose / -v: Shows tool calls, reasoning, and connection info on stderr. Ideal for debugging and development.
# Clean mode (default) — only final answer on stdout
python3 scripts/chat.py \
  --instance-id $INSTANCE_ID \
  --secret-id $SECRET_ID \
  --secret-key $SECRET_KEY \
  --message "查询近7天慢查询 TOP 10"

Omit --message for interactive multi-turn mode.

Verbose mode (show tool calls and intermediate steps on stderr):

python3 scripts/chat.py -v \
  --instance-id $INSTANCE_ID \
  --secret-id $SECRET_ID --secret-key $SECRET_KEY \
  --message "查询ap-shanghai的MySQL实例"

For internal dev gateway (no signing needed):

python3 scripts/chat.py \
  --internal \
  --instance-id $INSTANCE_ID \
  --message "SELECT 1"

Step 3: Parse SSE Stream

The response is a standard SSE stream (data: {json}\n\n). Key event types:

Event ObjectMeaningAction
(first frame, has ChatId)Connection establishedStore ChatId for multi-turn
claw.tool_callAgent calling a toolDisplay progress (optional)
claw.tool_resultTool execution completeDisplay result (optional)
claw.partial / chat.chunkText chunkAppend to output buffer
claw.final / FinishReason=stopStream completeClose connection
heartbeatKeep-alive (every 20s)Ignore
"Error" key in ResponseAPI errorLog and abort
data: [DONE]Hard stream endClose connection

Concatenate all Delta.Content values to form the complete Agent response.

Step 4: Integrate into Agent Framework

For Python integration with proper TC3 signing, see references/python-integration.md. The reference includes:

  • Verified tc3_sign() function
  • HTTP headers format
  • SSE stream parsing example
  • Error diagnosis table

Error Handling

ErrorCauseFix
InternalErrorWrong host (used tdai.tencentcloudapi.com)Switch to tdai.ai.tencentcloudapi.com
UnknownParameterBody contains AppId/Uin/OwnerUinRemove them; identity is from AK/SK
MissingParameter (InputContent)Missing required fieldAdd InputContent to body
AuthFailure.SignatureExpireTimestamp driftUse int(time.time()), never datetime.utcnow()
InvalidAuthorizationWrong credential_scopeMust be YYYY-MM-DD/tdai/tc3_request
Instance error in SSEInstance not runningGo to DatabaseClaw Console and ensure instance is in "运行中" status
Connection timeoutInstance stuckRestart instance via console, retry

TC3 Signing Checklist

When implementing TC3 signing manually (not using scripts/chat.py):

  1. Timestamp: int(time.time()) — never datetime.utcnow() (macOS timezone drift)
  2. SignedHeaders must include: content-type;host;x-tc-timestamp (alphabetical)
  3. credential_scope: {date}/tdai/tc3_request (service name = tdai)
  4. Host in canonical_headers: tdai.ai.tencentcloudapi.com (the SSE host)
  5. HTTP headers must include: X-TC-Action, X-TC-Version, X-TC-Region, X-TC-Timestamp, Authorization
  6. Accept header: text/event-stream

Full signing implementation: references/python-integration.md


Files

PathPurpose
scripts/chat.pyStandalone CLI client — single message or interactive mode, zero external deps beyond stdlib
references/python-integration.mdComplete TC3 signing code, HTTP headers, SSE parsing, error diagnosis