Skip to main content

Collate MCP Tools Reference

Overview

This document provides detailed examples and usage patterns for all available Collate MCP tools. Each tool includes sample requests, responses, and common use cases.

Available Tools

Discover

Search and find data assets across your catalog using keyword, semantic, or natural language queries.

search_metadata

Description: Find data assets and business terms in your Collate catalog. Use Cases:
  • Discover tables containing specific data
  • Find dashboards related to business areas
  • Search for glossary terms
  • Locate pipelines by name or description
Parameters
ParameterTypeRequiredDescription
querystringYesKeywords to search for
entityTypestringNoFilter by entity type (table, topic, dashboard, etc.)
sizeintegerNoMax results to return (default: 10)
fieldsstringNoComma-separated additional fields to include
Entity Types
  • Service Entities: databaseService, messagingService, apiService, dashboardService, pipelineService, storageService, mlmodelService, metadataService, searchService
  • Data Asset Entities: apiCollection, apiEndpoint, table, storedProcedure, database, databaseSchema, dashboard, dashboardDataModel, pipeline, chart, topic, searchIndex, mlmodel, container
  • User Entities: user, team
  • Domain Entities: domain, dataProduct
  • Governance Entities: metric, glossary, glossaryTerm
Examples Basic Search:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_metadata",
    "arguments": {
      "query": "sales"
    }
  }
}
Search for Specific Entity Type:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "search_metadata",
    "arguments": {
      "query": "customer",
      "entityType": "table",
      "size": 15
    }
  }
}
Search with Additional Fields:
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "search_metadata",
    "arguments": {
      "query": "order",
      "entityType": "table",
      "fields": "columns,queries,upstreamLineage",
      "size": 5
    }
  }
}
Sample Response:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Found 5 results matching 'sales':\n\n**Tables:**\n1. **sales_transactions** (mysql_prod.ecommerce.public.sales_transactions)\n   - Description: Daily sales transaction records\n   - Service: mysql_prod (MySQL)\n   - Owners: sales-team, john.doe@company.com\n   - Tags: PII, Financial\n   - [View in OpenMetadata](https://your-om.com/table/mysql_prod.ecommerce.public.sales_transactions)\n\n2. **sales_reports** (postgresql_analytics.reporting.main.sales_reports)\n   - Description: Aggregated sales reporting data\n   - Service: postgresql_analytics (PostgreSQL)\n   - Owners: analytics-team\n   - [View in OpenMetadata](https://your-om.com/table/postgresql_analytics.reporting.main.sales_reports)\n\n**Dashboards:**\n3. **Sales Performance Dashboard** (looker_prod.sales.sales_performance)\n   - Description: Real-time sales KPI dashboard\n   - Service: looker_prod (Looker)\n   - Charts: 8 charts\n   - [View in OpenMetadata](https://your-om.com/dashboard/looker_prod.sales.sales_performance)"
      }
    ]
  }
}
Description: Meaning-based discovery of data assets using vector embeddings. Use this for exploratory or vague queries where exact names are unknown — it finds conceptually related assets even when keywords don’t match. Parameters
ParameterTypeRequiredDescription
querystringYesNatural language description of the data you’re looking for
filtersobjectNoOptional filters. Supported keys: entityType (array), service (array), tags (array)
sizeintegerNoNumber of results to return. Default is 10, maximum is 50
kintegerNoNumber of nearest neighbors to consider internally (KNN parameter). Default is 100
thresholdnumberNoMinimum similarity score (0.0–1.0). Default is 0.0 (no filtering). Use 0.50.7 for high-confidence results
Examples Conceptual asset discovery:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "semantic_search",
    "arguments": {
      "query": "customer purchase history and spending behavior"
    }
  }
}
Filtered semantic search:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "semantic_search",
    "arguments": {
      "query": "revenue forecasting metrics",
      "filters": { "entityType": ["dashboard"], "service": ["BigQuery"] },
      "threshold": 0.5
    }
  }
}

search_company_context

