Aicoo Skills — Share Your AI Agent
Hero
Aicoo is your AI COO.
Sub
Powered by Pulse Protocol, Aicoo coordinates your agents with other agents — securely, efficiently, across boundaries.
Brand and compatibility model:
- Product + app brand: Aicoo
- Coordination layer: Pulse Protocol
- Root skill ID is
aicoo(legacy aliaspulsekept for backward compatibility)
Breaking Change (2026-04-16)
API model is now split:
- Aicoo OS layer (
/api/v1/os/*): notes, folders, snapshots, memory, todos, network, share - Tools layer (
/api/v1/tools): non-OS tools only (calendar, email, web, messaging, quality, MCP)
GET /api/v1/tools now returns namespace (not category).
Setup
Required: AICOO_API_KEY environment variable. Legacy PULSE_API_KEY is accepted as fallback.
Generate at: https://www.aicoo.io/settings/api-keys
API docs: https://www.aicoo.io/docs/api
Format: aicoo_sk_live_xxxxxxxx (prod) or aicoo_sk_test_xxxxxxxx (dev)
Base URL: https://www.aicoo.io/api/v1
Auth header:
Authorization: Bearer ${AICOO_API_KEY:-$PULSE_API_KEY}
Capability 1: Aicoo OS API (workspace-native)
Discover OS endpoints
curl -s "$PULSE_BASE/os" \
-H "Authorization: Bearer ${AICOO_API_KEY:-$PULSE_API_KEY}" | jq .
Browse workspace (ls -> ls -la -> cat)
# ls (returns owned + shared-with-me folders)
curl -s "$PULSE_BASE/os/folders" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
# ls -la (works for both owned and shared folders by folderId)
curl -s "$PULSE_BASE/os/notes?folderId=5&limit=20" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
# cat (access-checked — works for notes in shared folders too)
curl -s "$PULSE_BASE/os/notes/42" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
Shared folders have shared: true and role in the response. Use the same folderId for all operations.
Search, grep, create, edit, move, copy notes
# semantic search
curl -s -X POST "$PULSE_BASE/os/notes/search" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"investor pitch"}' | jq .
# deterministic grep-style search (regex/literal + line context)
curl -s -X POST "$PULSE_BASE/os/notes/grep" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"pattern":"titleKey|title_key","mode":"regex","caseSensitive":false,"contextBefore":5,"contextAfter":5}' | jq .
# create
curl -s -X POST "$PULSE_BASE/os/notes" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Project Roadmap","content":"# Q2 Plan\n\n..."}' | jq .
# edit
curl -s -X PATCH "$PULSE_BASE/os/notes/42" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Project Roadmap (Updated)","content":"# Updated\n\n..."}' | jq .
# move (mv)
curl -s -X POST "$PULSE_BASE/os/notes/42/move" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"folderName":"Technical"}' | jq .
# copy (cp)
curl -s -X POST "$PULSE_BASE/os/notes/42/copy" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"folderName":"Archive","title":"Roadmap Snapshot Copy"}' | jq .
Snapshots
# save snapshot
curl -s -X POST "$PULSE_BASE/os/snapshots/42" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"label":"Before update"}' | jq .
# list snapshots
curl -s "$PULSE_BASE/os/snapshots/42" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
# restore
curl -s -X POST "$PULSE_BASE/os/snapshots/42/restore" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"versionId":7}' | jq .
Network + share
# list links, visitors, contacts
curl -s "$PULSE_BASE/os/network" \
-H "Authorization: Bearer ${AICOO_API_KEY:-$PULSE_API_KEY}" | jq .
# create share link
curl -s -X POST "$PULSE_BASE/os/share" \
-H "Authorization: Bearer ${AICOO_API_KEY:-$PULSE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"scope":"all","access":"read","notesAccess":"read","label":"For investors","expiresIn":"7d","requireSignIn":true}' | jq .
Todos (OS-native)
# search/list
curl -s "$PULSE_BASE/os/todos?limit=20&completed=false" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
# create
curl -s -X POST "$PULSE_BASE/os/todos" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Prepare investor packet","priority":1}' | jq .
Capability 2: Tools API (non-OS skills)
Use /tools for integrations and non-OS skills.
# discover tools
curl -s "$PULSE_BASE/tools" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
# execute a tool
curl -s -X POST "$PULSE_BASE/tools" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tool":"search_calendar_events","params":{"query":"standup","timeRange":"today"}}' | jq .
Catalog fields:
name: executable tool idnamespace: logical domain (calendar,email,github,notion, ...)source: provider (native,mcp,composio)readWrite: access class (read/write)
Native namespaces
| Namespace | Example tools |
|---|---|
calendar | search_calendar_events, schedule_meeting |
email | search_emails, send_email |
web | web_search, read_url |
messaging | search_pulse_contact, send_message_to_human |
quality | refine_content, verify_uniqueness |
MCP servers appear in catalog with source: "mcp" and namespace set to server name (github, notion, etc.).
Integrations health + auth actions
# unified OAuth + MCP health surface
curl -s "$PULSE_BASE/tools/integrations" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
# disconnect OAuth integration by id
curl -s -X DELETE "$PULSE_BASE/tools/integrations/{id}" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
# disconnect MCP OAuth binding by server id
curl -s -X POST "$PULSE_BASE/tools/mcp/{id}/disconnect" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
/tools/integrations status enum is unified across OAuth + MCP:
connectedneeds_reauthdisconnectederror
No tokens are returned by this endpoint. Use it as the first health check.
MCP server lifecycle runbook (/tools/mcp)
# list MCP servers
curl -s "$PULSE_BASE/tools/mcp" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
# add MCP server
curl -s -X POST "$PULSE_BASE/tools/mcp" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Notion MCP","serverUrl":"https://<notion-mcp-server-url>","config":{}}' | jq .
# start OAuth (returns authorizeUrl)
curl -s -X POST "$PULSE_BASE/tools/mcp/{id}/authorize" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
# refresh health + discover tools after OAuth
curl -s -X POST "$PULSE_BASE/tools/mcp/{id}/refresh" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
Reusable setup assets:
assets/integrations/verified-mcps.mdassets/integrations/notion-mcp.template.json
Capability 3: Context Sync (bulk)
Use /accumulate for multi-file sync.
curl -s -X POST "$PULSE_BASE/accumulate" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"files": [
{"path": "Technical/architecture.md", "content": "# Architecture\n\n..."},
{"path": "General/about-me.md", "content": "# About Me\n\n..."}
]
}' | jq .
Capability 4: Identity Files
Identity files in memory/self/ shape runtime behavior:
memory/self/COO.mdmemory/self/USER.mdmemory/self/POLICY.md
Upload via /accumulate and keep them versioned like any other knowledge file.