Watt Data

MCP Resources let AI assistants read uploaded CSVs and workflow artifacts through the workflow:// URI scheme, and browse trait metadata through the trait:// URI scheme.

URI Format

workflow://{workflow_id}/{type}/{filename}
  • uploads/ — Files you uploaded via generate_upload_url
  • artifacts/ — Outputs generated by workflow tools (JSON, CSV, or Parquet)

Example:

workflow://550e8400-e29b-41d4-a716-446655440000/uploads/customers.csv

Listing Resources

Use resources/list with the workflow ID as cursor to discover all files in a workflow.

{ "method": "resources/list", "params": { "cursor": "550e8400-..." } }

Reading Resources

Use resources/read with a workflow:// URI.

{ "method": "resources/read", "params": { "uri": "workflow://550e8400-.../uploads/customers.csv" } }

CSV Sampling

Append query parameters to sample large CSVs without loading the entire file:

workflow://.../uploads/customers.csv?offset=0&limit=10
ParameterDefaultDescription
offset0Starting row (0-indexed)
limit10Max rows to return
formatcsvOutput format: csv, json, or jsonl

Artifact Format Selection

Access artifacts in different formats by changing the file extension:

workflow://.../artifacts/resolved_identities.json
workflow://.../artifacts/resolved_identities.csv
workflow://.../artifacts/resolved_identities.parquet

Parquet URIs return a presigned download URL. CSV and JSON artifacts also support sampling query parameters.

Trait Resources

Browse trait metadata via the trait:// URI scheme. These resources replaced the former trait_list tool.

Available Resources

URIDescription
trait://personBrowse person trait metadata
trait://businessBrowse business trait metadata

Reading Traits

Use resources/read with a trait:// URI:

{ "method": "resources/read", "params": { "uri": "trait://person" } }

Returns JSON with trait metadata (trait_id, trait_hash, name, value, domain, size, prevalence) and pagination info.

Query Parameters

Append query parameters to filter and paginate:

trait://person?domain=demographic,interest&limit=20&offset=40
ParameterDefaultMaxDescription
domainall-Comma-separated domain filter
limit50200Max traits to return
offset0-Number of traits to skip

Response Format

{
  "entity_type": "person",
  "traits": [
    {
      "trait_id": "1000000001",
      "trait_hash": "abc123",
      "name": "golf_affinity",
      "value": "high",
      "domain": "affinity",
      "size": 1500000,
      "prevalence": 0.05
    }
  ],
  "total": 5000,
  "returned": 50,
  "has_more": true,
  "next_offset": 50
}

Available trait domains are surfaced statically on consuming tool schemas (e.g. the domains parameter on trait_search / entity_find).


Related:

On this page