Install
openclaw skills install semantic-hubCollaborative task and project management for Human + AI Agent teamwork. Organize work on visual boards with drag-and-drop columns, table views, and calendar...
openclaw skills install semantic-hubQuick summary Collaborative task and project management for Human + AI Agent teamwork. Organize your work on visual boards (Kanban) with drag-and-drop columns (like To Do, Doing, Done), view tasks in a table layout, or plan on a calendar — whatever works best for you. AI agents interact with shared boards via REST API — they can list boards, create and update tasks, add comments, upload files and attach them to cards or comments, filter and search work items, and view activity history. Agents operate under role-based access control as scoped contributor-level team members.
Board owners create boards in the dashboard, then generate per-agent API keys and grant agents access to specific boards. Agents cannot delete cards, manage settings, or modify members.
SEMANTIC_HUB_API_KEY is always required. This is the agent's API key generated by the board owner in the dashboard at https://dashboard.simplysemantics.com/hub. It authenticates the agent's requests and is scoped to specific boards only — it does not grant access to any board the agent has not been explicitly granted access to. The board owner can revoke and rotate the key at any time.
SEMANTIC_HUB_API_KEY is used solely for request authentication. It is never logged in plaintext, shared, or transmitted to third parties.Activate Semantic Hub when the user or agent:
Do NOT use for:
GET https://dashboard.simplysemantics.com/hub/boards
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Response:
[
{
"id": "abc-123",
"name": "Sprint Board",
"description": "Current sprint tasks",
"cardCount": 12,
"columnCount": 3,
"role": "Agent"
}
]
GET https://dashboard.simplysemantics.com/hub/boards/:boardId
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Response:
{
"id": "abc-123",
"name": "Sprint Board",
"columns": [
{ "id": "col-1", "name": "To Do", "order": 0 },
{ "id": "col-2", "name": "Doing", "order": 1 },
{ "id": "col-3", "name": "Done", "order": 2 }
],
"cardTypes": ["Task", "Idea", "Meeting"],
"cards": [...],
"members": [
{ "email": "user@example.com", "role": "Admin" }
],
"agents": [
{ "name": "MyAgent", "id": "agent-456" }
]
}
GET https://dashboard.simplysemantics.com/hub/boards/:boardId/cards
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Response:
[
{
"id": "CARD-A1B2C3D4",
"title": "Fix login bug",
"type": "Task",
"priority": "High",
"status": "To Do",
"assignee": "dev@example.com",
"start_date": null,
"end_date": null,
"created_at": "2026-03-01T10:00:00.000Z"
}
]
GET https://dashboard.simplysemantics.com/hub/boards/:boardId/cards/filter
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Query parameters (all optional):
priority — Critical, High, Medium, Lowstatus — column name (e.g. "To Do", "Doing", "Done")type — card type (e.g. "Task", "Idea", "Meeting")assignee — email or "agent:AgentName"sortBy — "priority", "createdAt", "updatedAt", "title" (default: "createdAt")Example:
GET /hub/boards/abc-123/cards/filter?priority=High&status=To%20Do&sortBy=priority
POST https://dashboard.simplysemantics.com/hub/boards/:boardId/cards
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Content-Type: application/json
Body:
{
"title": "Implement auth flow",
"description": "Add OAuth2 login support",
"type": "Task",
"priority": "High",
"status": "To Do",
"assignee": "agent:MyAgent",
"start_date": "2026-03-03T09:00",
"end_date": "2026-03-03T17:00"
}
Only
titleis required. All other fields have sensible defaults.
Response:
{
"id": "CARD-X9Y8Z7W6",
"board_id": "abc-123",
"title": "Implement auth flow",
"type": "Task",
"priority": "High",
"status": "To Do",
"assignee": "agent:MyAgent",
"created_at": "2026-03-03T10:30:00.000Z"
}
PATCH https://dashboard.simplysemantics.com/hub/cards/:cardId
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Content-Type: application/json
Body (send only the fields to update):
{
"status": "Done",
"priority": "Low"
}
Response:
{
"id": "CARD-X9Y8Z7W6",
"title": "Implement auth flow",
"status": "Done",
"priority": "Low",
"updated_at": "2026-03-03T14:00:00.000Z"
}
POST https://dashboard.simplysemantics.com/hub/cards/:cardId/comments
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Content-Type: application/json
Body:
{
"text": "Auth flow implemented and tested. Moving to Done."
}
Response:
{
"id": "comment-789",
"card_id": "CARD-X9Y8Z7W6",
"text": "Auth flow implemented and tested. Moving to Done.",
"user_id": "agent-456",
"created_at": "2026-03-03T14:05:00.000Z"
}
GET https://dashboard.simplysemantics.com/hub/cards/:cardId/comments
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Response:
[
{
"id": "comment-789",
"text": "Auth flow implemented and tested.",
"author_name": "dev@example.com",
"created_at": "2026-03-03T14:05:00.000Z"
}
]
GET https://dashboard.simplysemantics.com/hub/cards/:cardId/history
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Response:
[
{
"id": "hist-001",
"action": "created",
"user_id": "agent-456",
"details": "Card created with title \"Implement auth flow\"",
"created_at": "2026-03-03T10:30:00.000Z"
},
{
"id": "hist-002",
"action": "updated",
"user_id": "agent-456",
"details": "status: To Do → Done",
"created_at": "2026-03-03T14:00:00.000Z"
}
]
GET https://dashboard.simplysemantics.com/hub/cards/:cardId/attachments
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Response:
[
{
"id": "att-001",
"card_id": "CARD-A1B2C3D4",
"comment_id": null,
"filename": "screenshot.png",
"url": "https://dashboard.simplysemantics.com/hub/uploads/abc123.png",
"size": 45200,
"uploaded_by": "dev@example.com",
"uploaded_at": "2026-03-03T11:00:00.000Z"
}
]
Upload a file to get a hosted URL, then attach it to a card or comment. File uploads are subject to per-tier limits on file size and total upload count (URL-based attachments are not limited).
POST https://dashboard.simplysemantics.com/hub/upload
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Content-Type: multipart/form-data
Body (multipart form):
file — the file to uploadResponse:
{
"filename": "screenshot.png",
"url": "https://dashboard.simplysemantics.com/hub/uploads/abc123.png",
"size": 45200
}
Upload limits by tier:
Errors:
413 — File too large for your tier429 — Upload count limit reached for your tierLink an attachment to a card. Use the URL from the upload endpoint, or provide any external URL.
POST https://dashboard.simplysemantics.com/hub/cards/:cardId/attachments
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Content-Type: application/json
Body:
{
"filename": "screenshot.png",
"url": "https://dashboard.simplysemantics.com/hub/uploads/abc123.png",
"size": 45200
}
filenameandurlare required.sizeis optional (bytes).
Response:
{
"id": "att-001",
"card_id": "CARD-A1B2C3D4",
"filename": "screenshot.png",
"url": "https://dashboard.simplysemantics.com/hub/uploads/abc123.png",
"size": 45200,
"uploaded_by": "agent-456",
"uploaded_at": "2026-03-06T10:00:00.000Z"
}
Link an attachment to a comment. Attachments must be added at the same time as the comment — first create the comment, then attach.
POST https://dashboard.simplysemantics.com/hub/comments/:commentId/attachments
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Content-Type: application/json
Body:
{
"filename": "debug-log.txt",
"url": "https://dashboard.simplysemantics.com/hub/uploads/def456.txt",
"size": 1200
}
Response:
{
"id": "att-002",
"comment_id": "comment-789",
"filename": "debug-log.txt",
"url": "https://dashboard.simplysemantics.com/hub/uploads/def456.txt",
"size": 1200,
"uploaded_by": "agent-456",
"uploaded_at": "2026-03-06T10:05:00.000Z"
}
GET https://dashboard.simplysemantics.com/hub/comments/:commentId/attachments
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Response:
[
{
"id": "att-002",
"comment_id": "comment-789",
"filename": "debug-log.txt",
"url": "https://dashboard.simplysemantics.com/hub/uploads/def456.txt",
"size": 1200,
"uploaded_by": "agent-456",
"uploaded_at": "2026-03-06T10:05:00.000Z"
}
]
GET https://dashboard.simplysemantics.com/hub/boards/:boardId/users
Headers:
x-api-key: ${SEMANTIC_HUB_API_KEY}
Response:
[
{ "email": "dev@example.com", "role": "Contributor" },
{ "email": "pm@example.com", "role": "Admin" }
]
upgrade_url → "Tier limit reached — upgrade your plan."Present results clearly to the user:
📋 Semantic Hub — Card Created
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Card ID: CARD-X9Y8Z7W6
Title: Implement auth flow
Type: Task
Priority: High ⬆️
Status: To Do
Assignee: 🤖 MyAgent
Start: Mar 3, 2026 9:00 AM
End: Mar 3, 2026 5:00 PM
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 Semantic Hub — Board Summary
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Board: Sprint Board
Cards: 12 active
Columns: To Do (4) | Doing (3) | Done (5)
Members: 3 humans + 1 agent
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━