{
  "schemaVersion": "1.0",
  "title": "Langfuse MCP Servers",
  "description": "Connect MCP clients to Langfuse Cloud for project-scoped prompt management and to Langfuse Docs for public documentation search and retrieval.",
  "build": {
    "generatedAt": "2026-08-10T14:27:22.809Z",
    "generator": "src/lib/reference-builder.ts",
    "sourceConfig": "mcp-reference.config.json",
    "serverCount": 2,
    "toolCount": 83
  },
  "servers": [
    {
      "id": "langfuse-cloud",
      "name": "Langfuse Cloud MCP",
      "description": "Authenticated project-scoped MCP server for Langfuse Cloud projects.",
      "canonicalUrl": "https://cloud.langfuse.com/api/public/mcp",
      "auth": {
        "type": "basic",
        "publicKeyEnv": "LANGFUSE_PUBLIC_KEY",
        "secretKeyEnv": "LANGFUSE_SECRET_KEY"
      },
      "variants": [
        {
          "label": "Cloud EU",
          "url": "https://cloud.langfuse.com/api/public/mcp"
        },
        {
          "label": "Cloud US",
          "url": "https://us.cloud.langfuse.com/api/public/mcp"
        },
        {
          "label": "Cloud Japan",
          "url": "https://jp.cloud.langfuse.com/api/public/mcp"
        },
        {
          "label": "HIPAA US",
          "url": "https://hipaa.cloud.langfuse.com/api/public/mcp"
        },
        {
          "label": "Self-Hosted",
          "url": "https://your-domain.com/api/public/mcp"
        },
        {
          "label": "Local Development",
          "url": "http://localhost:3000/api/public/mcp"
        }
      ],
      "setupSnippets": [
        {
          "id": "langfuse-cloud-cursor",
          "client": "Cursor",
          "title": "Cursor mcp.json",
          "language": "json",
          "code": "{\n  \"mcpServers\": {\n    \"langfuse-cloud\": {\n      \"url\": \"https://cloud.langfuse.com/api/public/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Basic <base64(LANGFUSE_PUBLIC_KEY:LANGFUSE_SECRET_KEY)>\"\n      }\n    }\n  }\n}"
        },
        {
          "id": "langfuse-cloud-claude-code",
          "client": "Claude Code",
          "title": "Claude Code CLI",
          "language": "bash",
          "code": "export LANGFUSE_PUBLIC_KEY=pk-lf-your-public-key\nexport LANGFUSE_SECRET_KEY=sk-lf-your-secret-key\nclaude mcp add --transport http langfuse-cloud https://cloud.langfuse.com/api/public/mcp \\\n  --header \"Authorization: Basic $(printf '%s:%s' \"$LANGFUSE_PUBLIC_KEY\" \"$LANGFUSE_SECRET_KEY\" | base64)\""
        },
        {
          "id": "langfuse-cloud-generic",
          "client": "Generic MCP client",
          "title": "Streamable HTTP JSON",
          "language": "json",
          "code": "{\n  \"servers\": {\n    \"langfuse-cloud\": {\n      \"transport\": {\n        \"type\": \"streamable-http\",\n        \"url\": \"https://cloud.langfuse.com/api/public/mcp\",\n        \"headers\": {\n          \"Authorization\": \"Basic <base64(LANGFUSE_PUBLIC_KEY:LANGFUSE_SECRET_KEY)>\"\n        }\n      }\n    }\n  }\n}"
        }
      ],
      "discovery": {
        "protocolVersion": "2025-06-18",
        "serverInfo": {
          "name": "langfuse",
          "version": "0.3.0-unstable"
        },
        "capabilities": {
          "tools": {}
        },
        "discoveredAt": "2026-08-10T14:27:22.645Z"
      },
      "tools": [
        {
          "name": "getPrompt",
          "description": "Fetch a specific prompt by name with optional label or version parameter.\n\nRetrieval options:\n- label: Get prompt with specific label (e.g., 'production', 'staging')\n- version: Get specific version number (e.g., 1, 2, 3)\n- neither: Returns 'latest' version by default\n\nNote: label and version are mutually exclusive. Returns full prompt content with resolved dependencies.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The name of the prompt"
              },
              "label": {
                "description": "Label to retrieve (e.g., \"production\", \"staging\"). Defaults to \"latest\".",
                "type": "string",
                "minLength": 1,
                "maxLength": 36,
                "pattern": "^[a-z0-9_\\-.]+$"
              },
              "version": {
                "description": "Specific version number to retrieve (e.g., 1, 2, 3)",
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getPrompt",
              "arguments": {
                "name": "string",
                "label": "string",
                "version": 1
              }
            }
          }
        },
        {
          "name": "getPromptUnresolved",
          "description": "Fetch a specific prompt by name with optional label or version parameter WITHOUT resolving dependencies.\n\nReturns the raw prompt content with dependency tags intact. Useful for:\n- Understanding prompt composition/stacking before resolution\n- Debugging prompt dependencies\n- Analyzing the dependency graph structure\n\nRetrieval options:\n- label: Get prompt with specific label (e.g., 'production', 'staging')\n- version: Get specific version number (e.g., 1, 2, 3)\n- neither: Returns 'latest' version by default\n\nNote: label and version are mutually exclusive. To get resolved prompts, use the 'getPrompt' tool instead.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The name of the prompt"
              },
              "label": {
                "description": "Label to retrieve (e.g., \"production\", \"staging\"). Defaults to \"latest\".",
                "type": "string",
                "minLength": 1,
                "maxLength": 36,
                "pattern": "^[a-z0-9_\\-.]+$"
              },
              "version": {
                "description": "Specific version number to retrieve (e.g., 1, 2, 3)",
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getPromptUnresolved",
              "arguments": {
                "name": "string",
                "label": "string",
                "version": 1
              }
            }
          }
        },
        {
          "name": "listPrompts",
          "description": "List and filter prompts in the project. Returns metadata including versions, labels, tags, last updated timestamp, and prompt type.\n\nOptional filters:\n- name: Filter by exact prompt name\n- label: Filter by label on any version\n- tag: Filter by tag\n- fromUpdatedAt: Filter prompts updated at or after this timestamp\n- toUpdatedAt: Filter prompts updated at or before this timestamp\n\nPagination: page (default: 1), limit (default: 50, max: 100)",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "description": "Filter by exact prompt name match",
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              },
              "label": {
                "description": "Filter by label (e.g., 'production', 'staging')",
                "type": "string",
                "minLength": 1,
                "maxLength": 36,
                "pattern": "^[a-z0-9_\\-.]+$"
              },
              "tag": {
                "description": "Filter by tag (e.g., 'experimental', 'v1')",
                "type": "string"
              },
              "fromUpdatedAt": {
                "description": "Filter prompts updated at or after this timestamp (ISO 8601 with timezone, e.g. 2026-02-02T00:00:00Z)",
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "toUpdatedAt": {
                "description": "Filter prompts updated at or before this timestamp (ISO 8601 with timezone, e.g. 2026-02-02T00:00:00Z)",
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "page": {
                "default": 1,
                "description": "Page number for pagination (default: 1)",
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "description": "Number of items to return (1-100, default: 50)",
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listPrompts",
              "arguments": {
                "limit": 50,
                "page": 1,
                "fromUpdatedAt": "2026-05-15T12:00:00.000Z",
                "label": "string",
                "name": "string",
                "tag": "string",
                "toUpdatedAt": "2026-05-15T12:00:00.000Z"
              }
            }
          }
        },
        {
          "name": "createTextPrompt",
          "description": "Create a new text prompt version in Langfuse.\n\nImportant:\n- Prompts are immutable - cannot modify existing versions\n- To update content, create a new version\n- New prompt versions receive the 'latest' label automatically\n- Cannot assign the 'production' label during creation\n- To promote to production, use updatePromptLabels only when the user explicitly requests it\n- Labels are unique across versions\n- Use {{variable_name}} syntax for dynamic content\n\nAccepts: name, prompt (string), optional labels, config, tags, commitMessage",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The name of the prompt"
              },
              "prompt": {
                "type": "string",
                "description": "The prompt text content (supports {{variables}})"
              },
              "labels": {
                "description": "Optional labels to assign, excluding 'production'. New prompt versions receive the 'latest' label automatically.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "config": {
                "description": "Optional JSON config (e.g., {model: 'gpt-4', temperature: 0.7})",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              },
              "tags": {
                "description": "Optional tags for organization (e.g., ['experimental', 'v2'])",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "commitMessage": {
                "description": "Optional commit message describing the changes",
                "type": "string"
              }
            },
            "required": [
              "name",
              "prompt"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createTextPrompt",
              "arguments": {
                "name": "string",
                "prompt": "string",
                "commitMessage": "string",
                "config": {
                  "property": {}
                },
                "labels": [
                  "string"
                ],
                "tags": [
                  "string"
                ]
              }
            }
          }
        },
        {
          "name": "createChatPrompt",
          "description": "Create a new chat prompt version in Langfuse. Chat prompts are arrays of messages with roles and content.\n\nImportant:\n- Prompts are immutable - cannot modify existing versions\n- To update content, create a new version\n- New prompt versions receive the 'latest' label automatically\n- Cannot assign the 'production' label during creation\n- To promote to production, use updatePromptLabels only when the user explicitly requests it\n- Labels are unique across versions\n\nMessage roles: system (instructions), user (input, can contain {{variables}}), assistant (examples)\nAccepts: name, prompt (array of {role, content}), optional labels, config, tags, commitMessage",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The name of the prompt"
              },
              "prompt": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "role": {
                      "type": "string",
                      "description": "The role (e.g., 'system', 'user', 'assistant')"
                    },
                    "content": {
                      "type": "string",
                      "description": "The message content"
                    }
                  },
                  "required": [
                    "role",
                    "content"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of chat messages with role and content"
              },
              "labels": {
                "description": "Optional labels to assign, excluding 'production'. New prompt versions receive the 'latest' label automatically.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "config": {
                "description": "Optional JSON config (e.g., {model: 'gpt-4', temperature: 0.7})",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              },
              "tags": {
                "description": "Optional tags for organization (e.g., ['experimental', 'v2'])",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "commitMessage": {
                "description": "Optional commit message describing the changes",
                "type": "string"
              }
            },
            "required": [
              "name",
              "prompt"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createChatPrompt",
              "arguments": {
                "name": "string",
                "prompt": [
                  {
                    "content": "string",
                    "role": "string"
                  }
                ],
                "commitMessage": "string",
                "config": {
                  "property": {}
                },
                "labels": [
                  "string"
                ],
                "tags": [
                  "string"
                ]
              }
            }
          }
        },
        {
          "name": "updatePromptLabels",
          "description": "Update labels for a specific prompt version.\n\nImportant:\n- ONLY way to modify existing prompts (labels only)\n- Specified labels are added to the version (preserving others not mentioned)\n- Labels are unique across versions - setting a label on one version automatically removes it from others\n- 'latest' label is auto-managed and cannot be set manually\n- Only add the 'production' label when the user explicitly asks to promote this prompt version to production\n- Cannot modify prompt content, type, or tags - use createTextPrompt or createChatPrompt for new versions\n\nAccepts: name, version (required), newLabels (array, can be empty to remove all labels)",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The name of the prompt"
              },
              "version": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991,
                "description": "The version number to update (required)"
              },
              "newLabels": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Array of new labels to assign to the prompt version (can be empty to remove all labels). The 'latest' label is auto-managed and cannot be supplied."
              }
            },
            "required": [
              "name",
              "version",
              "newLabels"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "updatePromptLabels",
              "arguments": {
                "name": "string",
                "newLabels": [
                  "string"
                ],
                "version": 1
              }
            }
          }
        },
        {
          "name": "listObservations",
          "description": "Find and review observations in the current Langfuse project, such as generations, spans, events, agent steps, and tool calls.\nTraces consist of observations. Use this tool when the user asks to inspect traces: pass traceId to page through the observations for a specific trace; those observation records are the trace data returned by the API.\nUse filters to narrow results by trace, name, type, level, environment, time range, or advanced filter conditions. Results are paginated with an opaque cursor.\nFor metadata filters, first inspect metadata on selectively scoped observations by passing traceId, an exact id filter, or both fromStartTime and toStartTime with fields: [\"id\", \"metadata\"]. Then use a discovered key in a stringObject filter.\n\nBy default this returns compact summary fields. Use fields: [\"*\"] for the full observation, or pass specific field names to limit the response size.\nImportant: if you request metadata explicitly, for example fields: [\"id\", \"metadata\"], metadata values are truncated to 200 UTF-8 characters per key unless you also pass expandMetadataKeys with the keys that may need full values.\nRequests that project or filter input, output, or metadata must include traceId, an id filter, or both fromStartTime and toStartTime.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "fields": {
                "description": "Observation fields to include in the response. Omit for compact defaults, use [\"*\"] for all available fields, or pass specific field names to keep responses small. Call getObservationFieldSchema to list accepted fields.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "expandMetadataKeys": {
                "description": "Metadata keys that may need full values. Metadata values are truncated to 200 UTF-8 characters per key by default when metadata is projected without this option.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "limit": {
                "default": 50,
                "description": "Number of observations to return (1-100, default: 50)",
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "cursor": {
                "description": "Cursor returned by a previous listObservations call",
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "SPAN",
                  "EVENT",
                  "GENERATION",
                  "AGENT",
                  "TOOL",
                  "CHAIN",
                  "RETRIEVER",
                  "EVALUATOR",
                  "EMBEDDING",
                  "GUARDRAIL"
                ]
              },
              "name": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "level": {
                "type": "string",
                "enum": [
                  "DEBUG",
                  "DEFAULT",
                  "WARNING",
                  "ERROR"
                ]
              },
              "traceId": {
                "type": "string"
              },
              "version": {
                "type": "string"
              },
              "parentObservationId": {
                "description": "Physical parent observation ID to match exactly.",
                "type": "string"
              },
              "isRootObservation": {
                "description": "Filter by logical root status. App-root observations can match true while retaining a non-null parentObservationId.",
                "type": "boolean"
              },
              "environment": {
                "description": "Environment to filter by. Multiple environments are temporarily unsupported until the public observations API applies allow-multiple environment filters correctly.",
                "type": "string"
              },
              "fromStartTime": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "toStartTime": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "filter": {
                "description": "Advanced filters. Each item must be an object with column, operator, value, optional type, and optional key. Type is inferred from getObservationFilterSchema columns when omitted. Use key for metadata filters.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "column": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "value": {},
                    "type": {
                      "type": "string"
                    },
                    "key": {
                      "description": "Metadata/object key to filter on. Required when column is metadata.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "column",
                    "operator",
                    "value"
                  ],
                  "additionalProperties": false,
                  "description": "Advanced observation filter object. Example: {\"column\":\"totalCost\",\"operator\":\">\",\"value\":0.0029}. The explicit form {\"type\":\"number\",\"column\":\"totalCost\",\"operator\":\">\",\"value\":0.0029} is also accepted."
                }
              }
            },
            "required": [
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listObservations",
              "arguments": {
                "limit": 50,
                "cursor": "string",
                "environment": "string",
                "expandMetadataKeys": [
                  "string"
                ],
                "fields": [
                  "string"
                ],
                "filter": [
                  {
                    "column": "string",
                    "operator": "string",
                    "value": {},
                    "key": "string",
                    "type": "string"
                  }
                ],
                "fromStartTime": "2026-05-15T12:00:00.000Z",
                "isRootObservation": true,
                "level": "DEBUG",
                "name": "string",
                "parentObservationId": "string",
                "toStartTime": "2026-05-15T12:00:00.000Z",
                "traceId": "string",
                "type": "SPAN",
                "userId": "string",
                "version": "string"
              }
            }
          },
          "requiresV4": true
        },
        {
          "name": "getObservation",
          "description": "Get the details for a single observation in the current Langfuse project by observation ID.\nUse this when you already know the observation ID and want to inspect its timing, model, status, payload, metadata, usage, cost, or prompt fields.\n\nBy default this returns compact summary fields. Use fields: [\"*\"] for the full observation, or pass specific field names to limit the response size.\nImportant: if you request metadata explicitly, for example fields: [\"id\", \"metadata\"], metadata values are truncated to 200 UTF-8 characters per key unless you also pass expandMetadataKeys with the keys that may need full values.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "observationId": {
                "type": "string",
                "minLength": 1
              },
              "fields": {
                "description": "Observation fields to include in the response. Omit for compact defaults, use [\"*\"] for all available fields, or pass specific field names to keep responses small. Call getObservationFieldSchema to list accepted fields.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "expandMetadataKeys": {
                "description": "Metadata keys that may need full values. Metadata values are truncated to 200 UTF-8 characters per key by default when metadata is projected without this option.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "observationId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getObservation",
              "arguments": {
                "observationId": "string",
                "expandMetadataKeys": [
                  "string"
                ],
                "fields": [
                  "string"
                ]
              }
            }
          },
          "requiresV4": true
        },
        {
          "name": "getObservationFieldSchema",
          "description": "Show which observation fields can be requested from listObservations and getObservation. The response marks default fields and fields that may be large or contain sensitive application data.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getObservationFieldSchema",
              "arguments": {}
            }
          },
          "requiresV4": true
        },
        {
          "name": "getObservationFilterSchema",
          "description": "Show which observation fields can be used in listObservations filters, including the supported operators for each field.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getObservationFilterSchema",
              "arguments": {}
            }
          },
          "requiresV4": true
        },
        {
          "name": "getObservationFilterValues",
          "description": "List example values for a string or boolean observation filter field, such as names, types, levels, environments, model names, tags, users, or sessions. For numeric metric fields, returns a range with min, max, avg, and count. Use the returned cursor to page through long value lists.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "column": {
                "type": "string",
                "enum": [
                  "name",
                  "type",
                  "environment",
                  "version",
                  "userId",
                  "sessionId",
                  "traceName",
                  "level",
                  "promptName",
                  "promptVersion",
                  "modelId",
                  "providedModelName",
                  "totalCost",
                  "totalTokens",
                  "latency",
                  "timeToFirstToken",
                  "tags",
                  "isRootObservation",
                  "hasParentObservation"
                ]
              },
              "fromStartTime": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "toStartTime": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "observationType": {
                "type": "string",
                "enum": [
                  "SPAN",
                  "EVENT",
                  "GENERATION",
                  "AGENT",
                  "TOOL",
                  "CHAIN",
                  "RETRIEVER",
                  "EVALUATOR",
                  "EMBEDDING",
                  "GUARDRAIL"
                ]
              },
              "isRootObservation": {
                "type": "boolean"
              },
              "hasParentObservation": {
                "type": "boolean"
              },
              "limit": {
                "default": 50,
                "description": "Number of observations to return (1-100, default: 50)",
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "cursor": {
                "type": "string"
              }
            },
            "required": [
              "column",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getObservationFilterValues",
              "arguments": {
                "column": "name",
                "limit": 50,
                "cursor": "string",
                "fromStartTime": "2026-05-15T12:00:00.000Z",
                "hasParentObservation": true,
                "isRootObservation": true,
                "observationType": "SPAN",
                "toStartTime": "2026-05-15T12:00:00.000Z"
              }
            }
          },
          "requiresV4": true
        },
        {
          "name": "listAnnotationQueues",
          "description": "List annotation queues, worklists that collect trace or observation items for human review and scoring, with pagination.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listAnnotationQueues",
              "arguments": {
                "limit": 50,
                "page": 1
              }
            }
          }
        },
        {
          "name": "createAnnotationQueue",
          "description": "Create an annotation queue, a worklist that collects trace or observation items for human review and scoring.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "scoreConfigIds": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "name",
              "scoreConfigIds"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createAnnotationQueue",
              "arguments": {
                "name": "string",
                "scoreConfigIds": [
                  "string"
                ],
                "description": "string"
              }
            }
          }
        },
        {
          "name": "getAnnotationQueue",
          "description": "Get an annotation queue, a worklist of trace or observation items for human review and scoring, by ID.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "queueId": {
                "type": "string"
              }
            },
            "required": [
              "queueId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getAnnotationQueue",
              "arguments": {
                "queueId": "string"
              }
            }
          }
        },
        {
          "name": "listAnnotationQueueItems",
          "description": "List annotation queue items, each linking one trace or observation to a queue with a review status, with optional status filtering.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "queueId": {
                "type": "string"
              },
              "status": {
                "type": "string",
                "enum": [
                  "PENDING",
                  "COMPLETED"
                ]
              }
            },
            "required": [
              "page",
              "limit",
              "queueId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listAnnotationQueueItems",
              "arguments": {
                "limit": 50,
                "page": 1,
                "queueId": "string",
                "status": "PENDING"
              }
            }
          }
        },
        {
          "name": "getAnnotationQueueItem",
          "description": "Get an annotation queue item, one queued trace or observation with review status, by queue ID and item ID.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "queueId": {
                "type": "string"
              },
              "itemId": {
                "type": "string"
              }
            },
            "required": [
              "queueId",
              "itemId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getAnnotationQueueItem",
              "arguments": {
                "itemId": "string",
                "queueId": "string"
              }
            }
          }
        },
        {
          "name": "createAnnotationQueueItem",
          "description": "Add an annotation queue item, one trace or observation to review, to a queue.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "queueId": {
                "type": "string"
              },
              "objectId": {
                "type": "string"
              },
              "objectType": {
                "type": "string",
                "enum": [
                  "TRACE",
                  "OBSERVATION",
                  "SESSION"
                ]
              },
              "status": {
                "default": "PENDING",
                "type": "string",
                "enum": [
                  "PENDING",
                  "COMPLETED"
                ]
              }
            },
            "required": [
              "queueId",
              "objectId",
              "objectType",
              "status"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createAnnotationQueueItem",
              "arguments": {
                "objectId": "string",
                "objectType": "TRACE",
                "queueId": "string",
                "status": "PENDING"
              }
            }
          }
        },
        {
          "name": "updateAnnotationQueueItem",
          "description": "Update an annotation queue item's review status, such as pending or completed.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "queueId": {
                "type": "string"
              },
              "itemId": {
                "type": "string"
              },
              "status": {
                "type": "string",
                "enum": [
                  "PENDING",
                  "COMPLETED"
                ]
              }
            },
            "required": [
              "queueId",
              "itemId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "updateAnnotationQueueItem",
              "arguments": {
                "itemId": "string",
                "queueId": "string",
                "status": "PENDING"
              }
            }
          }
        },
        {
          "name": "deleteAnnotationQueueItem",
          "description": "Remove an annotation queue item, the queued trace or observation, from a queue.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "queueId": {
                "type": "string"
              },
              "itemId": {
                "type": "string"
              }
            },
            "required": [
              "queueId",
              "itemId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteAnnotationQueueItem",
              "arguments": {
                "itemId": "string",
                "queueId": "string"
              }
            }
          }
        },
        {
          "name": "createAnnotationQueueAssignment",
          "description": "Assign a project user to an annotation queue so they can work through its review items.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "queueId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              }
            },
            "required": [
              "queueId",
              "userId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createAnnotationQueueAssignment",
              "arguments": {
                "queueId": "string",
                "userId": "string"
              }
            }
          }
        },
        {
          "name": "deleteAnnotationQueueAssignment",
          "description": "Remove a project user's assignment from an annotation queue.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "queueId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              }
            },
            "required": [
              "queueId",
              "userId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteAnnotationQueueAssignment",
              "arguments": {
                "queueId": "string",
                "userId": "string"
              }
            }
          }
        },
        {
          "name": "createComment",
          "description": "Create a comment on a trace, observation, session, or prompt.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "content": {
                "type": "string",
                "minLength": 1,
                "maxLength": 5000
              },
              "objectId": {
                "type": "string"
              },
              "objectType": {
                "type": "string",
                "enum": [
                  "TRACE",
                  "OBSERVATION",
                  "SESSION",
                  "PROMPT"
                ]
              },
              "authorUserId": {
                "type": "string"
              }
            },
            "required": [
              "content",
              "objectId",
              "objectType"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createComment",
              "arguments": {
                "content": "string",
                "objectId": "string",
                "objectType": "TRACE",
                "authorUserId": "string"
              }
            }
          }
        },
        {
          "name": "listComments",
          "description": "List comments in the current Langfuse project, optionally filtered by object or author.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "objectType": {
                "type": "string",
                "enum": [
                  "TRACE",
                  "OBSERVATION",
                  "SESSION",
                  "PROMPT"
                ]
              },
              "objectId": {
                "type": "string"
              },
              "authorUserId": {
                "type": "string"
              },
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listComments",
              "arguments": {
                "limit": 50,
                "page": 1,
                "authorUserId": "string",
                "objectId": "string",
                "objectType": "TRACE"
              }
            }
          }
        },
        {
          "name": "getComment",
          "description": "Get a comment by ID from the current Langfuse project.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "commentId": {
                "type": "string"
              }
            },
            "required": [
              "commentId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getComment",
              "arguments": {
                "commentId": "string"
              }
            }
          }
        },
        {
          "name": "upsertDataset",
          "description": "Upsert a dataset, a named collection of input and optional expected-output examples for experiments and evaluations.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "metadata": {},
              "inputSchema": {},
              "expectedOutputSchema": {}
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "upsertDataset",
              "arguments": {
                "name": "string",
                "description": "string",
                "expectedOutputSchema": {},
                "id": "string",
                "inputSchema": {},
                "metadata": {}
              }
            }
          }
        },
        {
          "name": "listDatasets",
          "description": "List datasets, named collections of input and optional expected-output examples for experiments and evaluations. Optionally filter by dataset name to find a dataset ID.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listDatasets",
              "arguments": {
                "limit": 50,
                "page": 1,
                "name": "string"
              }
            }
          }
        },
        {
          "name": "getDataset",
          "description": "Get a dataset, a named collection of input and optional expected-output examples for experiments and evaluations, by ID.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "datasetId": {
                "type": "string"
              }
            },
            "required": [
              "datasetId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getDataset",
              "arguments": {
                "datasetId": "string"
              }
            }
          }
        },
        {
          "name": "upsertDatasetItem",
          "description": "Upsert a dataset item (one example in a dataset) by dataset ID. Item IDs are unique per project across all datasets, so an ID used in one dataset cannot be reused in another.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "datasetId": {
                "type": "string"
              },
              "input": {},
              "expectedOutput": {},
              "metadata": {},
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              },
              "sourceTraceId": {
                "type": "string"
              },
              "sourceObservationId": {
                "type": "string"
              },
              "status": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "ARCHIVED"
                ]
              }
            },
            "required": [
              "datasetId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "upsertDatasetItem",
              "arguments": {
                "datasetId": "string",
                "expectedOutput": {},
                "id": "string",
                "input": {},
                "metadata": {},
                "sourceObservationId": "string",
                "sourceTraceId": "string",
                "status": "ACTIVE"
              }
            }
          }
        },
        {
          "name": "listDatasetItems",
          "description": "List dataset items, individual examples with input and optional expected output, optionally filtered by dataset ID, source trace, source observation, or version.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "datasetId": {
                "type": "string"
              },
              "sourceTraceId": {
                "type": "string"
              },
              "sourceObservationId": {
                "type": "string"
              },
              "version": {
                "type": "string"
              },
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listDatasetItems",
              "arguments": {
                "limit": 50,
                "page": 1,
                "datasetId": "string",
                "sourceObservationId": "string",
                "sourceTraceId": "string",
                "version": "string"
              }
            }
          }
        },
        {
          "name": "getDatasetItem",
          "description": "Get a dataset item, one example in a dataset with input and optional expected output, by ID.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "datasetItemId": {
                "type": "string"
              }
            },
            "required": [
              "datasetItemId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getDatasetItem",
              "arguments": {
                "datasetItemId": "string"
              }
            }
          }
        },
        {
          "name": "deleteDatasetItem",
          "description": "Delete a dataset item, one example in a dataset, and all its run items.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "datasetItemId": {
                "type": "string"
              }
            },
            "required": [
              "datasetItemId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteDatasetItem",
              "arguments": {
                "datasetItemId": "string"
              }
            }
          }
        },
        {
          "name": "createDatasetRunItem",
          "description": "Create a dataset run item, a result that links one dataset item to a trace or observation in a dataset run.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "runName": {
                "type": "string"
              },
              "runDescription": {
                "type": "string"
              },
              "metadata": {},
              "datasetItemId": {
                "type": "string"
              },
              "observationId": {
                "description": "Observation ID linked to this run item. Provide this or traceId.",
                "type": "string"
              },
              "traceId": {
                "description": "Trace ID linked to this run item. Provide this or observationId.",
                "type": "string"
              },
              "datasetVersion": {
                "type": "string"
              },
              "createdAt": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              }
            },
            "required": [
              "runName",
              "datasetItemId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createDatasetRunItem",
              "arguments": {
                "datasetItemId": "string",
                "runName": "string",
                "createdAt": "2026-05-15T12:00:00.000Z",
                "datasetVersion": "string",
                "metadata": {},
                "observationId": "string",
                "runDescription": "string",
                "traceId": "string"
              }
            }
          }
        },
        {
          "name": "listDatasetRunItems",
          "description": "List dataset run items, each linking one dataset item to a trace or observation within a dataset run, by dataset ID and run ID.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "datasetId": {
                "type": "string"
              },
              "datasetRunId": {
                "type": "string"
              },
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 100
              }
            },
            "required": [
              "datasetId",
              "datasetRunId",
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listDatasetRunItems",
              "arguments": {
                "datasetId": "string",
                "datasetRunId": "string",
                "limit": 50,
                "page": 1
              }
            }
          }
        },
        {
          "name": "listDatasetRuns",
          "description": "List dataset runs, each experiment or evaluation execution over a dataset, by dataset ID.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "datasetId": {
                "type": "string"
              },
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 100
              }
            },
            "required": [
              "datasetId",
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listDatasetRuns",
              "arguments": {
                "datasetId": "string",
                "limit": 50,
                "page": 1
              }
            }
          }
        },
        {
          "name": "getDatasetRun",
          "description": "Get a dataset run, one experiment or evaluation execution over a dataset, and its run items by dataset ID and run ID.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "datasetId": {
                "type": "string"
              },
              "datasetRunId": {
                "type": "string"
              }
            },
            "required": [
              "datasetId",
              "datasetRunId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getDatasetRun",
              "arguments": {
                "datasetId": "string",
                "datasetRunId": "string"
              }
            }
          }
        },
        {
          "name": "deleteDatasetRun",
          "description": "Delete a dataset run by dataset ID and run ID, and enqueue deletion of its run items.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "datasetId": {
                "type": "string"
              },
              "datasetRunId": {
                "type": "string"
              }
            },
            "required": [
              "datasetId",
              "datasetRunId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteDatasetRun",
              "arguments": {
                "datasetId": "string",
                "datasetRunId": "string"
              }
            }
          }
        },
        {
          "name": "getHealth",
          "description": "Check Langfuse API health. Optionally verify database availability and recent trace/observation ingestion.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "failIfDatabaseUnavailable": {
                "default": false,
                "type": "boolean"
              },
              "failIfNoRecentEvents": {
                "default": false,
                "type": "boolean"
              }
            },
            "required": [
              "failIfDatabaseUnavailable",
              "failIfNoRecentEvents"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getHealth",
              "arguments": {
                "failIfDatabaseUnavailable": false,
                "failIfNoRecentEvents": false
              }
            }
          }
        },
        {
          "name": "listScores",
          "description": "Find scores in Langfuse.\nUse this to review quality, evaluation, or feedback scores for traces, observations, sessions, and experiments (dataset runs).\nEach score carries a polymorphic value matching its dataType (number, boolean, or string) and a subject describing what it scores: { kind: trace | observation | session | experiment, id }.\nResults are paginated with an opaque cursor: pass meta.cursor from the previous response to fetch the next page; a response without meta.cursor is the last page.\nFiltering by trace user or trace tags is not supported. To find scores for a specific user, first resolve the user's trace IDs (e.g. via listObservations with userId), then filter scores by traceId.\nScore reads are eventually consistent: a score created with createScore may not appear in listScores immediately. If a newly created score is missing, wait briefly and retry.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "limit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "cursor": {
                "type": "string"
              },
              "scoreIds": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "name": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "source": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "API",
                    "EVAL",
                    "ANNOTATION"
                  ]
                }
              },
              "dataType": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "NUMERIC",
                    "CATEGORICAL",
                    "BOOLEAN",
                    "CORRECTION",
                    "TEXT"
                  ]
                }
              },
              "environment": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "configId": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "queueId": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "authorUserId": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "value": {
                "description": "string-encoded, requires a single dataType (NUMERIC, BOOLEAN, or CATEGORICAL)",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "valueMin": {
                "description": "inclusive, requires dataType: [\"NUMERIC\"]",
                "type": "number"
              },
              "valueMax": {
                "description": "inclusive, requires dataType: [\"NUMERIC\"]",
                "type": "number"
              },
              "traceId": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "sessionId": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "observationId": {
                "description": "requires traceId",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "experimentId": {
                "description": "same ID as datasetRunId in createScore",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "fromTimestamp": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "toTimestamp": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              }
            },
            "required": [
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listScores",
              "arguments": {
                "limit": 50,
                "authorUserId": [
                  "string"
                ],
                "configId": [
                  "string"
                ],
                "cursor": "string",
                "dataType": [
                  "NUMERIC"
                ],
                "environment": [
                  "string"
                ],
                "experimentId": [
                  "string"
                ],
                "fromTimestamp": "2026-05-15T12:00:00.000Z",
                "name": [
                  "string"
                ],
                "observationId": [
                  "string"
                ],
                "queueId": [
                  "string"
                ],
                "scoreIds": [
                  "string"
                ],
                "sessionId": [
                  "string"
                ],
                "source": [
                  "API"
                ],
                "toTimestamp": "2026-05-15T12:00:00.000Z",
                "traceId": [
                  "string"
                ],
                "value": [
                  "string"
                ],
                "valueMax": 1.23,
                "valueMin": 1.23
              }
            }
          }
        },
        {
          "name": "getScore",
          "description": "Fetch one score by ID from the current Langfuse project.\nThe score carries a polymorphic value matching its dataType (number, boolean, or string) and a subject describing what it scores: { kind: trace | observation | session | experiment, id }.\nScore reads are eventually consistent: a score created with createScore may not be returned by getScore immediately. If a newly created score is not found, wait briefly and retry.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "scoreId": {
                "type": "string"
              }
            },
            "required": [
              "scoreId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getScore",
              "arguments": {
                "scoreId": "string"
              }
            }
          }
        },
        {
          "name": "createScore",
          "description": "Create one score in the current Langfuse project.\nScore reads are eventually consistent: after creation, getScore and listScores may not return the new score immediately. Wait briefly and retry reads when confirming creation.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string",
                "minLength": 1
              },
              "traceId": {
                "description": "Target trace ID.",
                "type": "string"
              },
              "sessionId": {
                "description": "Target session ID.",
                "type": "string"
              },
              "datasetRunId": {
                "description": "Target dataset run ID.",
                "type": "string"
              },
              "observationId": {
                "description": "Optional observation ID for trace-scoped scores.",
                "type": "string"
              },
              "comment": {
                "type": "string"
              },
              "metadata": {},
              "environment": {
                "type": "string"
              },
              "queueId": {
                "type": "string"
              },
              "source": {
                "type": "string",
                "enum": [
                  "API",
                  "ANNOTATION"
                ]
              },
              "value": {
                "description": "Score value. Must be a JSON number for NUMERIC and BOOLEAN scores; numeric strings like \"0.92\" are invalid. Use a string for CATEGORICAL, TEXT, and CORRECTION scores."
              },
              "dataType": {
                "description": "Score data type. When omitted, legacy scoring accepts string or number values.",
                "type": "string",
                "enum": [
                  "NUMERIC",
                  "CATEGORICAL",
                  "BOOLEAN",
                  "CORRECTION",
                  "TEXT"
                ]
              },
              "configId": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "value"
            ],
            "additionalProperties": false,
            "description": "Create score request. Provide exactly one of traceId, sessionId, or datasetRunId. observationId may only be provided together with traceId."
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createScore",
              "arguments": {
                "name": "string",
                "value": {},
                "comment": "string",
                "configId": "string",
                "datasetRunId": "string",
                "dataType": "NUMERIC",
                "environment": "string",
                "id": "string",
                "metadata": {},
                "observationId": "string",
                "queueId": "string",
                "sessionId": "string",
                "source": "API",
                "traceId": "string"
              }
            }
          }
        },
        {
          "name": "listScoreConfigs",
          "description": "List score configurations. Returns exactly data and meta at the top level.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listScoreConfigs",
              "arguments": {
                "limit": 50,
                "page": 1
              }
            }
          }
        },
        {
          "name": "getScoreConfig",
          "description": "Fetch one score configuration by ID from the current Langfuse project. Returns the public score config object directly.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "configId": {
                "type": "string"
              }
            },
            "required": [
              "configId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getScoreConfig",
              "arguments": {
                "configId": "string"
              }
            }
          }
        },
        {
          "name": "createScoreConfig",
          "description": "Create a score configuration. Supports numeric, categorical, boolean, and text configs. Boolean configs automatically receive True and False categories.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 35,
                "description": "Allowed characters: letters, numbers, spaces, underscores, periods, parentheses, and hyphens."
              },
              "description": {
                "type": "string"
              },
              "dataType": {
                "type": "string",
                "enum": [
                  "NUMERIC",
                  "CATEGORICAL",
                  "BOOLEAN",
                  "TEXT"
                ],
                "description": "Score config type. Numeric range fields only apply to NUMERIC configs; categorical categories only apply to CATEGORICAL configs."
              },
              "numericMinValue": {
                "description": "Minimum allowed value for NUMERIC score configs.",
                "type": "number"
              },
              "numericMaxValue": {
                "description": "Maximum allowed value for NUMERIC score configs.",
                "type": "number"
              },
              "categoricalCategories": {
                "description": "Allowed categories for CATEGORICAL score configs as an array of { label, value } objects."
              }
            },
            "required": [
              "name",
              "dataType"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createScoreConfig",
              "arguments": {
                "dataType": "NUMERIC",
                "name": "string",
                "categoricalCategories": {},
                "description": "string",
                "numericMaxValue": 1.23,
                "numericMinValue": 1.23
              }
            }
          }
        },
        {
          "name": "updateScoreConfig",
          "description": "Update a score configuration. Use this to rename, describe, or adjust allowed numeric/category fields.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "configId": {
                "type": "string"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 35,
                "description": "Allowed characters: letters, numbers, spaces, underscores, periods, parentheses, and hyphens."
              },
              "numericMinValue": {
                "description": "Minimum allowed value for NUMERIC score configs.",
                "type": "number"
              },
              "numericMaxValue": {
                "description": "Maximum allowed value for NUMERIC score configs.",
                "type": "number"
              },
              "categoricalCategories": {
                "description": "Allowed categories for CATEGORICAL score configs as an array of { label, value } objects."
              },
              "description": {
                "type": "string"
              }
            },
            "required": [
              "configId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "updateScoreConfig",
              "arguments": {
                "configId": "string",
                "categoricalCategories": {},
                "description": "string",
                "name": "string",
                "numericMaxValue": 1.23,
                "numericMinValue": 1.23
              }
            }
          }
        },
        {
          "name": "deleteScoreConfig",
          "description": "Delete a score configuration from the current Langfuse project by archiving it.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "configId": {
                "type": "string"
              }
            },
            "required": [
              "configId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteScoreConfig",
              "arguments": {
                "configId": "string"
              }
            }
          }
        },
        {
          "name": "queryMetrics",
          "description": "Answer analytics questions about the current Langfuse project, such as usage over time, model costs, latency, errors, scores, or grouped breakdowns by environment, trace, observation, model, user, session, tag, or score name.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "view": {
                "type": "string",
                "enum": [
                  "observations",
                  "scores-numeric",
                  "scores-categorical",
                  "scores-boolean"
                ]
              },
              "dimensions": {
                "default": [],
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "field"
                  ],
                  "additionalProperties": false
                }
              },
              "metrics": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "measure": {
                      "type": "string"
                    },
                    "aggregation": {
                      "type": "string",
                      "enum": [
                        "sum",
                        "avg",
                        "count",
                        "max",
                        "min",
                        "p50",
                        "p75",
                        "p90",
                        "p95",
                        "p99",
                        "histogram",
                        "uniq"
                      ]
                    }
                  },
                  "required": [
                    "measure",
                    "aggregation"
                  ],
                  "additionalProperties": false
                }
              },
              "filters": {
                "default": [],
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "column": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "value": {},
                    "type": {
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "column",
                    "operator",
                    "value",
                    "type"
                  ],
                  "additionalProperties": false
                }
              },
              "timeDimension": {
                "type": "object",
                "properties": {
                  "granularity": {
                    "type": "string",
                    "enum": [
                      "auto",
                      "minute",
                      "hour",
                      "day",
                      "week",
                      "month"
                    ]
                  }
                },
                "required": [
                  "granularity"
                ],
                "additionalProperties": false
              },
              "fromTimestamp": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "toTimestamp": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "orderBy": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string"
                    },
                    "direction": {
                      "type": "string",
                      "enum": [
                        "asc",
                        "desc"
                      ]
                    }
                  },
                  "required": [
                    "field",
                    "direction"
                  ],
                  "additionalProperties": false
                }
              },
              "config": {
                "type": "object",
                "properties": {
                  "bins": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  },
                  "row_limit": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 1000
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "view",
              "dimensions",
              "metrics",
              "filters",
              "fromTimestamp",
              "toTimestamp"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "queryMetrics",
              "arguments": {
                "dimensions": [],
                "filters": [],
                "fromTimestamp": "2026-05-15T12:00:00.000Z",
                "metrics": [
                  {
                    "aggregation": "sum",
                    "measure": "string"
                  }
                ],
                "toTimestamp": "2026-05-15T12:00:00.000Z",
                "view": "observations",
                "config": {
                  "bins": 1,
                  "row_limit": 1
                },
                "orderBy": [
                  {
                    "direction": "asc",
                    "field": "string"
                  }
                ],
                "timeDimension": {
                  "granularity": "auto"
                }
              }
            }
          },
          "requiresV4": true
        },
        {
          "name": "getMetricsSchema",
          "description": "Discover which Langfuse metrics can be analyzed and how to group, filter, aggregate, and time-bucket them before calling queryMetrics.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "view": {
                "description": "Limit the response to one v2 metrics view",
                "type": "string",
                "enum": [
                  "observations",
                  "scores-numeric",
                  "scores-categorical",
                  "scores-boolean"
                ]
              }
            },
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getMetricsSchema",
              "arguments": {
                "view": "observations"
              }
            }
          },
          "requiresV4": true
        },
        {
          "name": "listModels",
          "description": "List custom and Langfuse-managed model definitions visible to the current project.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listModels",
              "arguments": {
                "limit": 50,
                "page": 1
              }
            }
          }
        },
        {
          "name": "createModel",
          "description": "Create a custom model definition for cost tracking/tokenization in the current project.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "modelName": {
                "type": "string"
              },
              "matchPattern": {
                "type": "string"
              },
              "startDate": {
                "type": "string"
              },
              "inputPrice": {
                "type": "number",
                "minimum": 0
              },
              "outputPrice": {
                "type": "number",
                "minimum": 0
              },
              "totalPrice": {
                "type": "number",
                "minimum": 0
              },
              "unit": {
                "type": "string",
                "enum": [
                  "TOKENS",
                  "CHARACTERS",
                  "MILLISECONDS",
                  "SECONDS",
                  "REQUESTS",
                  "IMAGES"
                ]
              },
              "tokenizerId": {
                "type": "string",
                "enum": [
                  "openai",
                  "claude"
                ]
              },
              "tokenizerConfig": {},
              "pricingTiers": {
                "type": "array",
                "items": {}
              }
            },
            "required": [
              "modelName",
              "matchPattern",
              "unit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createModel",
              "arguments": {
                "matchPattern": "string",
                "modelName": "string",
                "unit": "TOKENS",
                "inputPrice": 1.23,
                "outputPrice": 1.23,
                "pricingTiers": [
                  {}
                ],
                "startDate": "string",
                "tokenizerConfig": {},
                "tokenizerId": "openai",
                "totalPrice": 1.23
              }
            }
          }
        },
        {
          "name": "getModel",
          "description": "Get a model definition by ID from the current project scope.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "modelId": {
                "type": "string"
              }
            },
            "required": [
              "modelId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getModel",
              "arguments": {
                "modelId": "string"
              }
            }
          }
        },
        {
          "name": "deleteModel",
          "description": "Delete a custom model definition from the current project. Built-in models cannot be deleted.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "modelId": {
                "type": "string"
              }
            },
            "required": [
              "modelId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteModel",
              "arguments": {
                "modelId": "string"
              }
            }
          }
        },
        {
          "name": "getMedia",
          "description": "Fetch metadata and a signed download URL for one media asset.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "mediaId": {
                "type": "string"
              }
            },
            "required": [
              "mediaId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getMedia",
              "arguments": {
                "mediaId": "string"
              }
            }
          }
        },
        {
          "name": "listEvaluators",
          "description": "List evaluators (llm_as_judge and code) defined in the current Langfuse project. Results are paginated.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listEvaluators",
              "arguments": {
                "limit": 50,
                "page": 1
              }
            }
          }
        },
        {
          "name": "getEvaluator",
          "description": "Fetch a single evaluator by id, including its prompt or source code, output definition, and how many evaluation rules reference it.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "evaluatorId": {
                "type": "string"
              }
            },
            "required": [
              "evaluatorId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getEvaluator",
              "arguments": {
                "evaluatorId": "string"
              }
            }
          }
        },
        {
          "name": "upsertEvaluator",
          "description": "Create an evaluator, or add a new version to an existing one in the current project. Set type to `llm_as_judge` (default) and provide prompt + outputDefinition (modelConfig optional), or set type to `code` and provide sourceCode + sourceCodeLanguage. Reusing an existing evaluator name adds a new version and migrates evaluation rules that reference it.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1
              },
              "type": {
                "description": "Evaluator type. Defaults to `llm_as_judge` when omitted.",
                "type": "string",
                "enum": [
                  "llm_as_judge",
                  "code"
                ]
              },
              "prompt": {
                "type": "string",
                "minLength": 1
              },
              "outputDefinition": {
                "type": "object",
                "properties": {
                  "dataType": {
                    "type": "string",
                    "enum": [
                      "NUMERIC",
                      "BOOLEAN",
                      "CATEGORICAL"
                    ]
                  },
                  "reasoning": {
                    "type": "object",
                    "properties": {
                      "description": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "description"
                    ],
                    "additionalProperties": false
                  },
                  "score": {
                    "type": "object",
                    "properties": {
                      "description": {
                        "type": "string",
                        "minLength": 1
                      },
                      "categories": {
                        "minItems": 2,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "minLength": 1
                        }
                      },
                      "shouldAllowMultipleMatches": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "description"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "dataType",
                  "reasoning",
                  "score"
                ],
                "additionalProperties": false,
                "description": "Score output definition. Required when type is `llm_as_judge`; omit for `code` evaluators."
              },
              "modelConfig": {
                "type": "object",
                "properties": {
                  "provider": {
                    "type": "string",
                    "minLength": 1
                  },
                  "model": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "required": [
                  "provider",
                  "model"
                ],
                "additionalProperties": false,
                "description": "Model used for `llm_as_judge` evaluation. Optional; falls back to the project default eval model."
              },
              "sourceCode": {
                "type": "string",
                "minLength": 1
              },
              "sourceCodeLanguage": {
                "type": "string",
                "enum": [
                  "PYTHON",
                  "TYPESCRIPT"
                ]
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "upsertEvaluator",
              "arguments": {
                "name": "string",
                "modelConfig": {
                  "model": "string",
                  "provider": "string"
                },
                "outputDefinition": {
                  "dataType": "NUMERIC",
                  "reasoning": {
                    "description": "string"
                  },
                  "score": {
                    "description": "string",
                    "categories": [
                      "string"
                    ],
                    "shouldAllowMultipleMatches": true
                  }
                },
                "prompt": "string",
                "sourceCode": "string",
                "sourceCodeLanguage": "PYTHON",
                "type": "llm_as_judge"
              }
            }
          }
        },
        {
          "name": "deleteEvaluator",
          "description": "Delete a project evaluator by id, including all of its versions. Fails while evaluation rules still reference the evaluator; delete those first. Langfuse-managed evaluators cannot be deleted. This cannot be undone.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "evaluatorId": {
                "type": "string"
              }
            },
            "required": [
              "evaluatorId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteEvaluator",
              "arguments": {
                "evaluatorId": "string"
              }
            }
          }
        },
        {
          "name": "listEvaluationRules",
          "description": "List evaluation rules in the current Langfuse project. Each rule attaches an evaluator to incoming observations or experiment items. Results are paginated.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listEvaluationRules",
              "arguments": {
                "limit": 50,
                "page": 1
              }
            }
          }
        },
        {
          "name": "getEvaluationRule",
          "description": "Fetch a single evaluation rule by id, including its evaluator reference, target, filter, variable mapping, sampling, and status.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "evaluationRuleId": {
                "type": "string"
              }
            },
            "required": [
              "evaluationRuleId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getEvaluationRule",
              "arguments": {
                "evaluationRuleId": "string"
              }
            }
          }
        },
        {
          "name": "createEvaluationRule",
          "description": "Create an evaluation rule that runs an evaluator on new observations or experiment items. Set target to `observation` or `experiment`. For `llm_as_judge` evaluators provide a variable mapping; for `code` evaluators omit mapping (Langfuse manages it).",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1
              },
              "evaluator": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "scope": {
                    "type": "string",
                    "enum": [
                      "project",
                      "managed"
                    ]
                  },
                  "type": {
                    "default": "llm_as_judge",
                    "type": "string",
                    "enum": [
                      "llm_as_judge",
                      "code"
                    ]
                  }
                },
                "required": [
                  "name",
                  "scope",
                  "type"
                ],
                "additionalProperties": false
              },
              "enabled": {
                "type": "boolean"
              },
              "sampling": {
                "default": 1,
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1
              },
              "target": {
                "type": "string",
                "enum": [
                  "observation",
                  "experiment"
                ]
              },
              "filter": {
                "description": "Conditions selecting which items the rule runs on.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "column": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "value": {},
                    "type": {
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "column",
                    "operator",
                    "value",
                    "type"
                  ],
                  "additionalProperties": false,
                  "description": "Filter condition, e.g. {\"column\":\"version\",\"operator\":\"=\",\"value\":\"1.0.0\",\"type\":\"string\"}. Use `key` for object columns such as `metadata`. `observation` rules filter on trace/observation columns; `experiment` rules filter on `datasetId`."
                }
              },
              "mapping": {
                "description": "Variable mapping. Required for `llm_as_judge` evaluators; omit for `code` evaluators.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "variable": {
                      "type": "string",
                      "minLength": 1
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "input",
                        "output",
                        "metadata",
                        "tool_calls",
                        "expected_output",
                        "experiment_item_metadata"
                      ]
                    },
                    "jsonPath": {
                      "type": "string",
                      "minLength": 1
                    }
                  },
                  "required": [
                    "variable",
                    "source"
                  ],
                  "additionalProperties": false,
                  "description": "Maps an evaluator variable to a data source. `observation` rules use `input`, `output`, `metadata`, `tool_calls`; `experiment` rules also allow `expected_output` and `experiment_item_metadata`. Required for `llm_as_judge` evaluators; omit for `code` evaluators (Langfuse manages their mapping)."
                }
              }
            },
            "required": [
              "name",
              "evaluator",
              "enabled",
              "sampling",
              "target"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createEvaluationRule",
              "arguments": {
                "enabled": true,
                "evaluator": {
                  "name": "string",
                  "scope": "project",
                  "type": "llm_as_judge"
                },
                "name": "string",
                "sampling": 1,
                "target": "observation",
                "filter": [
                  {
                    "column": "string",
                    "operator": "string",
                    "type": "string",
                    "value": {},
                    "key": "string"
                  }
                ],
                "mapping": [
                  {
                    "source": "input",
                    "variable": "string",
                    "jsonPath": "string"
                  }
                ]
              }
            }
          }
        },
        {
          "name": "updateEvaluationRule",
          "description": "Update an existing evaluation rule. Provide evaluationRuleId plus at least one field to change. When updating filter or mapping, also pass the matching target. The evaluator type cannot be changed.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "evaluationRuleId": {
                "type": "string"
              },
              "name": {
                "type": "string",
                "minLength": 1
              },
              "evaluator": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "scope": {
                    "type": "string",
                    "enum": [
                      "project",
                      "managed"
                    ]
                  }
                },
                "required": [
                  "name",
                  "scope"
                ],
                "additionalProperties": false
              },
              "enabled": {
                "type": "boolean"
              },
              "sampling": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1
              },
              "target": {
                "description": "Provide together with filter/mapping when changing them; must match the rule's target.",
                "type": "string",
                "enum": [
                  "observation",
                  "experiment"
                ]
              },
              "filter": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "column": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "value": {},
                    "type": {
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "column",
                    "operator",
                    "value",
                    "type"
                  ],
                  "additionalProperties": false,
                  "description": "Filter condition, e.g. {\"column\":\"version\",\"operator\":\"=\",\"value\":\"1.0.0\",\"type\":\"string\"}. Use `key` for object columns such as `metadata`. `observation` rules filter on trace/observation columns; `experiment` rules filter on `datasetId`."
                }
              },
              "mapping": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "variable": {
                      "type": "string",
                      "minLength": 1
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "input",
                        "output",
                        "metadata",
                        "tool_calls",
                        "expected_output",
                        "experiment_item_metadata"
                      ]
                    },
                    "jsonPath": {
                      "type": "string",
                      "minLength": 1
                    }
                  },
                  "required": [
                    "variable",
                    "source"
                  ],
                  "additionalProperties": false,
                  "description": "Maps an evaluator variable to a data source. `observation` rules use `input`, `output`, `metadata`, `tool_calls`; `experiment` rules also allow `expected_output` and `experiment_item_metadata`. Required for `llm_as_judge` evaluators; omit for `code` evaluators (Langfuse manages their mapping)."
                }
              }
            },
            "required": [
              "evaluationRuleId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "updateEvaluationRule",
              "arguments": {
                "evaluationRuleId": "string",
                "enabled": true,
                "evaluator": {
                  "name": "string",
                  "scope": "project"
                },
                "filter": [
                  {
                    "column": "string",
                    "operator": "string",
                    "type": "string",
                    "value": {},
                    "key": "string"
                  }
                ],
                "mapping": [
                  {
                    "source": "input",
                    "variable": "string",
                    "jsonPath": "string"
                  }
                ],
                "name": "string",
                "sampling": 1.23,
                "target": "observation"
              }
            }
          }
        },
        {
          "name": "deleteEvaluationRule",
          "description": "Delete an evaluation rule by id. This stops the rule from evaluating new items and cannot be undone.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "evaluationRuleId": {
                "type": "string"
              }
            },
            "required": [
              "evaluationRuleId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteEvaluationRule",
              "arguments": {
                "evaluationRuleId": "string"
              }
            }
          }
        },
        {
          "name": "listDashboardWidgets",
          "description": "List dashboard widgets in the current project.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listDashboardWidgets",
              "arguments": {
                "limit": 50,
                "page": 1
              }
            }
          }
        },
        {
          "name": "createDashboardWidget",
          "description": "Create a dashboard widget (a standalone chart definition you place on any dashboard). Widgets are useful to visualize Langfuse project data and give informative breakdowns to the user. This creates the widget only; place it on a dashboard with the addDashboardPlacement tool. The result includes a url field; use it to link to the created widget.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Human-readable widget name."
              },
              "description": {
                "description": "Human-readable widget description. Defaults to empty.",
                "type": "string"
              },
              "view": {
                "type": "string",
                "enum": [
                  "observations",
                  "scores-numeric",
                  "scores-boolean",
                  "scores-categorical"
                ],
                "description": "Data view for the widget. Traces widgets are not supported by this unstable API."
              },
              "dimensions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string",
                      "minLength": 1
                    }
                  },
                  "required": [
                    "field"
                  ],
                  "additionalProperties": false
                },
                "description": "Breakdown dimensions. Non-pivot charts support at most one dimension."
              },
              "metrics": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "measure": {
                      "type": "string",
                      "minLength": 1
                    },
                    "agg": {
                      "type": "string",
                      "enum": [
                        "sum",
                        "avg",
                        "count",
                        "max",
                        "min",
                        "p50",
                        "p75",
                        "p90",
                        "p95",
                        "p99",
                        "histogram",
                        "uniq"
                      ]
                    }
                  },
                  "required": [
                    "measure",
                    "agg"
                  ],
                  "additionalProperties": false
                },
                "description": "Measures and aggregations to plot."
              },
              "filters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "column": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "value": {},
                    "key": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "column",
                    "operator",
                    "type"
                  ],
                  "additionalProperties": {}
                },
                "description": "Widget filters in the same shape as exported dashboard widget JSON."
              },
              "chartType": {
                "type": "string",
                "enum": [
                  "LINE_TIME_SERIES",
                  "AREA_TIME_SERIES",
                  "BAR_TIME_SERIES",
                  "HORIZONTAL_BAR",
                  "VERTICAL_BAR",
                  "PIE",
                  "NUMBER",
                  "HISTOGRAM",
                  "PIVOT_TABLE"
                ]
              },
              "chartConfig": {
                "description": "Chart-specific config. Optional; type defaults to chartType and must match it when given.",
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "LINE_TIME_SERIES",
                      "AREA_TIME_SERIES",
                      "BAR_TIME_SERIES",
                      "HORIZONTAL_BAR",
                      "VERTICAL_BAR",
                      "PIE",
                      "NUMBER",
                      "HISTOGRAM",
                      "PIVOT_TABLE"
                    ]
                  },
                  "row_limit": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 1000
                  },
                  "show_value_labels": {
                    "type": "boolean"
                  },
                  "bins": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  },
                  "defaultSort": {
                    "type": "object",
                    "properties": {
                      "column": {
                        "type": "string"
                      },
                      "order": {
                        "type": "string",
                        "enum": [
                          "ASC",
                          "DESC"
                        ]
                      }
                    },
                    "required": [
                      "column",
                      "order"
                    ],
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "name",
              "view",
              "dimensions",
              "metrics",
              "filters",
              "chartType"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createDashboardWidget",
              "arguments": {
                "chartType": "LINE_TIME_SERIES",
                "dimensions": [
                  {
                    "field": "string"
                  }
                ],
                "filters": [
                  {
                    "column": "string",
                    "operator": "string",
                    "type": "string",
                    "key": "string",
                    "value": {}
                  }
                ],
                "metrics": [
                  {
                    "agg": "sum",
                    "measure": "string"
                  }
                ],
                "name": "string",
                "view": "observations",
                "chartConfig": {
                  "bins": 1,
                  "defaultSort": {
                    "column": "string",
                    "order": "ASC"
                  },
                  "row_limit": 1,
                  "show_value_labels": true,
                  "type": "LINE_TIME_SERIES"
                },
                "description": "string"
              }
            }
          }
        },
        {
          "name": "getDashboardWidget",
          "description": "Get a dashboard widget by ID.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "widgetId": {
                "type": "string"
              }
            },
            "required": [
              "widgetId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getDashboardWidget",
              "arguments": {
                "widgetId": "string"
              }
            }
          }
        },
        {
          "name": "updateDashboardWidget",
          "description": "Partially update a dashboard widget.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "widgetId": {
                "type": "string"
              },
              "name": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "view": {
                "type": "string",
                "enum": [
                  "observations",
                  "scores-numeric",
                  "scores-boolean",
                  "scores-categorical"
                ]
              },
              "dimensions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "field"
                  ],
                  "additionalProperties": false
                }
              },
              "metrics": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "measure": {
                      "type": "string"
                    },
                    "agg": {
                      "type": "string",
                      "enum": [
                        "sum",
                        "avg",
                        "count",
                        "max",
                        "min",
                        "p50",
                        "p75",
                        "p90",
                        "p95",
                        "p99",
                        "histogram",
                        "uniq"
                      ]
                    }
                  },
                  "required": [
                    "measure",
                    "agg"
                  ],
                  "additionalProperties": false
                }
              },
              "filters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "column": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "value": {},
                    "key": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "column",
                    "operator",
                    "type"
                  ],
                  "additionalProperties": {}
                }
              },
              "chartType": {
                "type": "string",
                "enum": [
                  "LINE_TIME_SERIES",
                  "AREA_TIME_SERIES",
                  "BAR_TIME_SERIES",
                  "HORIZONTAL_BAR",
                  "VERTICAL_BAR",
                  "PIE",
                  "NUMBER",
                  "HISTOGRAM",
                  "PIVOT_TABLE"
                ]
              },
              "chartConfig": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "LINE_TIME_SERIES",
                      "AREA_TIME_SERIES",
                      "BAR_TIME_SERIES",
                      "HORIZONTAL_BAR",
                      "VERTICAL_BAR",
                      "PIE",
                      "NUMBER",
                      "HISTOGRAM",
                      "PIVOT_TABLE"
                    ]
                  },
                  "row_limit": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 1000
                  },
                  "show_value_labels": {
                    "type": "boolean"
                  },
                  "bins": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  },
                  "defaultSort": {
                    "type": "object",
                    "properties": {
                      "column": {
                        "type": "string"
                      },
                      "order": {
                        "type": "string",
                        "enum": [
                          "ASC",
                          "DESC"
                        ]
                      }
                    },
                    "required": [
                      "column",
                      "order"
                    ],
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "widgetId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "updateDashboardWidget",
              "arguments": {
                "widgetId": "string",
                "chartConfig": {
                  "bins": 1,
                  "defaultSort": {
                    "column": "string",
                    "order": "ASC"
                  },
                  "row_limit": 1,
                  "show_value_labels": true,
                  "type": "LINE_TIME_SERIES"
                },
                "chartType": "LINE_TIME_SERIES",
                "description": "string",
                "dimensions": [
                  {
                    "field": "string"
                  }
                ],
                "filters": [
                  {
                    "column": "string",
                    "operator": "string",
                    "type": "string",
                    "key": "string",
                    "value": {}
                  }
                ],
                "metrics": [
                  {
                    "agg": "sum",
                    "measure": "string"
                  }
                ],
                "name": "string",
                "view": "observations"
              }
            }
          }
        },
        {
          "name": "deleteDashboardWidget",
          "description": "Delete a dashboard widget. It must first be removed from every dashboard placement.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "widgetId": {
                "type": "string"
              }
            },
            "required": [
              "widgetId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteDashboardWidget",
              "arguments": {
                "widgetId": "string"
              }
            }
          }
        },
        {
          "name": "listDashboards",
          "description": "List editable dashboards in the current project.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "page": {
                "default": 1,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 100
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listDashboards",
              "arguments": {
                "limit": 50,
                "page": 1
              }
            }
          }
        },
        {
          "name": "getDashboard",
          "description": "Get an editable dashboard by ID, including its current layout: definition.widgets lists every placement with 12-column-grid coordinates (x/y top-left cell, width/height in cells).",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "dashboardId": {
                "type": "string"
              }
            },
            "required": [
              "dashboardId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getDashboard",
              "arguments": {
                "dashboardId": "string"
              }
            }
          }
        },
        {
          "name": "createDashboard",
          "description": "Create an editable dashboard.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "filters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": {}
                }
              },
              "definition": {
                "type": "object",
                "properties": {
                  "widgets": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": {}
                    }
                  }
                },
                "required": [
                  "widgets"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "createDashboard",
              "arguments": {
                "name": "string",
                "definition": {
                  "widgets": [
                    {
                      "property": {}
                    }
                  ]
                },
                "description": "string",
                "filters": [
                  {
                    "property": {}
                  }
                ]
              }
            }
          }
        },
        {
          "name": "updateDashboard",
          "description": "Partially update dashboard metadata, filters, or its complete definition.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "dashboardId": {
                "type": "string"
              },
              "name": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "filters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": {}
                }
              },
              "definition": {
                "type": "object",
                "properties": {
                  "widgets": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": {}
                    }
                  }
                },
                "required": [
                  "widgets"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "dashboardId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "updateDashboard",
              "arguments": {
                "dashboardId": "string",
                "definition": {
                  "widgets": [
                    {
                      "property": {}
                    }
                  ]
                },
                "description": "string",
                "filters": [
                  {
                    "property": {}
                  }
                ],
                "name": "string"
              }
            }
          }
        },
        {
          "name": "deleteDashboard",
          "description": "Delete an editable dashboard.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "dashboardId": {
                "type": "string"
              }
            },
            "required": [
              "dashboardId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteDashboard",
              "arguments": {
                "dashboardId": "string"
              }
            }
          }
        },
        {
          "name": "addDashboardPlacement",
          "description": "Add a widget or preset placement to a dashboard's 12-column grid. Prefer omitting id and position: the server generates an id and appends the tile below existing ones at the default 6x6 size. Explicit positions are not checked for overlap. After adding, call getDashboard to verify the full grid arrangement; use updateDashboardPlacement to move or resize the new tile when needed. Returns the created placement.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "dashboardId": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "widget",
                  "preset"
                ]
              },
              "id": {
                "type": "string"
              },
              "widgetId": {
                "type": "string"
              },
              "presetId": {
                "type": "string"
              },
              "x": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "y": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "width": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "height": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "dashboardId",
              "type"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "addDashboardPlacement",
              "arguments": {
                "dashboardId": "string",
                "type": "widget",
                "height": 1,
                "id": "string",
                "presetId": "string",
                "widgetId": "string",
                "width": 1,
                "x": 1,
                "y": 1
              }
            }
          }
        },
        {
          "name": "updateDashboardPlacement",
          "description": "Move or resize an existing dashboard placement on the 12-column grid. Pass any of x, y (top-left cell), width, height (in cells); omitted fields keep their current value. The placement's content and id cannot change. Use getDashboard to read the current layout first. Overlaps are not checked. Returns the updated placement.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "dashboardId": {
                "type": "string"
              },
              "placementId": {
                "type": "string"
              },
              "x": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "y": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "width": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "height": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "dashboardId",
              "placementId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "updateDashboardPlacement",
              "arguments": {
                "dashboardId": "string",
                "placementId": "string",
                "height": 1,
                "width": 1,
                "x": 1,
                "y": 1
              }
            }
          }
        },
        {
          "name": "deleteDashboardPlacement",
          "description": "Remove a placement from a dashboard without deleting the underlying widget.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "dashboardId": {
                "type": "string"
              },
              "placementId": {
                "type": "string"
              }
            },
            "required": [
              "dashboardId",
              "placementId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "deleteDashboardPlacement",
              "arguments": {
                "dashboardId": "string",
                "placementId": "string"
              }
            }
          }
        },
        {
          "name": "submitFeedback",
          "description": "Submit explicit user-approved feedback to the Langfuse team about Langfuse skills, MCP tools, CLI, docs, or public API.\nBefore calling, ask the user for permission and show the exact feedback payload, including any optional goal/use-case context.\nIf the user wants a reply, ask them to include their email address in the feedback text; only use an address they explicitly provide and show it in the exact payload preview.\nDo not include secrets, credentials, customer/project data, trace payloads, or unrelated context; the only contact detail to include is an explicitly provided reply email.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "targetType": {
                "type": "string",
                "enum": [
                  "skill",
                  "mcp-tool",
                  "cli",
                  "docs",
                  "public-api",
                  "other"
                ],
                "description": "Category of the thing the feedback is about."
              },
              "target": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200,
                "description": "The specific instance within targetType: the skill name, MCP tool name, CLI command, API endpoint path, or docs page path (e.g. 'queryMetrics', '/docs/mcp'). An identifier, not a sentence."
              },
              "feedback": {
                "type": "string",
                "minLength": 1,
                "maxLength": 3000,
                "description": "The concise feedback text approved by the user."
              },
              "goal": {
                "description": "Optional user-approved goal or use case they were trying to achieve. Do not infer or add secrets, customer data, trace payloads, or broad unrelated context.",
                "type": "string",
                "minLength": 1,
                "maxLength": 1500
              },
              "referenceUrl": {
                "description": "Optional URL reference. Langfuse stores it as text only.",
                "type": "string",
                "maxLength": 2048,
                "format": "uri"
              }
            },
            "required": [
              "targetType",
              "target",
              "feedback"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "submitFeedback",
              "arguments": {
                "feedback": "string",
                "target": "string",
                "targetType": "skill",
                "goal": "string",
                "referenceUrl": "https://example.com"
              }
            }
          }
        },
        {
          "name": "listExperiments",
          "description": "List experiments in the current Langfuse project with cursor-based pagination.\nUse this to find experiment IDs, inspect experiment summaries, and optionally include metadata or experiment-level scores.\nResults are sorted newest first by the latest event for each experiment, not by the returned experiment startTime.\nfromStartTime is required. Time filters and cursor bounds are applied before experiments are grouped, so a time range can return partial experiment aggregates.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "fields": {
                "description": "Response field groups to include. Available groups: core, metadata, scores.",
                "default": [
                  "core"
                ],
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "core",
                    "metadata",
                    "scores"
                  ]
                }
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "scoreLimit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 50
              },
              "cursor": {
                "type": "string",
                "description": "Base64url-encoded cursor for pagination"
              },
              "fromStartTime": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "toStartTime": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "id": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "name": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "datasetId": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "filter": {
                "description": "Advanced experiment filters as objects with column, operator, value, and type. Supported columns: id, name, datasetId.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "column": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "value": {},
                    "type": {
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "column",
                    "operator",
                    "value",
                    "type"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "fields",
              "limit",
              "scoreLimit",
              "fromStartTime"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listExperiments",
              "arguments": {
                "fields": [
                  "core"
                ],
                "fromStartTime": "2026-05-15T12:00:00.000Z",
                "limit": 50,
                "scoreLimit": 50,
                "cursor": "string",
                "datasetId": [
                  "string"
                ],
                "filter": [
                  {
                    "column": "string",
                    "operator": "string",
                    "type": "string",
                    "value": {},
                    "key": "string"
                  }
                ],
                "id": [
                  "string"
                ],
                "name": [
                  "string"
                ],
                "toStartTime": "2026-05-15T12:00:00.000Z"
              }
            }
          },
          "requiresV4": true
        },
        {
          "name": "listExperimentItems",
          "description": "List experiment items in the current Langfuse project with cursor-based pagination.\nUse this to inspect experiment item inputs, outputs, expected outputs, metadata, and optionally item or trace scores.\nResults are sorted newest first by experiment item startTime.\nfromStartTime is required. Request io and metadata fields only when needed because they can be large.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "fields": {
                "description": "Response field groups to include. Available groups: core, dataset, io, metadata, itemMetadata, experimentMetadata, scores.",
                "default": [
                  "core",
                  "dataset"
                ],
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "core",
                    "dataset",
                    "io",
                    "metadata",
                    "itemMetadata",
                    "experimentMetadata",
                    "scores"
                  ]
                }
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "scoreLimit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 50
              },
              "cursor": {
                "type": "string",
                "description": "Base64url-encoded cursor for pagination"
              },
              "fromStartTime": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "toStartTime": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "experimentId": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "experimentName": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "experimentItemId": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "datasetId": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "filter": {
                "description": "Advanced experiment item filters as objects with column, operator, value, and type. Supported columns: experimentId, experimentName, experimentItemId, datasetId.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "column": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "value": {},
                    "type": {
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "column",
                    "operator",
                    "value",
                    "type"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "fields",
              "limit",
              "scoreLimit",
              "fromStartTime"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listExperimentItems",
              "arguments": {
                "fields": [
                  "core",
                  "dataset"
                ],
                "fromStartTime": "2026-05-15T12:00:00.000Z",
                "limit": 50,
                "scoreLimit": 50,
                "cursor": "string",
                "datasetId": [
                  "string"
                ],
                "experimentId": [
                  "string"
                ],
                "experimentItemId": [
                  "string"
                ],
                "experimentName": [
                  "string"
                ],
                "filter": [
                  {
                    "column": "string",
                    "operator": "string",
                    "type": "string",
                    "value": {},
                    "key": "string"
                  }
                ],
                "toStartTime": "2026-05-15T12:00:00.000Z"
              }
            }
          },
          "requiresV4": true
        },
        {
          "name": "listMonitors",
          "description": "List monitors, optionally filtered by severity or tags and ordered by monitor properties.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "page": {
                "default": 1,
                "type": "number",
                "minimum": 0
              },
              "limit": {
                "default": 50,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "orderBy": {
                "type": "object",
                "properties": {
                  "column": {
                    "type": "string",
                    "enum": [
                      "name",
                      "status",
                      "severity",
                      "severityChangedAt",
                      "alertedAt",
                      "createdAt",
                      "updatedAt"
                    ]
                  },
                  "order": {
                    "type": "string",
                    "enum": [
                      "ASC",
                      "DESC"
                    ]
                  }
                },
                "required": [
                  "column",
                  "order"
                ],
                "additionalProperties": false
              },
              "filter": {
                "description": "Filter monitors by severity or tags.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "column": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "value": {},
                    "type": {
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "column",
                    "operator",
                    "value",
                    "type"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "page",
              "limit"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "listMonitors",
              "arguments": {
                "limit": 50,
                "page": 1,
                "filter": [
                  {
                    "column": "string",
                    "operator": "string",
                    "type": "string",
                    "value": {},
                    "key": "string"
                  }
                ],
                "orderBy": {
                  "column": "name",
                  "order": "ASC"
                }
              }
            }
          },
          "requiresV4": true
        },
        {
          "name": "getMonitor",
          "description": "Get a monitor by ID.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "monitorId": {
                "type": "string",
                "description": "ID of the monitor to retrieve."
              }
            },
            "required": [
              "monitorId"
            ],
            "additionalProperties": false
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getMonitor",
              "arguments": {
                "monitorId": "string"
              }
            }
          },
          "requiresV4": true
        }
      ],
      "resources": [],
      "prompts": []
    },
    {
      "id": "langfuse-docs",
      "name": "Langfuse Docs MCP",
      "description": "Unauthenticated MCP server for Langfuse documentation search and retrieval.",
      "canonicalUrl": "https://langfuse.com/api/mcp",
      "auth": {
        "type": "none"
      },
      "variants": [],
      "setupSnippets": [
        {
          "id": "langfuse-docs-cursor",
          "client": "Cursor",
          "title": "Cursor mcp.json",
          "language": "json",
          "code": "{\n  \"mcpServers\": {\n    \"langfuse-docs\": {\n      \"url\": \"https://langfuse.com/api/mcp\"\n    }\n  }\n}"
        },
        {
          "id": "langfuse-docs-vscode",
          "client": "VS Code Copilot",
          "title": "VS Code settings.json",
          "language": "json",
          "code": "{\n  \"mcp\": {\n    \"servers\": {\n      \"langfuse-docs\": {\n        \"type\": \"http\",\n        \"url\": \"https://langfuse.com/api/mcp\"\n      }\n    }\n  }\n}"
        },
        {
          "id": "langfuse-docs-claude-code",
          "client": "Claude Code",
          "title": "Claude Code CLI",
          "language": "bash",
          "code": "claude mcp add --transport http langfuse-docs https://langfuse.com/api/mcp"
        },
        {
          "id": "langfuse-docs-windsurf",
          "client": "Windsurf",
          "title": "Proxy command",
          "language": "json",
          "code": "{\n  \"mcpServers\": {\n    \"langfuse-docs\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"https://langfuse.com/api/mcp\"\n      ]\n    }\n  }\n}"
        },
        {
          "id": "langfuse-docs-generic",
          "client": "Generic MCP client",
          "title": "Streamable HTTP JSON",
          "language": "json",
          "code": "{\n  \"servers\": {\n    \"langfuse-docs\": {\n      \"transport\": {\n        \"type\": \"streamable-http\",\n        \"url\": \"https://langfuse.com/api/mcp\"\n      }\n    }\n  }\n}"
        }
      ],
      "discovery": {
        "protocolVersion": "2025-06-18",
        "serverInfo": {
          "name": "mcp-typescript server on vercel",
          "version": "0.1.0"
        },
        "capabilities": {
          "tools": {
            "listChanged": true
          }
        },
        "discoveredAt": "2026-08-10T14:27:22.809Z"
      },
      "tools": [
        {
          "name": "submitFeedback",
          "description": "Submit explicit user-approved feedback to the Langfuse team.\nBefore calling, ask permission and show the exact payload.\nIf the user wants a reply, ask them to include their email address in the feedback text; only use an address they explicitly provide and show it in the exact payload preview.\nDo not include secrets, credentials, customer/project data, trace payloads, or unrelated context; the only contact detail to include is an explicitly provided reply email.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "targetType": {
                "type": "string",
                "enum": [
                  "skill",
                  "mcp-tool",
                  "cli",
                  "docs",
                  "public-api",
                  "other"
                ],
                "description": "Category of the thing the feedback is about."
              },
              "target": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200,
                "description": "The specific instance within targetType: the skill name, MCP tool name, CLI command, API endpoint path, or docs page path (e.g. 'queryMetrics', '/docs/mcp'). An identifier, not a sentence."
              },
              "feedback": {
                "type": "string",
                "minLength": 1,
                "maxLength": 3000
              },
              "goal": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1500
              },
              "referenceUrl": {
                "type": "string",
                "format": "uri",
                "maxLength": 2048
              }
            },
            "required": [
              "targetType",
              "target",
              "feedback"
            ],
            "additionalProperties": false,
            "$schema": "http://json-schema.org/draft-07/schema#"
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "submitFeedback",
              "arguments": {
                "feedback": "string",
                "target": "string",
                "targetType": "skill",
                "goal": "string",
                "referenceUrl": "https://example.com"
              }
            }
          }
        },
        {
          "name": "searchLangfuseDocs",
          "description": "Semantic search (RAG) over the Langfuse documentation. Use this whenever the user asks a broader question that cannot be answered by a specific single page. Returns a concise answer synthesized from relevant docs. The raw provider response is included in _meta. Prefer this before guessing. If a specific page is needed call getLangfuseDocsPage first.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "query": {
                "type": "string",
                "description": "The user's question in natural language. Include helpful context like SDK/language (e.g., Python v3, JS v4), self-hosted vs cloud, and short error messages (trim long stack traces). Keep under ~600 characters."
              }
            },
            "required": [
              "query"
            ],
            "additionalProperties": false,
            "$schema": "http://json-schema.org/draft-07/schema#"
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "searchLangfuseDocs",
              "arguments": {
                "query": "string"
              }
            }
          }
        },
        {
          "name": "getLangfuseDocsPage",
          "description": "Fetch the raw Markdown for a single Langfuse docs page. Accepts a docs path (e.g., /docs/observability/overview) or a full https://langfuse.com URL. Returns the exact Markdown (may include front matter). Use when you need a specific page content (Integration, Features, API, etc.) or code samples. Prefer searchLangfuseDocs for broader questions where there is not one specific page about it. Changelog pages (/changelog/...) are historical release notes: use them only to confirm that a feature exists or when it shipped, not as an implementation reference. Their code samples reflect the SDK/API at release time and may be outdated, so for implementation follow the current docs and the API/SDK reference instead.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "pathOrUrl": {
                "type": "string",
                "description": "Docs path starting with \"/\" (e.g., /docs/observability/overview) or a full URL on https://langfuse.com. Do not include anchors (#...) or queries (?foo=bar) — they will be ignored."
              }
            },
            "required": [
              "pathOrUrl"
            ],
            "additionalProperties": false,
            "$schema": "http://json-schema.org/draft-07/schema#"
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getLangfuseDocsPage",
              "arguments": {
                "pathOrUrl": "string"
              }
            }
          }
        },
        {
          "name": "getLangfuseOverview",
          "description": "Get a high-level, machine-readable index by downloading https://langfuse.com/llms.txt. Use this at the start of a session when needed to discover key docs endpoints or to seed follow-up calls to searchLangfuseDocs or getLangfuseDocsPage. Returns the plain text contents of llms.txt. Avoid repeated calls within the same session.",
          "inputSchema": {
            "type": "object",
            "properties": {},
            "additionalProperties": false,
            "$schema": "http://json-schema.org/draft-07/schema#"
          },
          "exampleRequest": {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
              "name": "getLangfuseOverview",
              "arguments": {}
            }
          }
        }
      ],
      "resources": [],
      "prompts": []
    }
  ]
}
