# CRM MCP e REST API — MCP server on mcp.ai > Your own CRM, fully customizable and agent-driven. Start with contacts, companies and a sales pipeline, then create your own objects and fields and get an API instantly. You own all the data, isolated in a database of your own. Pay only for what you store and use. By: mcp.ai · official Page: https://mcp.ai/crm ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_crm?ms=1781858100000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/crm/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/crm/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/crm/skill.md Postman collection (v2.1): https://mcp.ai/crm/postman.json ## Tools - crm_add_field(object: string, key: string, label?: string, type: string, required?: boolean, unique?: boolean, indexed?: boolean, options?: string, relation?: string, account?: string) — Adiciona um CAMPO custom a um objeto (sem migração; registros antigos ficam sem a key). Tipos: string text integer float boolean date datetime singleselect multiselect email phone url currency relatio - crm_confirm_upload(file_id: string, account?: string, file_ids?: string[]) — Confirma o upload depois do PUT na upload_url (o storage valida o tamanho real). Marca o arquivo como pronto e contabiliza no uso. - crm_create_records(object: string, data?: string, metadata?: string, records?: string, account?: string) — Cria um registro (ou vários) de um objeto. Passe `object` (ex.: 'contact', 'deal') e `data` (objeto JSON com os campos por key). Para vários, use `records` (array JSON de {data}). - crm_define_object(key: string, label?: string, module?: string, display_field?: string, fields?: string, account?: string) — Cria um OBJETO custom no CRM (além de contact/company/deal) e ganha CRUD/API automático. Passe `key` (api name, a-z/0-9/_), `label` e opcionalmente `fields` (array JSON de definições de campo). - crm_delete_file(ids?: string[], file_id?: string, account?: string) — Remove um ou mais arquivos (apaga do storage e libera o espaço contabilizado). - crm_delete_object(object: string, delete_records?: boolean, account?: string) — Remove um objeto CUSTOM (objetos de sistema não podem ser removidos). Se houver registros, passe delete_records:true para apagar tudo junto. - crm_delete_records(object: string, ids: string[], account?: string) — Remove um ou mais registros de um objeto por id. - crm_describe(account?: string) — Descreve o schema do CRM: todos os objetos (contact, company, deal e quaisquer custom) com seus campos (key, tipo, obrigatório, opções, relações) e o kanban. CHAME ISTO PRIMEIRO para saber quais objet - crm_download_file(file_id: string, account?: string, file_ids?: string[]) — Gera uma URL presigned de download (GET) pra um arquivo. A URL expira em alguns minutos. - crm_get_file(file_id: string, account?: string, file_ids?: string[]) — Metadados de um arquivo (nome, tamanho, content_type, status, anexo). - crm_get_object(object: string, account?: string) — Detalha UM objeto: seu rótulo, kanban e todos os campos (key, tipo, obrigatório, opções, relação). Versão focada do crm_describe. - crm_get_records(object: string, ids: string[], account?: string) — Busca um ou mais registros de um objeto por id. - crm_link_record(object: string, id: string, field: string, target_id: string, account?: string, ids?: string[], target_ids?: string[]) — Liga um registro a outro por um campo de relação (ex.: vincular um contato a uma empresa). Para relação 'many' adiciona ao conjunto; para 'single' define o alvo. - crm_list_accounts() — Lista os CRMs conectados neste install. Retorna cada um com id, rótulo e is_default (true quando só há um, não precisa passar `account` nas outras tools). - crm_list_files(object?: string, record_id?: string, account?: string, record_ids?: string[]) — Lista os arquivos do CRM (id, nome, tamanho, status). Opcionalmente filtra os anexados a um objeto/registro. - crm_list_objects(account?: string) — Lista os objetos do CRM (key, rótulo, módulo, kanban). Versão enxuta do crm_describe, sem os campos. - crm_list_records(object: string, filter?: string, sort?: string, limit?: integer, offset?: integer, account?: string) — Lista registros de um objeto, com filtro/ordenação/paginação. `filter` é um objeto JSON: {campo: valor} ou {campo: {op: valor}} (ops: eq ne gt gte lt lte in nin contains exists). - crm_move_stage(object: string, id: string, stage: string, account?: string, ids?: string[]) — Move um registro de um objeto kanban (ex.: deal) para outra etapa do funil. Valida a etapa contra as opções do campo de stage. - crm_publish_file(file_id: string, account?: string, file_ids?: string[]) — Torna um arquivo PÚBLICO e devolve uma URL estável (`https://api.mcp.ai/f/`) pra embutir num site (ex.: thumbnail). O objeto continua privado no storage, o token é a chave (revogável com crm_un - crm_related_records(object: string, id: string, field?: string, account?: string, ids?: string[]) — Resolve os registros relacionados de um registro: segue os campos de relação e devolve os registros-alvo (todos, ou só de um `field`). - crm_remove_field(object: string, key: string, account?: string) — Remove um campo CUSTOM (soft-delete: some do schema, mas os valores já gravados ficam preservados). Campos de sistema não podem ser removidos. - crm_search(q: string, object?: string, limit?: integer, account?: string) — Busca textual nos registros (por nome/título/valores). Opcionalmente restrita a um `object`. - crm_unlink_record(object: string, id: string, field: string, target_id?: string, account?: string, ids?: string[], target_ids?: string[]) — Desfaz uma relação. Para relação 'many' remove o target_id do conjunto; para 'single' limpa o campo (target_id opcional). - crm_unpublish_file(file_id: string, account?: string, file_ids?: string[]) — Revoga o link público de um arquivo (o token para de funcionar na hora). - crm_update_field(object: string, key: string, type?: string, label?: string, required?: boolean, visible?: boolean, position?: integer, indexed?: boolean, options?: string, account?: string) — Edita um campo: rótulo, obrigatório, visível, posição, opções, indexação. Mudança de TIPO só é permitida se for um alargamento seguro (ex.: integer→float); mudança com perda é bloqueada (crie um campo - crm_update_object(object: string, label?: string, display_field?: string, module?: string, kanban?: string, account?: string) — Edita um objeto: rótulo, campo de exibição, módulo ou config de kanban (a key é imutável). Vale para objetos de sistema e custom. - crm_update_records(object: string, id?: string, data?: string, metadata?: string, updates?: string, account?: string, ids?: string[]) — Atualiza um registro (merge parcial) por id. Passe `object`, `id` e `data` (só os campos a mudar; null apaga o campo). Para vários, use `updates` (array JSON de {id, data}). - crm_upload_file(filename: string, size: integer, content_type?: string, object?: string, record_id?: string, account?: string, record_ids?: string[]) — Inicia o upload de um arquivo (até 200 MB) e devolve uma URL presigned (`upload_url`) pra fazer o PUT direto no storage, mais o `file_id`. Depois do PUT, chame crm_confirm_upload. Opcional: anexe a um - crm_upload_from_url(url: string, filename?: string, content_type?: string, object?: string, record_id?: string, account?: string, record_ids?: string[]) — Sobe um arquivo A PARTIR DE UMA URL (a plataforma baixa e armazena, até 200 MB) — o jeito do AGENTE subir via API sem segurar os bytes. Devolve o arquivo já pronto. Opcional: anexe a um registro com o - crm_usage(account?: string) — Uso de storage deste CRM: bytes do banco + bytes de arquivos, total em GB, nº de arquivos e egress acumulado. É a base do que é cobrado (storage GB-mês + egress). ## Example prompts - "List my open deals in the pipeline" - "Create a contact Ada Lovelace with email ada@math.org" - "Add a custom field 'source' to contacts" ## Links Docs: https://mcp.ai/docs/mcps/crm Website: https://mcp.ai/mcps/crm