myriade
Explore and query your data warehouse through Myriade's AI data analyst agent.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"myriade": {
"url": "https://app.myriade.ai/mcp/"
}
}
}Puntos de conexión remotos
https://app.myriade.ai/mcp/streamable-httpQué puede hacer
Inventario de herramientas
Herramientas (19)
🟢myriade_list_databases(limit, offset)
List databases configured in Myriade (paginated, sorted by name). Returns paginated database connections with their IDs, names, engines, and descriptions. Use the database ID with other tools.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"default": 50,
"description": "Maximum results to return (1-200)",
"maximum": 200,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Number of results to skip for pagination",
"minimum": 0,
"title": "Offset",
"type": "integer"
}
},
"title": "list_databasesArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_databasesOutput"
}🟢myriade_get_database_info(database_id)
Get detailed information about a specific database connection. Returns information about the database including its name, engine type, description, write mode, and any AI memory notes.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database (from myriade_list_databases)",
"format": "uuid",
"title": "Database Id",
"type": "string"
}
},
"required": [
"database_id"
],
"title": "get_database_infoArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_database_infoOutput"
}🟢myriade_list_tables(database_id, limit, offset)
List tables in a database (paginated, sorted by database/schema/name). Returns a flat, paginated list of tables. Each item has database_name, schema, and name fields. The response's `dialect` is the SQL dialect to use with myriade_query on this database.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
},
"limit": {
"default": 100,
"description": "Maximum tables to return (1-500)",
"maximum": 500,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Number of tables to skip for pagination",
"minimum": 0,
"title": "Offset",
"type": "integer"
}
},
"required": [
"database_id"
],
"title": "list_tablesArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_tablesOutput"
}🟢myriade_get_table_schema(database_id, table_name, schema_name)
Get the column-level schema for a specific table. Returns column names, data types, and descriptions for the table, plus the SQL `dialect` to use with myriade_query on this database. When the name is ambiguous across schemas, the candidates are returned under `matches` instead — pass `schema_name` to pick one. Raises if the user has no access to the table under governance.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
},
"table_name": {
"description": "Name of the table to inspect",
"maxLength": 255,
"minLength": 1,
"title": "Table Name",
"type": "string"
},
"schema_name": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional schema name to disambiguate same-named tables",
"title": "Schema Name"
}
},
"required": [
"database_id",
"table_name"
],
"title": "get_table_schemaArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_table_schemaOutput"
}🟢myriade_query(database_id, sql, title)
Execute a read-only SQL query against a database. Write the SQL in the dialect of the target database's engine — see the `dialect` field returned by myriade_list_tables and myriade_get_table_schema, or the engine in myriade_list_databases. Write operations (INSERT, UPDATE, DELETE, DROP, etc.) are blocked. Returns up to 50 rows of results with column metadata. Successful queries are saved in Myriade; the response's `query_id` can be replayed later with myriade_get_query_results without resending SQL.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
},
"sql": {
"description": "Read-only SQL query, written for the target database's dialect (writes are blocked)",
"maxLength": 20000,
"minLength": 1,
"title": "Sql",
"type": "string"
},
"title": {
"anyOf": [
{
"maxLength": 255,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional name for the saved query, shown in Myriade",
"title": "Title"
}
},
"required": [
"database_id",
"sql"
],
"title": "queryArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "queryOutput"
}🟢myriade_get_query_results(query_id)
Re-execute a saved Myriade query and return fresh results. The query's SQL always re-runs under the caller's governance policies (table permissions, column masking) — results are never served from Myriade's cached snapshot. Prefer this over myriade_query for recurring metrics (dashboards, cockpits): the SQL stays governed in Myriade instead of travelling through prompts. Write statements are blocked. Returns up to 50 rows with column metadata, same shape as myriade_query.
Esquema de entrada
{
"type": "object",
"properties": {
"query_id": {
"description": "UUID of a saved Myriade query (from a Myriade query link, e.g. in myriade_ask responses)",
"format": "uuid",
"title": "Query Id",
"type": "string"
}
},
"required": [
"query_id"
],
"title": "get_query_resultsArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_query_resultsOutput"
}🟢myriade_sample_data(database_id, table_name, schema_name, limit, database_name)
Get sample rows from a table to understand the data. Returns a random sample of up to ``limit`` rows (max 20).
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
},
"table_name": {
"description": "Name of the table to sample",
"maxLength": 255,
"minLength": 1,
"title": "Table Name",
"type": "string"
},
"schema_name": {
"description": "Schema containing the table",
"maxLength": 255,
"minLength": 1,
"title": "Schema Name",
"type": "string"
},
"limit": {
"default": 10,
"description": "Rows to sample (1-20)",
"maximum": 20,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"database_name": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional warehouse-side database name (e.g. for Snowflake)",
"title": "Database Name"
}
},
"required": [
"database_id",
"table_name",
"schema_name"
],
"title": "sample_dataArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "sample_dataOutput"
}🟢myriade_search_catalog(database_id, text, asset_type, limit)
Search the data catalog for tables, columns, or terms by name/description. Uses fuzzy matching and full-text search. Keep queries short (1-2 words) for best results.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
},
"text": {
"description": "Search query — keep short (1-2 words) for best results",
"maxLength": 200,
"minLength": 1,
"title": "Text",
"type": "string"
},
"asset_type": {
"anyOf": [
{
"enum": [
"TABLE",
"COLUMN",
"TERM"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter: \"TABLE\", \"COLUMN\", or \"TERM\"",
"title": "Asset Type"
},
"limit": {
"default": 20,
"description": "Maximum results to return (1-50)",
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"required": [
"database_id",
"text"
],
"title": "search_catalogArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "search_catalogOutput"
}🟢myriade_read_asset(database_id, asset_id)
Get detailed information about a catalog object (table, column, schema, or glossary term — assets and terms share one id space). Returns the asset's description, tags, status, columns (for tables), sample data, parent hierarchy, and activity feed; for a glossary term, its definition, synonyms, related terms, and activity feed.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
},
"asset_id": {
"description": "UUID of the catalog object (asset or glossary term)",
"format": "uuid",
"title": "Asset Id",
"type": "string"
}
},
"required": [
"database_id",
"asset_id"
],
"title": "read_assetArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "read_assetOutput"
}🔴myriade_update_asset(database_id, asset_id, description, tag_ids, status)
Update a catalog asset's documentation (requires edit rights). - ``description`` replaces the existing description (auto-sets status to "draft" if status is null). - ``tag_ids`` replaces all tags (accepts names or UUIDs; auto-creates missing tags). - ``status`` is "draft" (needs review) or "published". Only use "published" with high confidence. Use ``myriade_request_catalog_change`` instead when you lack edit rights or are not confident enough to write directly.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
},
"asset_id": {
"description": "UUID of the asset to update",
"format": "uuid",
"title": "Asset Id",
"type": "string"
},
"description": {
"anyOf": [
{
"maxLength": 10000,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Replaces existing description; auto-sets status='draft' if status is null",
"title": "Description"
},
"tag_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"maxItems": 50,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Tag names or UUIDs (replaces all tags). Auto-creates missing tags.",
"title": "Tag Ids"
},
"status": {
"anyOf": [
{
"enum": [
"draft",
"published"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "\"draft\" (needs review) or \"published\" (production-ready)",
"title": "Status"
}
},
"required": [
"database_id",
"asset_id"
],
"title": "update_assetArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "update_assetOutput"
}🟡myriade_request_catalog_change(database_id, asset_id, field, proposed_value, rationale)
Propose a catalog change for the data team to review (no edit rights needed). Creates a reviewable suggestion routed to the asset's reviewers. Does NOT change the published catalog until approved. Use this instead of ``myriade_update_asset`` when you lack edit rights or are not confident enough to write directly.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
},
"asset_id": {
"description": "UUID of the asset to propose a change for",
"format": "uuid",
"title": "Asset Id",
"type": "string"
},
"field": {
"description": "Field to change: \"description\" or \"tags\"",
"enum": [
"description",
"tags"
],
"title": "Field",
"type": "string"
},
"proposed_value": {
"description": "Proposed description text, or JSON-encoded list of tag names",
"maxLength": 10000,
"title": "Proposed Value",
"type": "string"
},
"rationale": {
"description": "Why this change is proposed — shown to reviewers and in the activity feed",
"maxLength": 2000,
"title": "Rationale",
"type": "string"
}
},
"required": [
"database_id",
"asset_id",
"field",
"proposed_value",
"rationale"
],
"title": "request_catalog_changeArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "request_catalog_changeOutput"
}🟢myriade_list_reports(database_id, query, limit)
List or search reports (documents) written in Myriade. Without ``query`` returns the most recently updated reports first; with ``query`` returns the best matches first. Only reports the caller may see are returned. Read one with myriade_read_report.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "UUID of the database whose reports to list. Omit for organisation-level reports (not bound to a database).",
"title": "Database Id"
},
"query": {
"anyOf": [
{
"maxLength": 200,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional search terms (title, description, content); results are ranked by relevance",
"title": "Query"
},
"limit": {
"default": 20,
"description": "Maximum results to return (1-50)",
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "list_reportsArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_reportsOutput"
}🟢myriade_read_report(document_id)
Read a report's full markdown content. Applies the same visibility rule as the web app; a report the caller may not see returns a "not found" error. To create or edit a report, use myriade_ask — the analyst agent knows how reports are structured.
Esquema de entrada
{
"type": "object",
"properties": {
"document_id": {
"description": "UUID of the report (from myriade_list_reports)",
"format": "uuid",
"title": "Document Id",
"type": "string"
}
},
"required": [
"document_id"
],
"title": "read_reportArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "read_reportOutput"
}🔴myriade_ask(database_id, question)
Ask a natural language question about a database using Myriade's data analyst agent. The agent will explore the database schema, search the catalog, run SQL queries, and analyze the results to answer your question. Use this for complex analytical questions that require multiple steps; for simple schema lookups or direct SQL, prefer the other tools. The run executes in the background as a regular Myriade conversation (visible in the web UI). If it finishes quickly the answer is returned directly; otherwise the tool returns ``{"status": "running", "conversation_id": ...}`` — poll myriade_get_answer with that id to retrieve the result. Long analytical questions are expected to take several minutes. Note: the agent has access to catalog write operations (create/update assets, tags, terms) — it may modify catalog state to record findings. It can also read, create and edit reports (ask it to "write a report on ..." or "update report <id> with ..."). Use myriade_query directly for strictly read-only inspection. Requires AI_PROVIDER and the corresponding API key (e.g. AI_PROVIDER=anthropic + ANTHROPIC_API_KEY).
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
},
"question": {
"description": "Natural-language question about the data",
"maxLength": 4000,
"minLength": 1,
"title": "Question",
"type": "string"
}
},
"required": [
"database_id",
"question"
],
"title": "askArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "askOutput"
}🟢myriade_get_answer(conversation_id, wait_seconds)
Retrieve the result of a myriade_ask run. Returns ``{"status": "completed", "answer": ...}`` once the analyst agent has answered, or ``{"status": "running"}`` while it is still working — keep polling in that case. ``{"status": "failed"}`` / ``{"status": "quota_exceeded"}`` carry the run's error. ``{"status": "no_answer"}`` means the run is gone without a recorded answer (agent stopped silently, or the server restarted): start a new myriade_ask run.
Esquema de entrada
{
"type": "object",
"properties": {
"conversation_id": {
"description": "Conversation UUID returned by myriade_ask",
"format": "uuid",
"title": "Conversation Id",
"type": "string"
},
"wait_seconds": {
"default": 20,
"description": "How long to wait for the run to finish before reporting its status (long-poll)",
"maximum": 30,
"minimum": 0,
"title": "Wait Seconds",
"type": "integer"
}
},
"required": [
"conversation_id"
],
"title": "get_answerArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_answerOutput"
}🟢myriade_monitoring_overview(database_id)
Snapshot of a database's monitoring board: check count, standing alerts (open / acknowledged / known) with their headlines, recent notifications and triage notes, followed by the open alerts as JSON — each with its investigation and evidence while they fit, then as listing lines, with ``shown`` / ``total`` / ``detailed`` saying which. Alert ids feed myriade_triage_alert; check ids feed myriade_get_check. Investigation details are redacted unless you manage the database.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
}
},
"required": [
"database_id"
],
"title": "monitoring_overviewArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "monitoring_overviewOutput"
}🟢myriade_get_check(check_id, limit)
Get a monitoring check (name, SQL, severity, cadence, status) and its most recent run results, newest first. On governed databases the SQL and evidence rows are redacted unless you manage the database or authored the proposal.
Esquema de entrada
{
"type": "object",
"properties": {
"check_id": {
"description": "UUID of the monitoring check",
"format": "uuid",
"title": "Check Id",
"type": "string"
},
"limit": {
"default": 20,
"description": "Run results to return (1-100)",
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"required": [
"check_id"
],
"title": "get_checkArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_checkOutput"
}🟢myriade_propose_check(database_id, name, check_sql, severity, interval_minutes, ...)
Propose a monitoring check for the user to review in Myriade. This creates a PROPOSAL, never an active check: nothing runs until a database owner or org admin accepts it in the app. The SQL is test-run once under your governance context to validate it. Contract for ``check_sql``: it MUST return rows ONLY when something is wrong (zero rows = healthy) and use relative time (``now() - interval``), never absolute dates. Minimum cadence is 5 minutes. Names are unique per database — read myriade_monitoring_overview before proposing a near-duplicate.
Esquema de entrada
{
"type": "object",
"properties": {
"database_id": {
"description": "UUID of the database",
"format": "uuid",
"title": "Database Id",
"type": "string"
},
"name": {
"description": "Short human-readable name (unique per database)",
"maxLength": 255,
"minLength": 1,
"title": "Name",
"type": "string"
},
"check_sql": {
"description": "SQL returning zero rows when healthy, rows when wrong",
"maxLength": 20000,
"minLength": 1,
"title": "Check Sql",
"type": "string"
},
"severity": {
"default": "MEDIUM",
"description": "Severity raised when the check trips",
"enum": [
"LOW",
"MEDIUM",
"HIGH",
"CRITICAL"
],
"title": "Severity",
"type": "string"
},
"interval_minutes": {
"default": 60,
"description": "Cadence in minutes (minimum 5)",
"minimum": 5,
"title": "Interval Minutes",
"type": "integer"
},
"description": {
"default": "",
"description": "One sentence, prospective tense: \"Trips when <condition> (baseline ~X)\"",
"maxLength": 2000,
"title": "Description",
"type": "string"
},
"group_name": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cluster to file the check under (reuse an existing group's exact name), or omit to leave it unfiled",
"title": "Group Name"
}
},
"required": [
"database_id",
"name",
"check_sql"
],
"title": "propose_checkArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "propose_checkOutput"
}🔴myriade_triage_alert(alert_id, action, statement, note, hours)
Triage an alert (requires manage access: database owner or org admin). - ``resolve``: the underlying problem is handled or gone. - ``acknowledge``: keep it standing with a ``statement`` of what is happening — only for a situation that may worsen. - ``dismiss``: false positive / expected; refused while the check still trips (it would just respawn). - ``snooze``: silence for ``hours`` with a ``statement``; reopens by itself if the check still trips afterwards. - ``reopen``: send a parked alert back to "needs action" with a ``statement`` of what is no longer covered.
Esquema de entrada
{
"type": "object",
"properties": {
"alert_id": {
"description": "UUID of the alert",
"format": "uuid",
"title": "Alert Id",
"type": "string"
},
"action": {
"description": "Transition to apply to the alert",
"enum": [
"resolve",
"acknowledge",
"dismiss",
"snooze",
"reopen"
],
"title": "Action",
"type": "string"
},
"statement": {
"anyOf": [
{
"maxLength": 500,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "One SHORT present-tense plain-text sentence (~120 chars, no Markdown) shown as the alert headline. Required for acknowledge, snooze and reopen.",
"title": "Statement"
},
"note": {
"anyOf": [
{
"maxLength": 2000,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional note appended to the alert details (resolve, dismiss)",
"title": "Note"
},
"hours": {
"anyOf": [
{
"maximum": 168,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Snooze window in hours (1-168). Required for snooze.",
"title": "Hours"
}
},
"required": [
"alert_id",
"action"
],
"title": "triage_alertArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "triage_alertOutput"
}Prompts recomendados
myriade_querymyriade_querymyriade_get_database_infomyriade_get_database_infomyriade_list_databasesComunidad
Evidencia