Fluxo CRM integration
Fluxo CRM is a Brazilian sales CRM with a shared inbox. An agent can read and write contacts, companies, leads (and convert them), deals and the records of any custom module, move deals through pipelines and mark them won or lost, create pipelines and stages, log activities and interactions, manage tags, notes and attachments, import contacts, companies and leads in bulk, read inbox channels, conversations and messages, update a conversation or add an internal note, list automations, and manage webhook subscriptions. Field names and enum values are Portuguese (nome, telefone, negocios...); module fields are discovered with list_module_fields. Not included: sending a message to a contact (a conversation can sit on a WhatsApp Web channel linked to a phone through Evolution, an unofficial gateway the route cannot exclude), the WhatsApp Web group and participant lists (same channel), the field-change history and the diagnostic ping and spec routes; automation inbound-webhook addresses and the webhook signing secret are withheld. Authentication is an organization API key (flx_live_...) created in the Fluxo CRM settings under Integrations with the scopes it needs, sent as a Bearer token; each key has a per-minute limit (120 by default).
Say what should happen.
The workflow builds itself.
What you can do with Fluxo CRM
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Each badge shows the default agent permission of an endpoint (allowed: an agent calls it without asking; ask first: you are asked before an agent calls it, when the agent or chat asks permission for sensitive actions; never: no agent may call it), which every user can change endpoint by endpoint in their credential settings.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Deal, 10 operations
create_dealCreate dealPOSTAgents: ask firstCreates a deal in the first open stage of pipeline_id (required), with valores keyed by the negocios field slugs, an optional contact and tags. May trigger automations and webhooks.delete_dealDelete dealDELETEAgents: ask firstDeletes a deal (soft delete: it leaves listings and reports).get_dealGet dealGETAgents: ask firstReturns one deal visible to the key's user: owner, team, pipeline, stage, company, campaign, field values (valores) and the names behind their ids (valores_nomes).list_company_dealsList company dealsGETAgents: ask firstLists the deals linked to a company, with pipeline, stage, owner and field values. Needs the negocios:ler scope.list_dealsList dealsGETAgents: ask firstLists deals visible to the key's user, filterable by pipeline, stage, owner, company, campaign, contact (id, email, phone or Instagram) and dates; cursor-paginated.mark_deal_lostMark deal lostPOSTAgents: ask firstMoves a deal to a lost stage (estagio_id of a stage of type perdido; 422 otherwise) and records motivo as the loss reason, required when the organization defined reason options.mark_deal_wonMark deal wonPOSTAgents: ask firstMoves a deal to a won stage (estagio_id of a stage of type ganho from list_pipelines; 422 otherwise). Can trigger the organization's automations and webhooks.move_deal_stageMove deal stagePOSTAgents: ask firstMoves a deal to another stage (estagio_id from list_pipelines) and emits negocio.estagio_alterado. When the target stage is of type perdido, motivo (the loss reason) is required.update_dealUpdate dealPATCHAgents: ask firstChanges the field values you send in valores on a deal, and can set its contact and tags. Stage changes go through move_deal_stage, mark_deal_won and mark_deal_lost.upsert_dealUpsert dealPOSTAgents: ask firstCreates or updates a deal matched by its contact (id, email, phone, Instagram, in that order). Keeps the current stage unless mover_estagio is true; creating needs pipeline and estagio.
Contact, 9 operations
bulk_upsert_contactsBulk upsert contactsPOSTAgents: ask firstCreates up to 200 contacts in one call, or with modo upsert updates the ones matching the Contacts index. Returns one result per item. Writes real records; send trigger [] to skip webhooks.check_contact_existsCheck contact existsGETAgents: ask firstAnswers whether a contact id exists in the organization (existe true or false) without returning the record. Useful to reconcile after a sync.create_contactCreate contactPOSTAgents: ask firstCreates a contact. If one with the same mobile number already exists and nothing contradicts it, that record is completed instead (criado false). Personal data; may trigger automations and webhooks.delete_contactDelete contactDELETEAgents: ask firstDeletes a contact (soft delete: it stops appearing in the API, its history is kept).get_contactGet contactGETAgents: ask firstReturns one contact with names, emails, phones, CPF, birth date, addresses, company, owner and custom fields (dados): personal data.list_company_contactsList company contactsGETAgents: ask firstLists the contacts linked to a company (name, email, phone, job title): personal data. Needs the contatos:ler scope.list_contactsList contactsGETAgents: ask firstLists contacts, newest first, filterable by email, phone, owner, company, dates or a search; cursor-paginated. Contacts carry personal data (phones, emails, CPF, birth date, addresses).update_contactUpdate contactPATCHAgents: ask firstChanges the fields you send on a contact; the others keep their value (an empty body is refused). Returns the updated contact.upsert_contactUpsert contactPOSTAgents: ask firstCreates or updates a contact matched by the Contacts index fields (email, phones, instagram by default), or by the fields named in chave. casou_por says which field matched; null when it created.
Activity, 7 operations
complete_activityComplete activityPOSTAgents: ask firstMarks an activity as completed (status concluida) with the completion time and emits atividade.concluida, which can trigger automations and webhooks.create_activityCreate activityPOSTAgents: ask firstCreates an activity (call, email, meeting, task, visit or other) on a lead, contact, company or deal: tipo, titulo, entidade_tipo and entidade_id are required. May trigger the organization's automations and webhooks.delete_activityDelete activityDELETEAgents: ask firstDeletes an activity (soft delete: it leaves the linked entity's timeline).get_activityGet activityGETAgents: ask firstReturns one activity: type, title, description, due time, responsible user, status, linked entity, custom fields, and feedback and completion time once completed.list_activitiesList activitiesGETAgents: ask firstLists activities (calls, emails, meetings, tasks, visits), newest first, filterable by type, status, responsible user and linked entity. Cursor-paginated; filter by usuario_id and status for one person's to-do list.list_contact_activitiesList contact activitiesGETAgents: ask firstLists a contact's activity timeline (type, title, status, due time). Needs the atividades:ler scope.update_activityUpdate activityPATCHAgents: ask firstChanges the fields you send on an activity; the others keep their value. To complete it, prefer complete_activity, which stamps the date and emits the event.
Company, 7 operations
bulk_upsert_companiesBulk upsert companiesPOSTAgents: ask firstCreates up to 200 companies in one call, or with modo upsert updates the ones matching by CNPJ, then website. Returns one result per item. Writes real records; send trigger [] to skip webhooks.create_companyCreate companyPOSTAgents: ask firstAlways creates a new company (nome required). For repeated imports use upsert_company. May trigger automations and webhooks.delete_companyDelete companyDELETEAgents: ask firstDeletes a company (soft delete: it stops appearing in the API; the history of linked records is kept).get_companyGet companyGETAgents: ask firstReturns one company with CNPJ, website, phone, sector, size, city, state, owner and its custom fields (dados).list_companiesList companiesGETAgents: ask firstLists companies, newest first, filterable by CNPJ, owner, dates or a search; cursor-paginated.update_companyUpdate companyPATCHAgents: ask firstChanges the fields you send on a company; the others keep their value (an empty body is refused).upsert_companyUpsert companyPOSTAgents: ask firstCreates or updates a company matched by cnpj, website or nome (the first present, or the one named in chave). criado says whether it created. May trigger automations and webhooks.
Lead, 7 operations
bulk_upsert_leadsBulk upsert leadsPOSTAgents: ask firstCreates up to 200 leads in one call, or with modo upsert updates the ones matching by email, then phone. Returns one result per item. Writes real records; send trigger [] to skip webhooks.convert_leadConvert leadPOSTAgents: ask firstConverts a lead into a contact (criar_contato, default true) and optionally a company (criar_empresa) and a deal (criar_oportunidade, with pipeline_id), in one operation. Returns the lead and the new ids.create_leadCreate leadPOSTAgents: ask firstCreates a lead (nome required) with optional email, phone, company, job title, source, status and owner. Personal data; may trigger the organization's automations and webhooks.delete_leadDelete leadDELETEAgents: ask firstDeletes a lead (soft delete; its history is kept).get_leadGet leadGETAgents: ask firstReturns one lead with contact details (personal data), status, owner and loss reason; contato_id, empresa_id and negocio_id are filled once it has been converted.list_leadsList leadsGETAgents: ask firstLists leads, newest first, filterable by status, email, owner, dates or a search; cursor-paginated. Leads carry personal data (name, email, phone).update_leadUpdate leadPATCHAgents: ask firstChanges the fields you send on a lead. Status convertido is refused here: use convert_lead, which creates the contact, company and deal together.
Webhook, 6 operations
create_webhookCreate webhookPOSTAgents: ask firstSubscribes a URL to Fluxo CRM events (names from list_webhook_events, * for all, or a prefix like negocio.*). The signing secret is withheld here, so deliveries cannot be verified: see the details.delete_webhookDelete webhookDELETEAgents: ask firstDeletes a webhook subscription; deliveries stop. To pause instead, set ativo false with update_webhook.get_webhookGet webhookGETAgents: ask firstReturns one webhook subscription: url, events, description, active flag, consecutive failures, disabled time and last delivery time. The signing secret is not returned.list_webhooksList webhooksGETAgents: ask firstLists the organization's webhook subscriptions with url, events, active flag, consecutive failures and last delivery time. The signing secret is never returned.send_test_webhookSend test webhookPOSTAgents: ask firstQueues a synthetic test delivery to the subscription's URL (a real request) to check the endpoint and its signature check.update_webhookUpdate webhookPATCHAgents: ask firstChanges a webhook subscription's url, events, description or active flag; leave a field out to keep it. Reactivating a subscription disabled after failures resets its failure counter.
Interaction, 5 operations
create_interactionCreate interactionPOSTAgents: ask firstLogs a meeting, call, follow-up or sent email on a contact, company, lead or record (tipo, titulo, data, entidade_tipo and entidade_id required). On a lead it also updates its last-activity date.delete_interactionDelete interactionDELETEAgents: ask firstDeletes an interaction (soft delete: it leaves the agenda and the linked entity's timeline).get_interactionGet interactionGETAgents: ask firstReturns one interaction: type, title, description, time, duration, status, owner, linked entity, call direction and outcome, purpose, meeting place or video link, reminder, recurrence and participants.list_interactionsList interactionsGETAgents: ask firstLists logged meetings, calls, follow-ups and sent emails, newest first, filterable by entity, type, status, call direction, owner and date window. Cursor-paginated.update_interactionUpdate interactionPATCHAgents: ask firstChanges the fields you send on an interaction; leaving a field out keeps its value. The change is added to the interaction's timeline.
Record, 5 operations
create_recordCreate recordPOSTAgents: ask firstCreates a record in a module: valores keyed by the module's field slugs (from list_module_fields), plus optional owner and team. May trigger the organization's automations and webhooks.delete_recordDelete recordDELETEAgents: ask firstDeletes a module record (soft delete: it leaves the listings).get_recordGet recordGETAgents: ask firstReturns one module record: owner, team, pipeline, stage, company, campaign, field values (valores) and the names behind the ids they hold (valores_nomes).list_recordsList recordsGETAgents: ask firstLists the records of any module by slug (deals, custom modules...), filterable by pipeline, stage, owner and dates; cursor-paginated. Field values come in valores, keyed by field slug.update_recordUpdate recordPATCHAgents: ask firstChanges the fields you send in valores on a module record; the other fields keep their value. Can also change the team.
Attachment, 4 operations
delete_attachmentDelete attachmentDELETEAgents: ask firstDeletes an attachment (soft delete: it leaves the API, the stored file itself is not deleted by this call).get_attachmentGet attachmentGETAgents: ask firstReturns one attachment's metadata: name, description, MIME type, size in bytes, access url, linked entity and owner.list_attachmentsList attachmentsGETAgents: ask firstLists the attachments of one record, lead or note, newest first: name, description, access url, MIME type, size in bytes and owner. entidade_tipo (registro, lead or nota) and entidade_id are required.register_attachmentRegister attachmentPOSTAgents: ask firstLinks a file already uploaded to storage to a record, lead or note, by its url, name, MIME type and size in bytes. It does not upload the file itself.
Note, 4 operations
create_record_noteCreate record notePOSTAgents: ask firstAdds a note to a module record. Needs edit permission on the module.delete_record_noteDelete record noteDELETEAgents: ask firstDeletes a note of a record permanently (notes have no soft delete); this cannot be undone.list_record_notesList record notesGETAgents: ask firstLists the notes of a module record, newest first, with text and author.update_record_noteUpdate record notePATCHAgents: ask firstReplaces the text of a note. The note must belong to the record in the path (404 otherwise).
Tag, 4 operations
add_entity_tagAdd entity tagPOSTAgents: ask firstLinks a tag to a record, by etiqueta_id or by nome (found case-insensitively, created in that module when missing); never both. Idempotent: ja_tinha says whether it was already linked.list_entity_tagsList entity tagsGETAgents: ask firstLists the tags currently linked to a contact, deal, company, task or custom-module record. tipo is the module slug from list_modules (contatos, negocios, empresas, tarefas...).list_tagsList tagsGETAgents: ask firstLists the organization's tags in alphabetical order with colour and module (null module: usable in every module), at most 500; truncado says whether the list was cut.remove_entity_tagRemove entity tagDELETEAgents: ask firstUnlinks a tag from a record without deleting the tag. Unlinking a tag that was not linked also succeeds, with removido false.
Conversation, 3 operations
get_conversationGet conversationGETAgents: ask firstReturns one inbox conversation: channel, contact name and phone (personal data), assigned agent and team, status, subject and last message time and preview.list_conversationsList conversationsGETAgents: ask firstLists inbox conversations by latest message, filterable by status (aberta, pendente, resolvida), channel and agent; page back with antes_de. Returns contact names and phones and a message preview: personal data.update_conversationUpdate conversationPATCHAgents: ask firstChanges a conversation's status (aberta, pendente or resolvida) or reassigns it to another agent. Reassigning needs an admin or manager role; an agent can only close and reopen.
Module, 2 operations
get_moduleGet moduleGETAgents: ask firstReturns one module by slug: id, name, icon, colour, and whether it is built in and active. For its fields use list_module_fields.list_modulesList modulesGETAgents: ask firstLists the organization's active modules (contacts, companies, deals and its own) with slug, name and flags. Start here: each organization configures its own modules. At most 500.
Pipeline, 2 operations
list_pipelinesList pipelinesGETAgents: ask firstLists the pipelines with their stages; each stage has tipo aberto (open), ganho (won) or perdido (lost), which tells which estagio_id to use with mark_deal_won or mark_deal_lost.upsert_pipelineUpsert pipelinePOSTAgents: ask firstCreates or updates a pipeline matched by name within its module, with its stages upserted by name too, so resending the whole definition does not duplicate columns. Needs pipelines:escrever.
Webhook delivery, 2 operations
list_webhook_deliveriesList webhook deliveriesGETAgents: ask firstLists a subscription's recent deliveries with event, status, attempts, HTTP status and an excerpt of the answer, to diagnose failures.resend_webhook_deliveryResend webhook deliveryPOSTAgents: ask firstPuts a past webhook delivery back in the queue at once (a real delivery to the subscribed URL), without waiting for the next automatic retry.
Agent, 1 operation
list_inbox_agentsList inbox agentsGETAgents: ask firstLists the people enabled to handle inbox conversations, in alphabetical order, with user id, name, email, role and team. Use a user id as atendente_usuario_id in update_conversation.
Automation, 1 operation
list_automationsList automationsGETAgents: ask firstLists the organization's automations, newest first, with name, active flag, triggering events and folder; filter by name, trigger event or active. Needs the manage-automations permission (403 otherwise).
Capabilities, 1 operation
get_capabilitiesGet capabilitiesGETAgents: ask firstReturns in one call the key, organization, modules, pipelines with stages, users, teams, tags and the scope and event catalog. Blocks the key cannot see come back empty and named in blocos_omitidos.
Catalog, 1 operation
get_catalogGet catalogGETAgents: ask firstReturns the static catalog of every grantable API scope and every webhook event name.
Channel, 1 operation
list_inbox_channelsList inbox channelsGETAgents: ask firstLists the organization's inbox channels (WhatsApp, Instagram, Messenger, website chat), connected or not, with type, name, status, connection time, number and photo. Channel tokens are never returned.
Conversation note, 1 operation
add_conversation_noteAdd conversation notePOSTAgents: ask firstAdds an internal note to an inbox conversation. Visible only to the team: it is never sent to the contact.
Field, 1 operation
list_module_fieldsList module fieldsGETAgents: ask firstLists a module's fields: layout fields (sistema false), whose slug is the key to use in valores, and system fields. somente_leitura marks fields the server fills, never to be written.
Key, 1 operation
get_meGet meGETAgents: ask firstReturns the organization, the scopes granted to the API key and the user it is bound to. Use it to confirm which organization you are working in before writing data.
Message, 1 operation
list_conversation_messagesList conversation messagesGETAgents: ask firstLists a conversation's messages, newest first: direction, author, origin (automation, broadcast, bot, phone or manual), type, text and media flag. Message content is personal data.
Stage, 1 operation
upsert_pipeline_stageUpsert pipeline stagePOSTAgents: ask firstCreates or updates a stage of a pipeline, matched by name. A new stage goes last unless ordem is given. Needs pipelines:escrever.
Team, 1 operation
list_teamsList teamsGETAgents: ask firstLists the organization's teams (one per permission profile), at most 500; truncado says whether the list was cut.
User, 1 operation
list_usersList usersGETAgents: ask firstLists the organization's active users (id, name, email, role, admin flag, team). Use their ids as responsavel_id, dono_id or usuario_id. At most 500.
Webhook event, 1 operation
list_webhook_eventsList webhook eventsGETAgents: ask firstLists every event name a webhook can subscribe to (contato.criado, negocio.ganho, mensagem.recebida...).
Use Fluxo CRM from Claude Code, Cursor or Codex
Connect Fluxo CRM in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Fluxo CRM operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Fluxo CRM
- Create your workspace
Sign up free. Nothing to install.
- Connect Fluxo CRM once
Add your Fluxo CRM connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Fluxo CRM integration FAQ
What can you do with the Fluxo CRM integration?
LiveContext exposes 90 operations on Fluxo CRM, covering deal, contact, activity and company.