Description: Semantic search over company context knowledge pills from the Context Center. Returns matching pills with their title, question, answer, summary, and source file. Use this to answer questions from company documents, runbooks, FAQs, and policies. Parameters
ParameterTypeRequiredDescription
querystringYesNatural-language question or topic to find relevant company knowledge for
sizeintegerNoNumber of pills to return. Default is 10, maximum is 50
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_company_context",
    "arguments": {
      "query": "data retention policy",
      "size": 5
    }
  }
}
Description: Natural language query search across data assets. Interprets free-form questions and returns matching assets from the catalog. The index parameter accepts entity type names (e.g., table, dashboard) or the dataAsset alias for a broad cross-entity search. Parameters
ParameterTypeRequiredDescription
querystringNoNatural language query. Defaults to * (return all)
limitintegerNoMaximum number of results to return. Default is 10
include_deletedbooleanNoInclude deleted entities in results. Default is false
indexstringNoEntity type or index to search. Default is dataAsset. Accepts entity types (e.g., table, testCase) or raw index names
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "nlq_search",
    "arguments": {
      "query": "show me all Tier 1 tables in the Finance domain",
      "limit": 10
    }
  }
}

Inspect

Retrieve detailed information about specific entities and company knowledge pills.

get_entity_details

Description: Retrieve detailed information about a specific entity using its fully qualified name. Parameters
ParameterTypeRequiredDescription
entityTypestringYesType of entity (table, topic, dashboard, etc.)
fqnstringYesFully qualified name of the entity
Examples Get Table Details:
{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "get_entity_details",
    "arguments": {
      "entityType": "table",
      "fqn": "mysql_prod.ecommerce.public.customer_orders"
    }
  }
}
Get Dashboard Details:
{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "get_entity_details",
    "arguments": {
      "entityType": "dashboard",
      "fqn": "superset_prod.sales.quarterly_revenue"
    }
  }
}
Sample Response:
{
  "jsonrpc": "2.0",
  "id": 4,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "## Table: customer_orders\n\n**Fully Qualified Name**: mysql_prod.ecommerce.public.customer_orders\n\n**Basic Information**:\n- **Service**: mysql_prod (MySQL)\n- **Database**: ecommerce\n- **Schema**: public\n- **Type**: Regular Table\n- **Description**: Stores all customer order transactions with order details, timestamps, and status information\n\n**Ownership & Governance**:\n- **Owners**: ecommerce-team, sarah.johnson@company.com\n- **Tags**: PII, Financial, Customer-Data\n- **Tier**: Tier1\n\n**Schema** (5 columns):\n1. **order_id** (BIGINT) - Primary key, unique order identifier\n2. **customer_id** (BIGINT) - Foreign key to customer table\n3. **order_date** (TIMESTAMP) - When the order was placed\n4. **total_amount** (DECIMAL) - Total order value\n5. **status** (VARCHAR) - Order status (pending, completed, cancelled)\n\n**Usage Statistics**:\n- **Row Count**: ~2.5M rows\n- **Size**: 450 MB\n- **Last Updated**: 2024-01-15 09:30:00\n\n[View in OpenMetadata](https://your-om.com/table/mysql_prod.ecommerce.public.customer_orders)"
      }
    ]
  }
}

get_company_context

Description: Fetch a single company context knowledge pill by its fully qualified name. Returns the full title, question, answer, summary, and source file. Use the fullyQualifiedName or name returned by search_company_context. Parameters
ParameterTypeRequiredDescription
fqnstringYesThe fullyQualifiedName or name of the knowledge pill from a search_company_context result. Pass it verbatim
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_company_context",
    "arguments": {
      "fqn": "data-retention-policy.gdpr-rules"
    }
  }
}

Lineage & Impact

Explore data dependencies, trace upstream sources, and analyze downstream impact.

get_entity_lineage

Description: Retrieve upstream and downstream lineage information for any entity to understand data dependencies and impact analysis. Parameters
ParameterTypeRequiredDescription
entityTypestringYesType of entity
fqnstringYesFully qualified name of the entity
upstreamDepthintegerNoNumber of upstream hops to traverse (default: 3)
downstreamDepthintegerNoNumber of downstream hops to traverse (default: 3)
includeColumnLineagebooleanNoInclude column-level lineage mappings. Default is false (table-level only)

create_lineage

Description: Create a lineage relationship between two data assets. Requires the entity IDs (UUIDs), which you can retrieve using get_entity_details or search_metadata. Parameters
ParameterTypeRequiredDescription
fromEntityobjectYesSource entity with type (entity type string) and id (UUID)
toEntityobjectYesDestination entity with type and id
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_lineage",
    "arguments": {
      "fromEntity": {
        "type": "table",
        "id": "a1b2c3d4-0000-0000-0000-111111111111"
      },
      "toEntity": {
        "type": "table",
        "id": "e5f6a7b8-0000-0000-0000-222222222222"
      }
    }
  }
}

root_cause_analysis

