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)