MCP Tools Reference

Complete reference for all NoLag MCP tools. Each tool schema shown below is exactly what the MCP endpoint returns from tools/list.

The project is determined automatically from your API key. You do not need to pass a project ID to any tool. App-scoped tools require an appId, which you can get from nolag_list_apps.

App Management

Manage apps within your project. Apps are the top-level containers for rooms, actors, and messaging.

nolag_list_apps

Lists all apps in the project. The project is determined by the API key used for authentication. Takes no parameters.

{
  "name": "nolag_list_apps",
  "description": "List all apps in the project (determined by API key)",
  "inputSchema": {
    "type": "object",
    "properties": {}
  }
}

nolag_create_app

Creates a new app. Optionally pass a blueprintId to create the app from an existing blueprint template.

{
  "name": "nolag_create_app",
  "description": "Create a new app in the project",
  "inputSchema": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string",
        "description": "App name"
      },
      "description": {
        "type": "string",
        "description": "App description"
      },
      "blueprintId": {
        "type": "string",
        "description": "Optional blueprint ID to use as template"
      }
    },
    "required": ["name"]
  }
}

nolag_get_app

Gets full details about a specific app, including its webhook configuration.

{
  "name": "nolag_get_app",
  "description": "Get details about a specific app",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID"
      }
    },
    "required": ["appId"]
  }
}

nolag_update_app

Updates an app's name or description. Only the fields you provide will be changed.

{
  "name": "nolag_update_app",
  "description": "Update an app",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID"
      },
      "name": {
        "type": "string",
        "description": "New app name"
      },
      "description": {
        "type": "string",
        "description": "New app description"
      }
    },
    "required": ["appId"]
  }
}

nolag_delete_app

Soft-deletes an app. The app can be restored by NoLag support if needed.

{
  "name": "nolag_delete_app",
  "description": "Delete an app (soft delete)",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID"
      }
    },
    "required": ["appId"]
  }
}

Room Management

Manage rooms within an app. Rooms are messaging channels that actors connect to.

nolag_list_rooms

Lists all rooms in an app, including both static and dynamic rooms.

{
  "name": "nolag_list_rooms",
  "description": "List all rooms in an app",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID"
      }
    },
    "required": ["appId"]
  }
}

nolag_create_room

Creates a new dynamic room in an app.

{
  "name": "nolag_create_room",
  "description": "Create a new dynamic room in an app",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID"
      },
      "name": {
        "type": "string",
        "description": "Room name (e.g., 'general', 'user-123')"
      },
      "description": {
        "type": "string",
        "description": "Room description"
      }
    },
    "required": ["appId", "name"]
  }
}

nolag_get_room

Gets details about a specific room.

{
  "name": "nolag_get_room",
  "description": "Get details about a specific room",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID"
      },
      "roomId": {
        "type": "string",
        "description": "Room ID"
      }
    },
    "required": ["appId", "roomId"]
  }
}

nolag_update_room

Updates a room's name, description, or enabled status. Setting isEnabled to false disables the room.

{
  "name": "nolag_update_room",
  "description": "Update a room",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID"
      },
      "roomId": {
        "type": "string",
        "description": "Room ID"
      },
      "name": {
        "type": "string",
        "description": "New room name"
      },
      "description": {
        "type": "string",
        "description": "New room description"
      },
      "isEnabled": {
        "type": "boolean",
        "description": "Whether the room is enabled"
      }
    },
    "required": ["appId", "roomId"]
  }
}

nolag_delete_room

Deletes a dynamic room. Static rooms cannot be deleted through this tool.

{
  "name": "nolag_delete_room",
  "description": "Delete a dynamic room (static rooms cannot be deleted)",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID"
      },
      "roomId": {
        "type": "string",
        "description": "Room ID"
      }
    },
    "required": ["appId", "roomId"]
  }
}

Actor Management

Manage actors in your project. Actors represent clients that connect to NoLag (devices, users, or servers). Each actor gets an access token used for SDK connections.

nolag_list_actors

Lists all actors in the project. Takes no parameters.

{
  "name": "nolag_list_actors",
  "description": "List all actors in the project",
  "inputSchema": {
    "type": "object",
    "properties": {}
  }
}

nolag_create_actor

Creates a new actor and returns its access token. The access token is only returned once -- save it immediately. The actorType must be one of device, user, or server.

{
  "name": "nolag_create_actor",
  "description": "Create a new actor. The access token is only shown once - save it immediately!",
  "inputSchema": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string",
        "description": "Actor name (e.g., 'web-client', 'mobile-app', 'backend-server')"
      },
      "actorType": {
        "type": "string",
        "enum": ["device", "user", "server"],
        "description": "Type of actor"
      },
      "description": {
        "type": "string",
        "description": "Actor description"
      },
      "externalId": {
        "type": "string",
        "description": "External ID for linking to your system"
      }
    },
    "required": ["name", "actorType"]
  }
}

Important: The access token in the response is shown only once. If you lose it, you will need to delete the actor and create a new one.

nolag_get_actor

Gets details about a specific actor. The access token is not included in the response.