Description: Perform root cause analysis via data quality lineage. Identifies upstream failures causing issues on the specified asset, then analyzes downstream impact. If status is failed, check upstreamAnalysis for root causes and downstreamAnalysis for impact. Parameters
ParameterTypeRequiredDescription
fqnstringYesFully qualified name of the entity to analyze
entityTypestringYesType of the entity (e.g., table, dashboard)
upstreamDepthintegerNoNumber of levels upstream to traverse. Default is 3
downstreamDepthintegerNoNumber of levels downstream to traverse (only used when upstream failures are found). Default is 3
includeColumnLineagebooleanNoInclude column-level lineage on edges. Default is false (table-level only)
includeDeletedbooleanNoInclude deleted entities. Default is false
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "root_cause_analysis",
    "arguments": {
      "fqn": "bigquery_prod.analytics.reporting.sales_summary",
      "entityType": "table",
      "upstreamDepth": 3,
      "downstreamDepth": 3
    }
  }
}

Knowledge

Create and manage glossaries, terms, articles, and reusable context memories.

create_glossary

Description: Create a new glossary to organize business terms and definitions. Parameters
ParameterTypeRequiredDescription
namestringYesName of the glossary
descriptionstringYesDescription of the glossary
ownersarrayNoList of owners (users or teams)
reviewersarrayNoList of reviewers (users or teams)
mutuallyExclusivebooleanYesWhether terms are mutually exclusive
Examples Create Business Glossary:
{
  "jsonrpc": "2.0",
  "id": 6,
  "method": "tools/call",
  "params": {
    "name": "create_glossary",
    "arguments": {
      "name": "Marketing Terms",
      "description": "Collection of marketing-related terms and definitions used across campaigns, analytics, and reporting",
      "owners": ["marketing-team", "alice.smith@company.com"],
      "reviewers": ["data-governance-team"],
      "mutuallyExclusive": false
    }
  }
}
Create Technical Glossary:
{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "create_glossary",
    "arguments": {
      "name": "Data Quality Metrics",
      "description": "Standardized definitions for data quality measurements and KPIs",
      "owners": ["data-quality-team"],
      "mutuallyExclusive": true
    }
  }
}
Sample Response:
{
  "jsonrpc": "2.0",
  "id": 6,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "✅ Successfully created glossary: **Marketing Terms**\n\n**Details**:\n- **Name**: Marketing Terms\n- **Description**: Collection of marketing-related terms and definitions used across campaigns, analytics, and reporting\n- **Owners**: marketing-team, alice.smith@company.com\n- **Reviewers**: data-governance-team\n- **Mutually Exclusive**: No\n- **Status**: Active\n\n**Next Steps**:\n- You can now add glossary terms to this glossary\n- Consider creating hierarchical terms for better organization\n- Set up approval workflows if needed\n\n[View Glossary in OpenMetadata](https://your-om.com/glossary/marketing-terms)"
      }
    ]
  }
}

create_glossary_term

Description: Create a new term within an existing glossary, with support for hierarchical relationships. Parameters
ParameterTypeRequiredDescription
glossarystringYesFQN of the parent glossary
namestringYesName of the term
descriptionstringYesDefinition of the term
parentTermstringNoFQN of parent term for hierarchy
ownersarrayNoList of owners (users or teams)
Examples Create Root Level Term:
{
  "jsonrpc": "2.0",
  "id": 8,
  "method": "tools/call",
  "params": {
    "name": "create_glossary_term",
    "arguments": {
      "glossary": "marketing-terms",
      "name": "Customer Acquisition Cost",
      "description": "The total cost of acquiring a new customer, including marketing and sales expenses divided by the number of customers acquired in a specific period",
      "owners": ["marketing-team", "finance-team"]
    }
  }
}
Create Child Term:
{
  "jsonrpc": "2.0",
  "id": 9,
  "method": "tools/call",
  "params": {
    "name": "create_glossary_term",
    "arguments": {
      "glossary": "marketing-terms",
      "parentTerm": "marketing-terms.customer-acquisition-cost",
      "name": "Organic CAC",
      "description": "Customer acquisition cost specifically for customers acquired through organic channels (SEO, word of mouth, etc.) without paid advertising",
      "owners": ["marketing-team"]
    }
  }
}
Sample Response:
{
  "jsonrpc": "2.0",
  "id": 8,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "✅ Successfully created glossary term: **Customer Acquisition Cost**\n\n**Details**:\n- **Glossary**: Marketing Terms\n- **Full Path**: marketing-terms.customer-acquisition-cost\n- **Definition**: The total cost of acquiring a new customer, including marketing and sales expenses divided by the number of customers acquired in a specific period\n- **Owners**: marketing-team, finance-team\n- **Status**: Draft\n\n**Suggestions**:\n- Consider adding related terms like 'Customer Lifetime Value' and 'Return on Ad Spend'\n- You might want to create child terms for different acquisition channels\n- Add synonyms if this term is known by other names in your organization\n\n[View Term in OpenMetadata](https://your-om.com/glossary/marketing-terms/customer-acquisition-cost)"
      }
    ]
  }
}

