Integrate AI assistants and automation tools with your CloudNerve workspace. Add links, organize categories, and manage your cloud dashboard programmatically.
Connect any MCP-compatible AI client (Claude, Gemini, Cursor, etc.) directly to your dashboard. The AI discovers available tools automatically.
API Key AuthTraditional REST endpoint for scripts, CI/CD pipelines, or custom integrations. Uses Firebase ID tokens for user authentication.
Bearer Tokenhttps://cloudnerve-dashboard-api-ygiud3zwvq-uc.a.run.app/healthNo AuthHealth check. Returns service status.
{
"status": "ok",
"timestamp": "2026-05-24T20:18:00.000Z"
}/api/workspace/updateBearer TokenMerges the supplied fields into the authenticated user's default workspace. Supports updating the name, visibility, and categories with links.
Authorization: Bearer <firebase-id-token>Get a Firebase ID token by calling getIdToken() on the authenticated Firebase user in your client app, or via the Firebase Auth REST API.
{
"name": "My Workspace", // optional
"isPublic": false, // optional
"categories": [ // optional
{
"categoryName": "AI Tools",
"links": [
{
"title": "ChatGPT",
"url": "https://chat.openai.com",
"addedAt": "2026-05-24T12:00:00Z" // optional
}
]
}
]
}curl -X POST https://cloudnerve-dashboard-api-ygiud3zwvq-uc.a.run.app/api/workspace/update \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-firebase-id-token>" \
-d '{
"categories": [
{
"categoryName": "Documentation",
"links": [
{
"title": "Kubernetes Docs",
"url": "https://kubernetes.io/docs/"
}
]
}
]
}'{
"workspace": {
"name": "My Cloud Workspace",
"isPublic": false,
"categories": [...],
"updatedAt": "2026-05-24T20:18:00.000Z"
}
}/mcpX-API-KeyMCP (Model Context Protocol) endpoint. Any MCP-compatible AI client can connect and discover available tools. Exposes 6 tools for managing dashboard content, searching links, and logging sessions.
X-API-Key: <your-mcp-api-key>add_to_dashboardAdds a link to a workspace with notes and source references. Category created if missing. Deduplicates by URL.
| Parameter | Type | Description |
|---|---|---|
userId | string? | Firebase UID (defaults to owner) |
workspaceId | string? | Target workspace (defaults to "default") |
category | string | Category name (case-insensitive) |
title | string | Display title |
url | string | URL to add |
notes | string? | Context note |
sourceUrl | string? | NotebookLM / reference URL |
list_workspacesLists all workspaces with names, IDs, counts, and NotebookLM references.
| Parameter | Type | Description |
|---|---|---|
userId | string? | Firebase UID (defaults to owner) |
list_linksLists all links in a workspace, optionally filtered by category.
| Parameter | Type | Description |
|---|---|---|
userId | string? | Firebase UID (defaults to owner) |
workspaceId | string? | Workspace ID (defaults to "default") |
category | string? | Filter by category name |
add_note_to_linkAdds or updates a note/source reference on an existing link. Finds by URL in a category.
| Parameter | Type | Description |
|---|---|---|
userId | string? | Firebase UID (defaults to owner) |
workspaceId | string? | Workspace ID (defaults to "default") |
category | string | Category containing the link |
url | string | URL of the link to annotate |
notes | string? | Note to set (replaces existing) |
sourceUrl | string? | NotebookLM / reference URL |
search_linksSearches across category names, link titles, URLs, and notes. If a category name matches, all links in that category are returned.
| Parameter | Type | Description |
|---|---|---|
userId | string? | Firebase UID (defaults to owner) |
workspaceId | string? | Workspace ID (defaults to "default") |
query | string | Search query (case-insensitive) |
log_sessionCaptures an Antigravity chat session as a link in the dedicated "Antigravity Sessions" workspace. Auto-creates the workspace if missing. Categories organized by date.
| Parameter | Type | Description |
|---|---|---|
userId | string? | Firebase UID (defaults to owner) |
title | string | Session title/summary |
notes | string? | Key decisions, changes, outcomes |
conversationId | string? | Antigravity conversation UUID |
localPath | string? | Local transcript file path |
category | string? | Category name (defaults to today's date) |
sourceUrl | string? | NotebookLM / reference URL |
The MCP endpoint requires an API key passed via the X-API-Key header. Each key is bound to your account — actions are performed against your workspaces.
Go to Settings → Connection Center and scroll to MCP API Keys. Click Generate Key and copy it immediately — the key is shown only once.
cnk_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0After generating your key, expand the Ready-to-paste MCP config dropdown to get a copy-paste JSON block for Claude Desktop, Cursor, Gemini CLI, or any MCP-compatible client.
X-API-Key: cnk_<your-key>• Keys are hashed (SHA-256) before storage — we never store raw keys
• Each key is bound to your Firebase UID — MCP actions target your account
• Max 5 active keys per user — revoke old ones in Settings
• Keys are validated server-side on every MCP request before tools execute
• You can label keys (e.g. "Claude Desktop", "Cursor") for easy trackingAdd the CloudNerve MCP server to your AI client's configuration to let AI assistants manage your dashboard automatically.
Add to your claude_desktop_config.json or Cursor MCP settings:
{
"mcpServers": {
"cloudnerve-dashboard": {
"url": "https://cloudnerve-dashboard-api-ygiud3zwvq-uc.a.run.app/mcp",
"headers": {
"X-API-Key": "<your-mcp-api-key>"
}
}
}
}Add to your mcp_config.json or Antigravity MCP settings:
{
"mcpServers": {
"cloudnerve-dashboard": {
"url": "https://cloudnerve-dashboard-api-ygiud3zwvq-uc.a.run.app/mcp",
"headers": {
"X-API-Key": "<your-mcp-api-key>"
}
}
}
}Once your MCP client is connected, simply ask your AI assistant in natural language. The AI will discover and call the right tool automatically.
| Status | Error | Description |
|---|---|---|
400 | Invalid request body | Request failed Zod schema validation. Check the details field. |
401 | Missing or malformed Authorization header | REST endpoint: provide a valid Authorization: Bearer <token> header. |
401 | Invalid or missing API key | MCP endpoint: provide a valid X-API-Key header. |
503 | MCP endpoint not configured | The MCP_API_KEY environment variable is not set on the server. |