LLMs.txt: Complete documentation index for AI agents
MCP tool reference (legacy version)

MCP tool reference (legacy version)

This reference guide lists the legacy MCP tools supported by the MCP Server in versions prior to 2026-05-01 and describes the MCP request input schema and data structure of the response.

pingπŸ”—

Runs a basic health check to validate that the MCP Server is reachable.

const tsPing = await callMCPTool("ping", {});

getDataSourceSuggestionsπŸ”—

Suggests appropriate ThoughtSpot data models for a given natural language question.

Example callπŸ”—

const dsSuggestions = await callMCPTool("getDataSourceSuggestions", {
  query: "show me sales by region" // user's query
});

ResponseπŸ”—

Returns an object containing an array of suggestions:

{
  "suggestions": [
    {
      "header": {
        "guid": "worksheet-guid-123",
        "displayName": "Sales Analytics",
        "description": "Sales performance by region, product, and channel"
      },
      "confidence": 0.92,
      "llmReasoning": "This worksheet contains sales metrics and regional dimensions relevant to the query."
    }
  ]
}

Key fields are:

  • header.guid: Unique ID for the datasource. The datasourceId is used in getRelevantQuestions and getAnswer calls.

  • header.displayName: Name of the data source.

  • header.description: Optional description of the data source.

  • confidence: Numeric score indicating the confidence of the system about a data model being the right match for the user’s query.

  • llmReasoning: LLM’s reasoning for the suggestion.

getRelevantQuestionsπŸ”—

Uses ThoughtSpot’s reasoning engine to generate AI-suggested sub-queries that help generate specific answers for a given data context.

Example callπŸ”—

const result = await callMCPTool("getRelevantQuestions", {
  query: "show me sales data", // User's natural language query
  datasourceIds: ["model-guid-123"], // Array of worksheet/datasource GUIDs
  additionalContext: "User is interested in the data for underperforming regions and products"
});

ResponseπŸ”—

{
  "questions": [
    "What is the total sales revenue by region?",
    "Which products have the highest revenue?",
    "What are the top selling categories?"
  ]
}

Each returned question can then be passed individually into getAnswer.

getAnswerπŸ”—

Executes a natural language query for a given data context and returns the resulting data and visualization metadata. Clients can use this data and frame URL to render visualizations.

Example callπŸ”—

const result = await callMCPTool("getAnswer", {
  question: "Total sales by region", // Natural language question
  datasourceId: "model-guid-123" // Worksheet/datasource GUID
});

ResponseπŸ”—

{
  "question": "Total sales by region",
  "session_identifier": "abc-123-def-456",
  "generation_number": 2,
  "data": "\"Region\",\"Total Sales\"\n\"East\",100000\n...",
  "frame_url": "https://...",
  "fields_info": "..."
}

Key fields are:

  • session_identifier: Unique session ID used to group answers. Required when creating a Liveboard from this answer using the createLiveboard MCP tool.

  • generation_number: Version number for this answer. Required for Liveboard creation.

  • question: The executed question; useful for display and to pass it into the createLiveboard request.

  • data: Data returned in encoded format. Contains column headers and all returned rows in comma-separated format, which can be parsed to render tables or charts in your application.

  • frame_url: Optional iframe URL for embedding the visualization in your UI.

  • fields_info: Descriptive metadata about the fields and chart, useful for explanations.

createLiveboardπŸ”—

Creates a ThoughtSpot Liveboard with one or more answers from the results. This is a two-step process and includes the following calls:

  1. Call getAnswer to generate visualizations and obtain session_identifier and generation_number.

  2. Call createLiveboard with those values to create the Liveboard.

Example callπŸ”—

const answerData = JSON.parse(answerResult.result.content);

const liveboardResult = await callMCPTool("createLiveboard", {
  name: "My Sales Dashboard",
  noteTile: "My Sales Dashboard was created by TS MCP Chat", // Description text for the Liveboard
  answers: [{
    question: answerData.question, // Display name for the Liveboard
    session_identifier: answerData.session_identifier,
    generation_number: answerData.generation_number
  }]
});

Required attributes are:

  • noteTile: Use this field for any Liveboard description or notes; a separate description field is not supported.

  • answers: Required array. Each item must include question, session_identifier, and generation_number from a prior getAnswer call.

ResponseπŸ”—

{
  "liveboardId": "liveboard-guid-here",
  "name": "My Sales Dashboard",
  "frame_url": "https://..."
}

Key fields are:

  • liveboardId: GUID of the created Liveboard.

  • name: Name of the Liveboard.

  • frame_url: URL that can be embedded to display the Liveboard.

Β© 2026 ThoughtSpot Inc. All Rights Reserved.