create_context_memory

Description: Save a reusable piece of knowledge to the Context Center — a preference, instruction, runbook step, or FAQ answer the assistant should retain across conversations. Use this when the user explicitly asks you to remember, note, or store something. Parameters
ParameterTypeRequiredDescription
namestringYesStable, unique system name. Reusing an existing name updates that memory
questionstringYesThe canonical question or instruction this memory represents
answerstringYesThe canonical answer or guidance to retain
titlestringNoShort human-readable title shown in the Context Center
summarystringNoOne-line summary of the memory
memoryTypestringNoPreference, UseCase, Note, Runbook, or Faq. Defaults to Note
memoryScopestringNoUserGlobal (broad) or EntityScoped (tied to a specific entity)
ownersarrayNoCollate usernames or team names
tagsarrayNoTag FQNs to apply
domainsarrayNoDomain FQNs this memory belongs to
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_context_memory",
    "arguments": {
      "name": "finance-warehouse-preference",
      "title": "Finance Dashboard Warehouse",
      "question": "Which warehouse should finance dashboards query?",
      "answer": "Always query the FINANCE_PROD warehouse for finance dashboards.",
      "memoryType": "Preference",
      "memoryScope": "UserGlobal",
      "domains": ["Finance"]
    }
  }
}

create_article

Description: Create a new knowledge article in the Collate knowledge base. Articles can be nested under a parent page and support an approval workflow when reviewers are set. Valid entityStatus values are: Draft, In Review, Approved, Deprecated, Rejected, Unprocessed. Parameters
ParameterTypeRequiredDescription
namestringYesUnique system name for the article
displayNamestringNoHuman-readable display name
descriptionstringNoArticle content in Markdown format
ownersarrayNoCollate usernames or team names to set as owners
reviewersarrayNoCollate usernames or team names to set as reviewers. When set, the article enters an approval workflow
tagsarrayNoTag FQNs to apply (e.g., Tier.Tier1)
domainsarrayNoDomain FQNs this article belongs to
entityStatusstringNoLifecycle status: Draft, In Review, Approved, Deprecated, Rejected, or Unprocessed
parentstringNoFQN of the parent knowledge page to nest this article under
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_article",
    "arguments": {
      "name": "orders-table-guide",
      "displayName": "Orders Table Guide",
      "description": "## Overview\nThe `orders` table records all customer purchase transactions...",
      "owners": ["data-platform-team"],
      "reviewers": ["data-governance-team"],
      "tags": ["Tier.Tier1"],
      "domains": ["Finance"],
      "entityStatus": "Draft"
    }
  }
}

Govern & Classify

Define and apply classifications, tags, domains, data products, and entity updates.

create_classification

Description: Create a new Classification in Collate. A Classification is a top-level container that groups related Tags (e.g., PII, Tier). The name becomes the root segment of every tag FQN under it. The mutuallyExclusive flag is immutable once the classification exists. Parameters
ParameterTypeRequiredDescription
namestringYesName of the classification. Becomes the root segment of tag FQNs (e.g., PIIPII.Sensitive). Must be unique.
descriptionstringYesDescription of the classification in Markdown format.
displayNamestringNoHuman-readable display name.
mutuallyExclusivebooleanNoIf true, an entity can only carry one tag from this classification at a time. Immutable after creation.
ownersarrayNoCollate usernames or team names to set as owners. Each must already exist.
reviewersarrayNoCollate usernames or team names to set as reviewers. Each must already exist.
domainsarrayNoFQNs of domains this classification belongs to. Each domain must already exist.
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_classification",
    "arguments": {
      "name": "PII",
      "description": "Tags for classifying Personally Identifiable Information across data assets.",
      "mutuallyExclusive": false,
      "owners": ["data-governance-team"],
      "reviewers": ["privacy-team"]
    }
  }
}

create_tag

