Lector SQL de MCP

Escriba SQL de solo lectura para contacts.query y trade.query: vistas permitidas, columnas, gramática, paginación y gestión de errores.

dureach.contacts.query y dureach.trade.query aceptan SQL de solo lectura sobre los conjuntos de contactos y envíos documentados. Use un único SELECT con columnas permitidas; no se admiten uniones ni escrituras.

¿Qué vistas y columnas están permitidas?

HerramientaVistaColumnas
dureach.contacts.querycontactsid, full_name, job_title, company_name, company_domain, city, country
dureach.trade.querybol_shipmentsid, source_type, trade_flow, bol_number, actual_arrival_date, shipper_name, consignee_name, product_desc

Consulte solo estas columnas. Las tablas, columnas o prefijos de base de datos desconocidos devuelven un error de validación. product_desc se trunca a 300 caracteres en los resultados.

¿Qué forma de SQL se acepta?

  • Un único SELECT con WHERE, GROUP BY, HAVING y ORDER BY opcionales. Se permiten alias.
  • Se admiten comparaciones, operadores booleanos, aritmética, IN literal y LIKE.
  • Funciones agregadas y escalares: count, sum, avg, min, max, uniqExact, lower, upper, length, coalesce, toDate, toYear, toMonth.
  • No admitido: joins, subconsultas, CTE, funciones de ventana, SETTINGS, FORMAT, LIMIT/OFFSET de SQL, SELECT SETTINGS, GROUP BY WITH TOTALS, IN global y ORDER BY posicional.
  • El SQL debe tener como máximo 16 KiB UTF-8. Las sentencias mayores devuelven un error de validación antes de la ejecución.
{
  "sql": "SELECT company_name, city, country FROM contacts WHERE country = 'DE' AND company_domain LIKE '%gmbh%' ORDER BY company_name, city",
  "page": 1,
  "limit": 25
}

La página 2 y posteriores requieren ORDER BY. Use una ordenación admitida por el esquema y añada un criterio permitido para desempatar cuando esté disponible. Los empates y cambios en la fuente pueden mover filas entre páginas; los resultados acotados no son una exportación completa.

¿Cómo funciona la paginación?

Utilice page (1–20) y limit (1–50). No añada LIMIT/OFFSET de SQL. Los resultados devuelven nombres de columna, tipos ClickHouse y arrays ordenados de filas sin recuento total:

{
  "columns": [{"name": "company_name", "type": "String"}],
  "rows": [["Example GmbH"]],
  "page": 1,
  "limit": 25
}

Los UUID, las fechas, los decimales y los enteros fuera del rango seguro de JSON llegan como cadenas; los flotantes no finitos llegan como cadenas. Un resultado mayor de 1 MiB devuelve result_too_large; reduzca la lista de columnas o los filtros y reintente.

¿Cómo deben gestionarse los errores?

CódigoSignificadoSolución
error de validación en sqlPalabra clave, tabla, columna o forma no permitida.Mantenga un SELECT en la vista y las columnas indicadas; elimine joins, subconsultas, CTE, SETTINGS, FORMAT y el LIMIT de SQL.
SQL exceeds 16 KiBSentencia demasiado grande.Acorte los predicados o divida la pregunta en consultas más pequeñas.
falta ORDER BY en página 2+La página con offset no es determinista.Añada ORDER BY con un criterio único de desempate.
quota_exceeded (contacts_daily)Presupuesto diario de contactos agotado.Espere al restablecimiento o consulte a un administrador sobre los límites del plan.
result_too_largeResultado transmitido superior a 1 MiB.Seleccione menos columnas, añada filtros o reduzca limit.

Registre el request_id y el código de error. Nunca registre SQL completo con identificadores de clientes junto a tokens.

Páginas relacionadas