{
  "name": "nolag_get_actor",
  "description": "Get details about a specific actor",
  "inputSchema": {
    "type": "object",
    "properties": {
      "actorId": {
        "type": "string",
        "description": "Actor ID"
      }
    },
    "required": ["actorId"]
  }
}

nolag_update_actor

Updates an actor's name, description, or active status. Setting isActive to false disables the actor.

{
  "name": "nolag_update_actor",
  "description": "Update an actor",
  "inputSchema": {
    "type": "object",
    "properties": {
      "actorId": {
        "type": "string",
        "description": "Actor ID"
      },
      "name": {
        "type": "string",
        "description": "New actor name"
      },
      "description": {
        "type": "string",
        "description": "New actor description"
      },
      "isActive": {
        "type": "boolean",
        "description": "Whether the actor is active"
      }
    },
    "required": ["actorId"]
  }
}

nolag_delete_actor

Permanently deletes an actor and invalidates its access token.

{
  "name": "nolag_delete_actor",
  "description": "Delete an actor",
  "inputSchema": {
    "type": "object",
    "properties": {
      "actorId": {
        "type": "string",
        "description": "Actor ID"
      }
    },
    "required": ["actorId"]
  }
}

Messaging

Read message history from rooms. This is useful for debugging and inspecting what messages have been exchanged.

nolag_get_messages

Gets recent messages from a room. Optionally filter by topic name. If no topic is specified, returns messages from all topics in the room.

{
  "name": "nolag_get_messages",
  "description": "Get recent messages from a room/topic",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID"
      },
      "roomId": {
        "type": "string",
        "description": "Room ID"
      },
      "topic": {
        "type": "string",
        "description": "Topic name (optional - omit to get all room messages)"
      },
      "limit": {
        "type": "number",
        "description": "Maximum number of messages to return (default: 10)"
      }
    },
    "required": ["appId", "roomId"]
  }
}

Webhooks

Configure and inspect webhooks for your apps. NoLag supports two types of webhooks:

  • Hydration webhooks -- Called when actors subscribe to topics, used to pre-populate state
  • Trigger webhooks -- Called when messages are published to topics

nolag_configure_webhooks

Configures hydration and/or trigger webhooks for an app. Only the webhook types you provide will be updated.

{
  "name": "nolag_configure_webhooks",
  "description": "Configure webhooks for an app. Hydration webhooks are called when actors subscribe to topics. Trigger webhooks are called when messages are published.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID to configure webhooks for"
      },
      "hydrationWebhook": {
        "type": "object",
        "description": "Hydration webhook config - called when actors subscribe to pre-populate state"
      },
      "triggerWebhook": {
        "type": "object",
        "description": "Trigger webhook config - called when messages are published"
      }
    },
    "required": ["appId"]
  }
}

nolag_get_webhook_config

Gets the current webhook configuration for an app, showing both hydration and trigger webhook settings.

{
  "name": "nolag_get_webhook_config",
  "description": "Get the current webhook configuration for an app",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID"
      }
    },
    "required": ["appId"]
  }
}

nolag_list_webhook_dlq

Lists failed webhook requests in the Dead Letter Queue (DLQ). These are webhook calls that failed after all retry attempts. Useful for debugging delivery issues.

{
  "name": "nolag_list_webhook_dlq",
  "description": "List failed webhook requests in the Dead Letter Queue. These are webhooks that failed after all retry attempts.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "status": {
        "type": "string",
        "enum": ["pending", "failed", "dead"],
        "description": "Filter by status (default: all)"
      },
      "limit": {
        "type": "number",
        "description": "Maximum number of entries to return (default: 20)"
      }
    }
  }
}

Code Generation

Generate SDK client code for a specific use case. Supports TypeScript/JavaScript, Python, and Go, with optional framework targeting.

nolag_generate_code

Generates a code template for connecting to NoLag using the SDK. The generated code includes topic subscriptions and publishing based on the topics you specify. Framework options vary by language:

  • TypeScript/JavaScript: react, vue, svelte, vanilla, node, express
  • Python: fastapi (or no framework)
  • Go: gin (or no framework)
{
  "name": "nolag_generate_code",
  "description": "Generate SDK client code for a specific use case",
  "inputSchema": {
    "type": "object",
    "properties": {
      "appId": {
        "type": "string",
        "description": "App ID to generate code for"
      },
      "language": {
        "type": "string",
        "enum": ["typescript", "javascript", "python", "go"],
        "description": "Target programming language"
      },
      "framework": {
        "type": "string",
        "enum": ["react", "vue", "svelte", "vanilla", "node", "express", "fastapi", "gin"],
        "description": "Target framework (optional)"
      },
      "useCase": {
        "type": "string",
        "description": "Description of what the code should do"
      },
      "topics": {
        "type": "array",
        "items": { "type": "string" },
        "description": "Topics to include in the generated code"
      }
    },
    "required": ["appId", "language", "useCase"]
  }
}

Defined but Unimplemented

The following tools appear in the tools/list response but do not have backend handlers. Calling them will return an error:

  • nolag_publish -- Publish a message to a topic (no handler)
  • nolag_retry_webhook_dlq -- Retry a failed webhook from the DLQ (no handler)

Next Steps