Description: Create a new Tag inside an existing Classification in Collate. The tag FQN is Classification.TagName (e.g., PII.Sensitive). At least one of classification or parent must be provided. Parameters
ParameterTypeRequiredDescription
namestringYesName of the tag (the leaf segment, e.g., Sensitive). Must be unique within its parent.
descriptionstringYesDescription of the tag in Markdown format.
classificationstringNoName of the classification this tag belongs to (e.g., PII). Must already exist. Optional if parent is provided.
parentstringNoFQN of the parent tag for a nested tag (e.g., PII.PersonalData). Must already exist. Omit for a top-level tag.
displayNamestringNoHuman-readable display name.
mutuallyExclusivebooleanNoIf true, child tags under this tag are mutually exclusive on an entity.
ownersarrayNoCollate usernames or team names to set as owners. Each must already exist.
reviewersarrayNoCollate usernames or team names to set as reviewers. Each must already exist.
domainsarrayNoFQNs of domains this tag belongs to. Each domain must already exist.
Examples Create a top-level tag:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_tag",
    "arguments": {
      "name": "Sensitive",
      "description": "Data that contains sensitive personal information requiring strict access controls.",
      "classification": "PII"
    }
  }
}
Create a nested tag:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "create_tag",
    "arguments": {
      "name": "Email",
      "description": "Email addresses — a subset of sensitive personal data.",
      "parent": "PII.Sensitive"
    }
  }
}

create_domain

Description: Create a new Domain in Collate. A Domain is a top-level governance grouping of data assets. To create a child domain, set parent to the FQN of an existing parent domain. domainType defaults to Aggregate if omitted. Parameters
ParameterTypeRequiredDescription
namestringYesName of the domain. Must be unique.
descriptionstringYesDescription of the domain in Markdown format.
domainTypestringNoType of domain: Source-aligned, Consumer-aligned, or Aggregate (default).
parentstringNoFQN of an existing parent domain when creating a child domain. Omit for a top-level domain.
displayNamestringNoHuman-readable display name.
expertsarrayNoCollate login names of domain experts (e.g., john.doe). Each must already exist.
ownersarrayNoCollate usernames or team names to set as owners. Each must already exist.
tagsarrayNoTag FQNs to apply to this domain (e.g., Tier.Tier1).
Examples Create a top-level domain:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_domain",
    "arguments": {
      "name": "Finance",
      "description": "Domain for all finance and accounting data assets.",
      "domainType": "Consumer-aligned",
      "experts": ["jane.doe"],
      "owners": ["finance-team"]
    }
  }
}
Create a child domain:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "create_domain",
    "arguments": {
      "name": "Revenue",
      "description": "Sub-domain covering revenue tracking and forecasting.",
      "domainType": "Aggregate",
      "parent": "Finance"
    }
  }
}

create_data_product

Description: Create a new Data Product in Collate. A Data Product groups data assets that deliver business value and must belong to at least one Domain. All referenced domain FQNs must already exist. Parameters
ParameterTypeRequiredDescription
namestringYesName of the data product. Must be unique.
descriptionstringYesDescription of the data product in Markdown format.
domainsarrayYesFQNs of the domains this data product belongs to (e.g., Finance). At least one required; each must already exist.
displayNamestringNoHuman-readable display name.
expertsarrayNoCollate login names of data product experts (e.g., john.doe). Each must already exist.
ownersarrayNoCollate usernames or team names to set as owners. Each must already exist.
reviewersarrayNoCollate usernames or team names to set as reviewers. Each must already exist.
tagsarrayNoTag FQNs to apply to this data product (e.g., Tier.Tier1, PII.Sensitive).
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_data_product",
    "arguments": {
      "name": "customer_360",
      "displayName": "Customer 360",
      "description": "Unified view of customer data including orders, support history, and lifetime value.",
      "domains": ["Finance", "Marketing"],
      "experts": ["alice.smith"],
      "owners": ["data-platform-team"],
      "tags": ["Tier.Tier1"]
    }
  }
}

patch_entity

Description: Update an entity using JSON Patch operations. Always look up the entity first to get its current state and UUID before patching. Array fields use plural names in paths: /domains, /owners, /tags, /reviewers. Parameters
ParameterTypeRequiredDescription
entityTypestringYesType of entity to patch (e.g., table, glossaryTerm)
fqnstringYesFully qualified name of the entity to patch
patchstringYesJSON Patch operations array as a JSON string. Each operation has op (add/remove/replace), path, and value
Examples Update a description:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "patch_entity",
    "arguments": {
      "entityType": "table",
      "fqn": "mysql_prod.ecommerce.public.orders",
      "patch": "[{\"op\": \"add\", \"path\": \"/description\", \"value\": \"Stores all customer orders with status and totals.\"}]"
    }
  }
}
Add a domain:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "patch_entity",
    "arguments": {
      "entityType": "table",
      "fqn": "mysql_prod.ecommerce.public.orders",
      "patch": "[{\"op\": \"add\", \"path\": \"/domains/0\", \"value\": {\"id\": \"<domain-uuid>\", \"type\": \"domain\", \"name\": \"Finance\"}}]"
    }
  }
}

