> ## Documentation Index
> Fetch the complete documentation index at: https://docs.summand.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tools reference

> The seven tools the Summand MCP server exposes, with parameters and example prompts.

All tools are read-only. Most of them take a `datasetId` of the form `ds_019…`. Use `list_datasets` to discover dataset IDs and `list_data_connectors` to discover connector IDs.

## list\_data\_connectors

List every data connector the caller can see — owned connectors plus anything shared with them. A data connector is a database, file upload, or third-party integration that contains one or more datasets.

**Parameters:** none.

**Returns:** an array of `{ id, displayName, kind, visibility, accessLevel, database, createdAt, updatedAt }` plus a `count`. `kind` is one of `postgres`, `mysql`, `snowflake`, `csv`, `fivetran`, etc. `accessLevel` is `owner` or `read`.

Pair with `list_datasets` — each dataset carries a `connectorId` — to navigate from a connector to its datasets.

> "What data connectors do I have in Summand?"

## list\_datasets

List every dataset the caller can see — owned datasets plus anything shared with them.

**Parameters:** none.

**Returns:** an array of `{ id, name, kind, status, targetColumn, latestVersion, accessLevel, updatedAt }` plus a `count`. Each dataset includes a `connectorId` linking back to its parent data connector.

> "List my Summand datasets."

## describe\_dataset

Full metadata for a dataset, including its semantic layer manifest. The `semanticLayer.manifest.components` field tells you which components are valid inputs to `get_columns` and `get_semantic_data` (e.g. `column_stats`, `ebm_graphs`, `feature_metadata`, `umap_embedding`).

<ParamField path="datasetId" type="string" required>
  The dataset ID (e.g. `ds_019abc…`).
</ParamField>

> "Describe `ds_019abc…` — what analysis components are available?"

## get\_columns

Column information for a dataset. Returns rich statistics from the `column_stats` component when available (type, mean, min, max, null count, distinct count), or falls back to feature names from `feature_metadata`.

<ParamField path="datasetId" type="string" required>
  The dataset ID.
</ParamField>

> "What columns does `ds_019abc…` have, and what are their distributions?"

## get\_semantic\_data

Retrieve a specific semantic-layer component. This is the workhorse tool — call `describe_dataset` first to see what's available, then pull the component you want.

<ParamField path="datasetId" type="string" required>
  The dataset ID.
</ParamField>

<ParamField path="component" type="string" required>
  Component name from the manifest. Common values: `column_stats`, `ebm_graphs`, `feature_metadata`, `umap_embedding`, `data_quality`.
</ParamField>

<ParamField path="params" type="object">
  Optional filter params. For example, pass `{ "feature": "price" }` with `ebm_graphs` to retrieve only that feature's contribution data instead of the full graph payload.
</ParamField>

> "Get the EBM graphs for `JobLevel` in `ds_019abc…`."

## get\_surprises

Surprise findings for a dataset — ML-generated unexpected statistical patterns with confidence scores and natural-language explanations. Returned in display order, with deleted items filtered out.

<ParamField path="datasetId" type="string" required>
  The dataset ID.
</ParamField>

> "What are the surprising findings in my HR attrition dataset?"

## compare\_schemas

Side-by-side column comparison between two datasets. Returns columns in both, columns only in A, and columns only in B.

<ParamField path="datasetIdA" type="string" required>
  First dataset ID.
</ParamField>

<ParamField path="datasetIdB" type="string" required>
  Second dataset ID.
</ParamField>

> "Compare the schemas of `ds_019abc…` and `ds_019def…`."
