{"name":"io.github.mcp-dir/crm-mcp","slug":"mcp-dir-crm-mcp","title":"CRM","description":"Your own CRM, fully customizable and agent-driven. Start with contacts, companies and a sales pipeli","url":"https://mcp.market/server/mcp-dir-crm-mcp","rating":null,"grade":"B","score":79,"certified":false,"status":"active","category":"sales","tags":["sales","ai"],"presence":{"score":15,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-08-30T19:43:44.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T07:50:26.214Z","last_ok_at":"2026-11-04T07:50:26.214Z","latency_ms":161},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/mcp-dir/crm-mcp","website":null,"version":"0.1.0","remotes":[{"type":"streamable-http","url":"https://api.mcp.ai/p_crm"}],"packages":[],"tools":[{"name":"authenticate","description":"MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: \"<jwt>\" } after the user pastes, or with no args to get the link.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"connect","description":"Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_add_field","description":"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 relation user_ref json group.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"required":{"type":"boolean"},"unique":{"type":"boolean"},"indexed":{"type":"boolean"},"options":{"type":"string"},"relation":{"type":"string"},"account":{"type":"string"}},"required":["object","key","type"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_confirm_upload","description":"Confirma o upload depois do PUT na upload_url (o storage valida o tamanho real). Marca o arquivo como pronto e contabiliza no uso.\n\nBulk support: accepts file_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"file_id":{"type":"string"},"account":{"type":"string"},"file_ids":{"type":"array","items":{"type":"string"}}},"required":["file_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_create_records","description":"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}).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"data":{"type":"string"},"metadata":{"type":"string"},"records":{"type":"string"},"account":{"type":"string"}},"required":["object"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_define_object","description":"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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"module":{"type":"string"},"display_field":{"type":"string"},"fields":{"type":"string"},"account":{"type":"string"}},"required":["key"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_delete_file","description":"Remove um ou mais arquivos (apaga do storage e libera o espaço contabilizado).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"}},"file_id":{"type":"string"},"account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_delete_object","description":"Remove um objeto CUSTOM (objetos de sistema não podem ser removidos). Se houver registros, passe delete_records:true para apagar tudo junto.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"delete_records":{"type":"boolean"},"account":{"type":"string"}},"required":["object"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_delete_records","description":"Remove um ou mais registros de um objeto por id.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"ids":{"type":"array","items":{"type":"string"}},"account":{"type":"string"}},"required":["object","ids"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_describe","description":"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 objetos/campos existem antes de criar/ler registros.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_download_file","description":"Gera uma URL presigned de download (GET) pra um arquivo. A URL expira em alguns minutos.\n\nBulk support: accepts file_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"file_id":{"type":"string"},"account":{"type":"string"},"file_ids":{"type":"array","items":{"type":"string"}}},"required":["file_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_get_file","description":"Metadados de um arquivo (nome, tamanho, content_type, status, anexo).\n\nBulk support: accepts file_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"file_id":{"type":"string"},"account":{"type":"string"},"file_ids":{"type":"array","items":{"type":"string"}}},"required":["file_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_get_object","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"account":{"type":"string"}},"required":["object"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_get_records","description":"Busca um ou mais registros de um objeto por id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"ids":{"type":"array","items":{"type":"string"}},"account":{"type":"string"}},"required":["object","ids"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_link_record","description":"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.\n\nBulk support: accepts ids, target_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"id":{"type":"string"},"field":{"type":"string"},"target_id":{"type":"string"},"account":{"type":"string"},"ids":{"type":"array","items":{"type":"string"}},"target_ids":{"type":"array","items":{"type":"string"}}},"required":["object","id","field","target_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_list_accounts","description":"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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_list_files","description":"Lista os arquivos do CRM (id, nome, tamanho, status). Opcionalmente filtra os anexados a um objeto/registro.\n\nBulk support: accepts record_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"record_id":{"type":"string"},"account":{"type":"string"},"record_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_list_objects","description":"Lista os objetos do CRM (key, rótulo, módulo, kanban). Versão enxuta do crm_describe, sem os campos.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_list_records","description":"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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"filter":{"type":"string"},"sort":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"},"account":{"type":"string"}},"required":["object"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_move_stage","description":"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.\n\nBulk support: accepts ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"id":{"type":"string"},"stage":{"type":"string"},"account":{"type":"string"},"ids":{"type":"array","items":{"type":"string"}}},"required":["object","id","stage"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_publish_file","description":"Torna um arquivo PÚBLICO e devolve uma URL estável (`https://api.mcp.ai/f/<token>`) pra embutir num site (ex.: thumbnail). O objeto continua privado no storage, o token é a chave (revogável com crm_unpublish_file). Egress da visualização pública é contabilizado.\n\nBulk support: accepts file_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"file_id":{"type":"string"},"account":{"type":"string"},"file_ids":{"type":"array","items":{"type":"string"}}},"required":["file_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_related_records","description":"Resolve os registros relacionados de um registro: segue os campos de relação e devolve os registros-alvo (todos, ou só de um `field`).\n\nBulk support: accepts ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"id":{"type":"string"},"field":{"type":"string"},"account":{"type":"string"},"ids":{"type":"array","items":{"type":"string"}}},"required":["object","id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_remove_field","description":"Remove um campo CUSTOM (soft-delete: some do schema, mas os valores já gravados ficam preservados). Campos de sistema não podem ser removidos.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"key":{"type":"string"},"account":{"type":"string"}},"required":["object","key"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_search","description":"Busca textual nos registros (por nome/título/valores). Opcionalmente restrita a um `object`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string"},"object":{"type":"string"},"limit":{"type":"number"},"account":{"type":"string"}},"required":["q"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_unlink_record","description":"Desfaz uma relação. Para relação 'many' remove o target_id do conjunto; para 'single' limpa o campo (target_id opcional).\n\nBulk support: accepts ids, target_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"id":{"type":"string"},"field":{"type":"string"},"target_id":{"type":"string"},"account":{"type":"string"},"ids":{"type":"array","items":{"type":"string"}},"target_ids":{"type":"array","items":{"type":"string"}}},"required":["object","id","field"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_unpublish_file","description":"Revoga o link público de um arquivo (o token para de funcionar na hora).\n\nBulk support: accepts file_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"file_id":{"type":"string"},"account":{"type":"string"},"file_ids":{"type":"array","items":{"type":"string"}}},"required":["file_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_update_field","description":"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 novo e migre).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"key":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"visible":{"type":"boolean"},"position":{"type":"number"},"indexed":{"type":"boolean"},"options":{"type":"string"},"account":{"type":"string"}},"required":["object","key"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_update_object","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"label":{"type":"string"},"display_field":{"type":"string"},"module":{"type":"string"},"kanban":{"type":"string"},"account":{"type":"string"}},"required":["object"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_update_records","description":"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}).\n\nBulk support: accepts ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"object":{"type":"string"},"id":{"type":"string"},"data":{"type":"string"},"metadata":{"type":"string"},"updates":{"type":"string"},"account":{"type":"string"},"ids":{"type":"array","items":{"type":"string"}}},"required":["object"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_upload_file","description":"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 registro com `object`+`record_id`.\n\nBulk support: accepts record_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"filename":{"type":"string"},"size":{"type":"number"},"content_type":{"type":"string"},"object":{"type":"string"},"record_id":{"type":"string"},"account":{"type":"string"},"record_ids":{"type":"array","items":{"type":"string"}}},"required":["filename","size"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_upload_from_url","description":"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 object+record_id.\n\nBulk support: accepts record_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string"},"filename":{"type":"string"},"content_type":{"type":"string"},"object":{"type":"string"},"record_id":{"type":"string"},"account":{"type":"string"},"record_ids":{"type":"array","items":{"type":"string"}}},"required":["url"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crm_usage","description":"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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"marketplace","description":"The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\", \"consulta um CPF\", \"is there a tool for Y\". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"action":{"default":"search","type":"string","enum":["search","describe","install","uninstall","subscribe","cancel","resume","report_bug","request_mcp","list_tools","invoke","search_prompts","get_prompt","publish_prompt"]},"query":{"default":"","type":"string"},"mcp_id":{"default":"","type":"string"},"limit":{"default":10,"type":"number"},"tier_slug":{"default":"","type":"string"},"immediate":{"default":false,"type":"boolean"},"cancel_reason":{"type":"string","enum":["too_expensive","missing_features","switched_service","unused","customer_service","too_complex","low_quality","other"]},"cancel_comment":{"default":"","type":"string"},"message":{"default":"","type":"string"},"report_context":{"default":"","type":"string"},"conversation":{"default":"[]","type":"string"},"request_name":{"default":"","type":"string"},"request_details":{"default":"","type":"string"},"tool_id":{"default":"","type":"string"},"arguments":{"default":"{}","type":"string"},"prompt_slug":{"default":"","type":"string"},"prompt_vars":{"default":"{}","type":"string"},"prompt_category":{"default":"","type":"string"},"prompt_tool":{"default":"","type":"string"},"prompt_title":{"default":"","type":"string"},"prompt_description":{"default":"","type":"string"},"prompt_body":{"default":"","type":"string"},"prompt_targets":{"default":[],"type":"array","items":{"type":"string","enum":["claude","chatgpt","cursor","lovable"]}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"report_bug","description":"Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"message":{"type":"string"},"context":{"default":"","type":"string"},"conversation":{"default":"[]","type":"string"}},"required":["message"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"show_version","description":"Show the current MCP platform and adapter versions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"toolkit_info","description":"Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":79,"grade":"B","scanned_at":"2026-11-01T22:10:41.078Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-01T22:10:41.075Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1051ms"]},"poisoning":{"score":15,"max":15,"notes":["36 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 12 write-action tools with no auth"]},"maintenance":{"score":12,"max":15,"notes":["last push 63 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://api.mcp.ai/p_crm","reachable":true,"authRequired":false,"latencyMs":1051,"serverInfo":{"name":"mcp-ai","version":"0.9.398"}}],"packages":[],"repo":{"found":true,"owner":"mcp-dir","repo":"crm-mcp","archived":false,"pushedAt":"2026-08-30T19:43:44Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/207912538?v=4","ownerCreatedAt":"2025-04-16T18:01:51Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-30T19:43:44.000Z","score":15}}}},"grade_history":[],"reviews":[]}