MCP Tool Catalog
Every tool the DataStar MCP server exposes, grouped by purpose. Tools marked (read) are read-only; tools marked (write) require Allow write access to be enabled on the workspace's MCP settings.
Several tools are dispatchers that pick a sub-operation via an action, target, kind, or direction argument. The dispatch parameter is always the first argument and is documented in line.
Workspace
get_workspace_info (read)
Returns the currently open workspace: name, on-disk location, relative component path, whether it's under git, and the component categories it exposes.
Database inspection
get_database_schema (read)
Returns a high-level index of the connected database: tables, views, stored procedures, and functions. Each category is capped.
maxObjectsPerCategory: int = 200connection: string?— saved-connection name to run against.
get_table_details (read)
Returns full detail for a single table: columns (type, nullability, default, primary-key flag), constraints, and indexes.
tableName: string(required)schema: string? = null. Omit to use the session's default.connection: string?— saved-connection name to run against.
get_database_context (read)
Returns the context the connected database session resolves unqualified names against: effective default schema, current user, vendor, connection name/summary, and accessible schemas.
connection: string?— saved-connection name to run against.
execute_sql (write)
Runs ad-hoc SQL against the connected database. The allowWrite flag picks the execution path.
sql: string(required)allowWrite: bool = false. Whenfalse, runs in read-only mode — writes are rejected up-front and rows are returned inRows(capped bymaxRows). Whentrue, runs through the same logged execution path as the UI inside a transaction that COMMITs on success;Executionis populated. Settingtruerequires workspace write access.maxRows: int = 1000. Ignored whenallowWrite=true.maxResultChars: int = 100000. Maximum cumulative stringified value length across returned rows whenallowWrite=false. Stops the row stream early to keep large CLOB/varbinary cells from blowing the client's context window. Ignored whenallowWrite=true.commandTimeoutSeconds: int = 30. Per-query command timeout in seconds.0means no limit. Important on Oracle where the provider default is unbounded.connection: string?— saved-connection name to run against.
For row-returning SELECTs, leave allowWrite at its default. To run a saved component script with the UI's commit/rollback toggle, use execute_script instead.
Connections
list_saved_connections (read)
Lists the saved database connections the user has configured.
Metadata tables
The metadata_table tool only operates on tables listed in the workspace's configured metadata tables.
metadata_table (read)
Inspects the workspace's configured metadata tables (vendor-specific catalog/dictionary tables, e.g. CS_DICT_TABLES). Only tables explicitly listed in the workspace configuration can be inspected.
action: string(required) — one of:list— returns the configured metadata table names. Result populatesTables.describe— returns column definitions (name, type, nullability, max length) for one metadata table. RequirestableName. Result populatesColumns.query— returns rows matching optional filters with optional column projection. RequirestableName. SetcountOnly=trueto skip the rows and just get a count. Result populatesRows+Count, or justCountwhencountOnly=true.search— full-text-style scan across every configured metadata table for rows that mentionsearchTerm. Result populatesMatches(per-table) +Errors(tables that couldn't be searched).
tableName: string?— required fordescribeandquery.filters: MetadataFilter[]?—queryonly. ANDed together.columns: string[]?—queryonly. Omit for*.maxRows: int = 1000—queryonly.countOnly: bool = false—queryonly.searchTerm: string?— required forsearch.maxRowsPerTable: int = 50—searchonly.maxResultChars: int = 100000—queryandsearchonly. Maximum cumulative stringified value length across returned rows. Stops the row stream early to keep large text/blob cells from blowing the client's context window.commandTimeoutSeconds: int = 30— per-query command timeout in seconds for actions that hit the database.0means no limit.connection: string?— saved-connection name. Required fordescribe,query, andsearch; ignored forlist.
Each MetadataFilter has column, operator (=, <>, LIKE, NOT LIKE, IS NULL, IS NOT NULL), and value (ignored for the null operators).
Components
list_components (read)
Lists SQL components in the current workspace, with optional filtering and search. Omit query to list everything; provide query to match component names. Set searchContent=true to also match against the SQL body.
query: string?category: string?searchContent: bool = falsemaxResults: int = 200
get_component_content (read)
Returns the full SQL script for a component. Throws when the requested copy doesn't exist (e.g. asking for a draft when none is pending).
category: string(required)name: string(required)source: string = "workspace"—workspacereturns the committed workspace copy;draftreturns the pending-draft copy.
get_component_metadata (read)
Returns a component's metadata: when and where it was last extracted, its database status, template, whether it has a pending draft or is in the deployment basket.
category: string(required)name: string(required)
delete_component (write)
Deletes a component from the workspace and cleans up any associated draft.
category: string(required)name: string(required)
Dependencies
get_dependencies (read)
Lists components related to the given target by direct dependency.
category: string(required)name: string(required)direction: string = "forward"—forwardlists components the target refers to;reverselists components that refer to the target (answers "what would break if I changed this?").scanAllCategories: bool = false—reverseonly. When false, scans only the target's own category (fast).maxScan: int = 500—reverseonly. Reverse results reportScannedandTruncated.connection: string?— saved-connection name to run against.
Requires an active database connection.
Drafts
list_drafts (read)
Lists components that have a pending draft. Optionally filter by category.
category: string?
To read a specific draft's SQL, call get_component_content with source='draft'.
process_draft (write)
Acts on one or more pending drafts in a category.
category: string(required)action: string(required) —applypromotes drafts to the workspace (draft becomes the new workspace version and is removed);discarddeletes drafts without modifying the workspace.names: List<string>?— omit to act on every pending draft in the category.
Extraction
extract_components (write)
Extracts component scripts from the database. Requires an active database connection.
category: string(required)connection: string?— saved-connection name to run against.target: string = "workspace"— one of:workspace— writes scripts straight into the workspace component tree.draft— writes scripts as drafts for review (only when the database version differs from the workspace).location— writes a single component tooutputDirectory(must be inside the workspace; requiresnameswith exactly one entry).
names: List<string>?— omit to extract every component in the category (not allowed fortarget='location').scriptType: string = "create"—target='workspace'only.createextracts CREATE scripts;dropextracts DROP scripts.outputDirectory: string?— required fortarget='location'.
Comparison
compare_component (read)
Compares a component across two sources and returns a unified diff.
category: string(required)name: string(required)target: string(required) —databasediffs against the live database (requiresconnection);draftdiffs against the component's pending draft (no connection needed).connection: string?— saved-connection name. Required whentarget='database'.connectionB: string?— second saved-connection name. When supplied alongsideconnection(withtarget='database'), the comparison is database-vs-database for the same component instead of workspace-vs-database.
Deployment basket
get_basket (read)
Returns the components currently staged in the deployment basket.
update_basket (write)
Modifies the deployment basket.
action: string(required) — one of:add— stages a component (requirescategoryandname).remove— takes a component out of the basket (requirescategoryandname).empty— clears the basket (categoryandnameare ignored).
category: string?name: string?
import_basket_from_task (write)
Populates the basket from the basket.xml attachment on a task in the configured task tracker.
taskId: string?— optional. When omitted, the workspace's active task is used. Fails if neither is set.
Execution
execute_script (write)
Runs a component's SQL script against the connected database.
category: string(required)name: string(required)dryRun: bool = true— when true, the script runs inside a transaction that is rolled back. Set false to commit. On Oracle, DDL statements auto-commit regardless of this flag.connection: string?— saved-connection name to run against.
Templates
list_templates (read)
Lists templates in the workspace. Optionally filter by component type or category.
type: string?—DataComponentorObjectComponent.category: string?
get_template (read)
Returns a template's metadata together with its full XML content.
filePath: string(required) — the full filesystem path returned bylist_templates.
get_template_xsd (read)
Returns the XSD schema for a template type. Hand the XSD to an agent before asking it to author or edit a template.
type: string(required) —DataComponentorObjectComponent.
save_template (write)
Creates or updates a template at the given path. XML is validated against the appropriate XSD before being written; the file is only written if validation passes.
filePath: string(required) — must be inside one of the workspace's template directories and end with.xml.xmlContent: string(required)createNew: bool(required) —truerequires that no file exists at the path (use for new templates);falserequires that the file already exists (use to modify).
Deployment files
get_deployment_file_storage_info (read)
Reports where the deployment file for a task is stored: as a task attachment, as a workspace file, or not yet created. The exists field is only populated for workspace storage.
taskId: string?— optional. When omitted, the workspace's active task is used. Fails if neither is set.
manage_deployment_file (write)
Reads, writes, or summarises the deployment file for a task. Routes between task-attachment storage and workspace-file storage based on workspace configuration.
taskId: string?— optional. When omitted, the workspace's active task is used. Fails if neither is set.action: string(required) — one of:get— returns the raw XML inContent.set— writesxmlContent(creating parent directories as needed) and returns location info. Requires write operations enabled.describe— returns a structured summary (VcsType,WorkingBranch,Items).
xmlContent: string?— required foraction='set'.
Reversal scripts
generate_reversal_scripts (read)
Generates reversal (rollback) scripts for the deployment file attached to a task, against a named target database. Read-only: produces scripts, does not apply them.
taskId: string?— optional. When omitted, the workspace's active task is used. Fails if neither is set.connectionName: string(required)
For object components, reversal SQL is queried from the target database's current state; static-data templates are copied from the workspace file verbatim.
Task tracking
get_task_tracking_capabilities (read)
Reports what the connected task tracker supports (create, update, comment, transition, query, metadata, link). Returns IsConnected=false when no tracker is connected.
get_task_tracking_metadata (read)
Returns metadata from the connected task tracker. Only the field matching kind is populated in the result.
kind: string(required) — one of:types— lists the task types (e.g.Bug,Story,Task,Epic).statuses— lists the statuses a task of the given type can hold. RequirestaskType.fields— lists the fields for a task type, including custom fields with name/type/required. RequirestaskType.priorities— lists the priority levels.projects— lists the projects accessible to the authenticated user.link_types— lists the issue link types (use beforelink_tasksto find valid names).
taskType: string?— required forstatusesandfields.
get_available_transitions (read)
Lists the status transitions a specific task can make from its current state. Use this before transition_task.
taskId: string(required)
get_current_user (read)
Returns the authenticated user's account ID, display name, and email as known to the task tracker.
lookup_user (read)
Searches for users by display name or email address (partial matches supported). Use the returned account IDs when assigning tasks via create_task or update_task.
searchString: string(required)
run_query (read)
Runs a raw provider-native query: JQL on Jira, WIQL on Azure Boards.
query: string(required)maxResults: int = 50
search_tasks (read)
Structured search across the tracker by any combination of text, status, assignee, type, and labels.
text: string?status: string?assignee: string?— passmeto match the authenticated user.type: string?labels: string[]?maxResults: int = 50
get_task (read)
Returns the full details of a task by its ID.
taskId: string(required)
create_task (write)
Creates a task in the connected task tracker.
type: string(required)title: string(required)project: string?— required for Jira unlessparentIdis provided.description: string?— supports Markdown.assignee: string?priority: string?labels: string[]?parentId: string?
update_task (write)
Updates one or more fields on an existing task. At least one field must be supplied.
taskId: string(required)title: string?description: string?— supports Markdown.assignee: string?priority: string?labels: string[]?parentId: string?customFields: dict<string,string>?
transition_task (write)
Moves a task to a new status. Optionally attaches a comment with the transition.
taskId: string(required)targetStatus: string(required)comment: string?
manage_task_comments (write)
Reads or posts comments on a task.
taskId: string(required)action: string(required) —listreturns every comment oldest-first (read-only);addposts a new comment (requirescomment; needs write access).comment: string?— required foraction='add'. Markdown is supported.
link_tasks (write)
Creates a link of the given type between two tasks, optionally with a comment. Use get_task_tracking_metadata with kind='link_types' first to discover available link types and their directionality.
linkType: string(required)inwardTaskId: string(required)outwardTaskId: string(required)comment: string?