Data Quality

Access test definitions and create test cases to validate your data assets.

get_test_definitions

Description: List available test definitions that can be used to create data quality test cases. Use entityType=TABLE for table-level tests and entityType=COLUMN for column-level tests. Pass results to create_test_case. Parameters
ParameterTypeRequiredDescription
entityTypestringYesTABLE for table-level tests or COLUMN for column-level tests
testPlatformstringNoTest platform filter. Default is OpenMetadata. Other options: GreatExpectations, DBT, Deequ, Soda, Other
limitintegerNoMaximum number of results to return. Default is 10
afterstringNoCursor value from a previous response’s nextCursor field for pagination
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_test_definitions",
    "arguments": {
      "entityType": "TABLE",
      "testPlatform": "OpenMetadata",
      "limit": 10
    }
  }
}

create_test_case

Description: Create a data quality test case for a table or column. Use get_test_definitions first to find the right test definition and its required parameters. Parameters
ParameterTypeRequiredDescription
namestringYesName of the test case
fqnstringYesFully qualified name of the table to test. Always use the table FQN, not a column FQN
testDefinitionNamestringYesName of the test definition to use
parameterValuesarrayYesArray of { "name": "<param>", "value": "<value>" } objects matching the test definition’s parameters
columnNamestringNoColumn name (leaf only, e.g., shop_id) for column-level tests
descriptionstringNoDescription of the test case
Examples Table-level row count test:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_test_case",
    "arguments": {
      "name": "orders_row_count_check",
      "fqn": "mysql_prod.ecommerce.public.orders",
      "testDefinitionName": "tableRowCountToBeBetween",
      "parameterValues": [
        { "name": "minValue", "value": "1000" },
        { "name": "maxValue", "value": "10000000" }
      ],
      "description": "Ensures the orders table always has rows within expected bounds."
    }
  }
}
Column uniqueness test:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "create_test_case",
    "arguments": {
      "name": "orders_id_uniqueness",
      "fqn": "mysql_prod.ecommerce.public.orders",
      "testDefinitionName": "columnValuesToBeUnique",
      "columnName": "order_id",
      "parameterValues": []
    }
  }
}

Metrics

Define and track measurable business and technical KPIs.

create_metric

Description: Create a new Metric entity representing a measurable business or technical KPI (e.g., daily revenue, error rate). Metrics can be expressed in SQL, Python, Java, or JavaScript. Parameters
ParameterTypeRequiredDescription
namestringYesUnique name for the metric. Must not contain ::
metricExpressionLanguagestringYesLanguage for the expression: SQL, Java, JavaScript, Python, or External
metricExpressionCodestringYesCode or query that computes the metric (e.g., a SQL SELECT statement)
descriptionstringNoDescription in Markdown format
displayNamestringNoHuman-readable display name
metricTypestringNoCOUNT, SUM, AVERAGE, RATIO, PERCENTAGE, MIN, MAX, MEDIAN, MODE, STANDARD_DEVIATION, VARIANCE, or OTHER
granularitystringNoTime granularity: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR
unitOfMeasurementstringNoCOUNT, DOLLARS, PERCENTAGE, TIMESTAMP, SIZE, REQUESTS, EVENTS, TRANSACTIONS, or OTHER
ownersarrayNoCollate usernames or team names to set as owners
tagsarrayNoTag FQNs (e.g., Tier.Tier1)
domainsarrayNoDomain FQNs this metric belongs to
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_metric",
    "arguments": {
      "name": "daily_revenue",
      "displayName": "Daily Revenue",
      "description": "Total revenue from completed orders for a given day.",
      "metricExpressionLanguage": "SQL",
      "metricExpressionCode": "SELECT SUM(total_amount) FROM orders WHERE status = 'completed' AND DATE(order_date) = CURRENT_DATE",
      "metricType": "SUM",
      "granularity": "DAY",
      "unitOfMeasurement": "DOLLARS",
      "owners": ["finance-team"],
      "tags": ["Tier.Tier1"]
    }
  }
}