const tsPing = await callMCPTool("ping", {});
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.
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. ThedatasourceIdis used ingetRelevantQuestionsandgetAnswercalls. -
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 thecreateLiveboardMCP tool. -
generation_number: Version number for this answer. Required for Liveboard creation. -
question: The executed question; useful for display and to pass it into thecreateLiveboardrequest. -
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:
-
Call
getAnswerto generate visualizations and obtainsession_identifierandgeneration_number. -
Call
createLiveboardwith 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 includequestion,session_identifier, andgeneration_numberfrom a priorgetAnswercall.
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.