🧪 Skills
Baserow
Work with Baserow tables/rows over the REST API for reads, inserts, and updates. Use when user asks to view or modify Baserow CRM/pipeline data.
v1.0.0
Description
name: baserow description: Work with Baserow tables/rows over the REST API for reads, inserts, and updates. Use when user asks to view or modify Baserow CRM/pipeline data. metadata: { "openclaw": { "requires": { "bins": ["python3"] }, "env": ["BASEROW_BASE_URL", "BASEROW_TOKEN"] } }
Baserow Skill
Use Baserow REST API directly via Python stdlib (urllib). API docs: https://baserow.ericbone.me/api-docs/database/265
Local auth convention (this workspace)
Primary env vars in ~/.openclaw/.env:
BASEROW_BASE_URL=https://baserow.ericbone.meBASEROW_TOKEN=<personal API token>(static; no expiry)
Auth header for DB calls:
Authorization: Token <BASEROW_TOKEN>
Core API patterns
Base endpoint:
$BASEROW_BASE_URL/api/database/rows/table/{table_id}/
Always include: ?user_field_names=true
Renpho CRM table map (DB 265)
827Sales Pipeline (BD Opportunity table)828Opportunity Line Items829Contacts830Interactions831Account Execution
Operating conventions (Renpho)
- For inbound/outbound emails that are active deal motion: log in Interactions (830) and link Contact + Opportunity.
- Create/update a Sales Pipeline (827) opportunity for real BD opportunities.
- BD Inbox field can be used for intake linkage when that inbox object is present, but in-progress opportunity work should still live in Pipeline + Interactions.
- Keep Interactions to real sales interactions (no LinkedIn enrichment spam).
⚠️ Critical: .env Must Have Real Newlines
The .env file must use real newlines between vars, NOT \n literals:
BASEROW_BASE_URL="https://baserow.ericbone.me"
BASEROW_TOKEN="mOsuizlNhyUWclr7xKjIgxJxdMPVmkNy"
If written by an agent (e.g. write tool), verify with cat ~/.openclaw/.env — literal \n breaks export $(grep ...) silently.
⚠️ Use curl for Writes (PATCH/POST), Python for Reads
Python urllib returns 403 on PATCH/POST against this Baserow instance. Use curl for all writes. Python urllib is fine for GET/reads.
Minimal examples
List rows (Python OK for reads)
export $(grep -v '^#' ~/.openclaw/.env | xargs) && python3 - <<'PY'
import os, json, urllib.request
base=os.environ['BASEROW_BASE_URL'].rstrip('/')
token=os.environ['BASEROW_TOKEN']
table=829
url=f"{base}/api/database/rows/table/{table}/?user_field_names=true&size=50"
req=urllib.request.Request(url, headers={"Authorization": f"Token {token}"})
with urllib.request.urlopen(req, timeout=30) as r:
print(json.dumps(json.load(r), indent=2)[:8000])
PY
Create row (use curl)
source ~/.openclaw/.env # or export from .env
curl -s -X POST \
-H "Authorization: Token $BASEROW_TOKEN" \
-H "Content-Type: application/json" \
-d '{"Interaction title":"Example","Type":"Email","Sales Pipeline":[5],"Contact":[3]}' \
"$BASEROW_BASE_URL/api/database/rows/table/830/?user_field_names=true"
Update row (use curl)
source ~/.openclaw/.env
curl -s -X PATCH \
-H "Authorization: Token $BASEROW_TOKEN" \
-H "Content-Type: application/json" \
-d '{"Blockers":"Updated blocker text","Last Touch":"2026-02-24"}' \
"$BASEROW_BASE_URL/api/database/rows/table/827/5/?user_field_names=true"
Safety
- Confirm table + row targets before bulk updates/deletes.
- Prefer small scoped updates and echo changed fields.
- Treat Baserow as source-of-truth for Renpho sales workflow (DB 265).
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!