---
title: Agile CRM API Integration on Truto
slug: agilecrm
category: CRM
canonical: "https://truto.one/integrations/detail/agilecrm/"
---

# Agile CRM API Integration on Truto



**Category:** CRM  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 72 tools for Agile CRM that AI agents can call directly.

- **list_all_agile_crm_contacts** — List contacts in Agile CRM ordered by creation time. Returns contact objects with id, type, lead_score, star_value, tags, tagsWithTime, properties, created_time, and updated_time. Send the Accept: application/json header for JSON responses (XML is the default).
- **create_a_agile_crm_contact** — Create a contact in Agile CRM. Returns the created contact object including id, type, lead_score, star_value, tags, properties, created_time, and owner details. Required: properties (the first_name SYSTEM property is mandatory).
- **agile_crm_contacts_update_star_value** — Update the star rating of a single contact in Agile CRM (max value 5). Returns the updated contact values (id, star_value). Does not affect other fields. Required: id, star_value.
- **agile_crm_contacts_update_tags** — Add tag values to a single contact in Agile CRM. Returns the updated tag set (id, tags). Does not affect other contact fields. Tags must start with an alphabet and cannot contain special characters other than underscore and space. Required: id, tags.
- **agile_crm_contacts_delete_tags** — Delete tags from a contact or company in Agile CRM by id. Returns the remaining tags on the contact as a list. Required: id and tags.
- **agile_crm_contacts_search_by_email** — Get a single contact in Agile CRM by email address. Returns the contact object including id, type, tags, lead_score, star_value, properties, and owner. Required: email.
- **agile_crm_contacts_search_by_emails_bulk** — Search multiple contacts in Agile CRM by a list of email addresses. Returns matching contact records including id, type, tags, lead_score, star_value, properties, and owner. Required: email. Sent as application/x-www-form-urlencoded. Form field: email_ids (JSON array as a string, e.g. ["a@x.com","b@x.com"]).
- **agile_crm_contacts_search** — Search contacts or companies in Agile CRM by keyword across default fields and searchable custom fields. Returns matching records including id, type, tags, lead_score, star_value, properties, and owner. Required: q, page_size, and type.
- **agile_crm_contacts_add_tags_by_email** — Add tags to a contact in Agile CRM by locating the contact via email address. Returns the updated contact record including id, type, tags, lead_score, star_value, properties, and owner. Required: email and tags. Sent as application/x-www-form-urlencoded. Form fields: email (string), tags (JSON array as a string, e.g. ["vip"]).
- **agile_crm_contacts_delete_tags_by_email** — Delete the specified tags from an Agile CRM contact identified by email. Returns an empty 204 response on success. Required: email, tags. Sent as application/x-www-form-urlencoded. Form fields: email (string), tags (JSON array as a string, e.g. ["vip"]).
- **agile_crm_contacts_add_score_by_email** — Adjust an Agile CRM contact's lead score by email — pass a positive number to increase it or a negative number to subtract from the existing score. Returns the updated contact object including id, type, lead_score, tags, and properties. Required: email, score. Sent as application/x-www-form-urlencoded. Form fields: email (string), score (number).
- **agile_crm_contacts_add_property** — Add or update a single property field on an Agile CRM contact identified by email. Returns the updated contact object including id, type, lead_score, tags, and properties. Required: email, type, name, value.
- **agile_crm_contacts_change_owner** — Change the owner of a contact. Sent as application/x-www-form-urlencoded. Required: owner_email, contact_id. Returns the updated contact; if no user has owner_email, Agile CRM returns a 'user does not exist' message.
- **agile_crm_contacts_search_by_phone** — Get an Agile CRM contact by phone number. Returns the matching contact object including id, type, lead_score, tags, properties, and owner. Required: phone_number.
- **agile_crm_contacts_dynamic_filter** — Retrieve Agile CRM contacts or companies by a dynamic filter. Returns contact/company records including id, type, properties, star_value, lead_score, and tags. Requires filterJson. Sent as application/x-www-form-urlencoded. Form fields: page_size, global_sort_key (e.g. -created_time), filterJson (JSON as a string, e.g. {"rules":[{"LHS":"tags","CONDITION":"EQUALS","RHS":"lead"}],"contact_type":"PERSON"}).
- **agile_crm_contacts_list_tasks** — List Agile CRM tasks related to a specific contact, sorted latest first. Returns task records including id, type, priority_type, due, is_complete, subject, status, and taskOwner. Requires contact_id.
- **agile_crm_contacts_list_notes** — List Agile CRM notes related to a specific contact. Returns an array of note records. Requires contact_id.
- **agile_crm_contacts_delete_note** — Detach a specific note from a specific contact in Agile CRM. Returns the affected contact record including id, type, properties, star_value, and lead_score. Requires contact_id and note_id.
- **agile_crm_contacts_list_deals** — List Agile CRM deals related to a specific contact. Returns an array of deal records including id, name, milestone, expected_value, pipeline_id, close_date, and probability. Requires contact_id.
- **agile_crm_contacts_update_lead_score** — Update the lead score of a single contact in Agile CRM. Returns the updated contact values (id, lead_score). Does not affect other contact fields. Required: id, lead_score.
- **get_single_agile_crm_contact_by_id** — Get a single Agile CRM contact by id. Returns the contact object including id, type, lead_score, star_value, tags, tagsWithTime, properties, created_time, and updated_time. Required: id.
- **delete_a_agile_crm_contact_by_id** — Delete a single contact in Agile CRM by id. Returns an empty 204 response on success. Required: id.
- **agile_crm_contacts_partial_update** — Update or add custom property fields of a contact in AgileCRM without affecting other fields. Properties whose subtype matches an existing phone, website, or email override that value. Lead score, star value, and tags are not supported by this endpoint. Returns the updated contact object including id, type, created_time, and 4 more fields.…
- **list_all_agile_crm_companies** — List companies in Agile CRM ordered by creation time. Returns a paginated array of company objects with id, type, created_time, updated_time, star_value, lead_score, tags, and properties. Companies are contacts with type COMPANY: use contacts.get, contacts.partial_update and contacts.delete with the company id to read, edit or remove one.
- **create_a_agile_crm_company** — Create a company in Agile CRM. Returns the new company object including id, type, created_time, updated_time, star_value, lead_score, tags, and properties. Required: type (must be COMPANY), properties (must include a SYSTEM `name` property).
- **list_all_agile_crm_deals** — List Agile CRM deals. Returns the deal records including id, name, contacts, expected_value, milestone, probability, close_date, pipeline_id, and owner.
- **get_single_agile_crm_deal_by_id** — Get a single Agile CRM deal by id. Returns the full deal object including id, name, contacts, expected_value, milestone, probability, close_date, pipeline_id, and owner. Required: id.
- **create_a_agile_crm_deal** — Create a new deal in Agile CRM. Returns the created deal with id, name, contacts, expected_value, milestone, probability, close_date, pipeline_id, and owner. The milestone name must match one defined in the website and is case sensitive.
- **agile_crm_deals_create_by_email** — Create a new deal in Agile CRM and link it to a contact by email. Returns the created deal with id, name, contacts, expected_value, milestone, probability, close_date, pipeline_id, and owner. Required: email. The milestone name must match one defined in the website.
- **delete_a_agile_crm_deal_by_id** — Delete an Agile CRM deal by id. Returns an empty 204 response on success.
- **agile_crm_deals_bulk_delete** — Delete multiple deals in Agile CRM by submitting a JSON list of deal ids. Returns an empty 204 response on success. Required: ids. Sent as application/x-www-form-urlencoded. Form field: ids (JSON array of deal ids as a string, e.g. ["123","234"]).
- **agile_crm_deals_list_by_milestone** — List deals from the default Agile CRM track grouped by milestones. Returns an array of deal objects including id, name, milestone, expected_value, pipeline_id, probability, close_date, owner, and created_time.
- **agile_crm_deals_list_by_pipeline_grouped** — List deals from a specific Agile CRM track grouped by milestones. Returns an array of deal objects including id, name, milestone, expected_value, pipeline_id, probability, close_date, owner, and created_time. Required: pipeline_id.
- **agile_crm_deals_list_by_pipeline** — List deals from a specific Agile CRM track. Returns an array of deal objects including id, name, milestone, expected_value, pipeline_id, probability, close_date, owner, and created_time. Required: pipeline_id.
- **agile_crm_deals_list_my_deals** — List deals owned by the current user in Agile CRM. Returns an array of deal objects including id, name, milestone, expected_value, pipeline_id, probability, close_date, owner, and created_time.
- **agile_crm_deals_remove_contacts** — Remove contacts from a deal in AgileCRM. Returns the updated deal object with its id, name, milestone, expected_value, contact list, and owner. Required: id, contact_ids.
- **agile_crm_deals_partial_update** — Update selected fields of a deal in AgileCRM without overwriting other fields. Returns the updated deal object including its id, name, milestone, expected_value, contact list, and owner. Required: id.
- **create_a_agile_crm_note** — Create a note and relate it to contacts in Agile CRM. Returns the created note object including its id, created_time, subject, description, and entity_type. Required: subject and description.
- **agile_crm_notes_add_to_contact_by_email** — Add a note to a contact in Agile CRM identified by email address. Returns the created note object including its id, created_time, subject, description, and entity_type. Required: subject and description. Sent as application/x-www-form-urlencoded. Form fields: email (string), note (JSON as a string, e.g. {"subject":"Call","description":"..."}).
- **agile_crm_notes_create_to_deal** — Create a note on a deal in Agile CRM. Returns the created note object including its id, created_time, subject, description, and entity_type. Required: subject and description.
- **agile_crm_notes_list_for_deal** — List notes related to a specific deal in Agile CRM. Returns an array of note records; each record includes id, created_time, subject, description, and entity_type. Required: deal_id.
- **agile_crm_notes_bulk_delete** — Bulk-delete notes in Agile CRM. The vendor's REST docs do not specify the request payload or response body for this endpoint; the endpoint description only says it deletes notes of a specific deal. Required: nothing on the caller side beyond what the endpoint accepts. Sent as application/x-www-form-urlencoded. Form field: ids (JSON array of note ids as a string, e.g. ["5641751750508544"]).
- **agile_crm_notes_update_deal_note** — Update a note attached to a deal in AgileCRM. Returns the updated note object including id, created_time, subject, description, and entity_type. Required: id, created_time, subject, description, entity_type.
- **agile_crm_tasks_list_pending** — List pending Agile CRM tasks whose due date is within num_days days from today. Returns an array of those task objects including id, type, priority_type, due, subject, status, and taskOwner. Required: num_days.
- **list_all_agile_crm_tasks** — List Agile CRM tasks filtered by type, owner, pending state, criteria, and page_size. Returns an array of task objects including id, type, priority_type, due, subject, status, and taskOwner.
- **get_single_agile_crm_task_by_id** — Get a single Agile CRM task by id. Returns the task object including its id, type, priority_type, due, subject, status, contacts, notes, and taskOwner. Required: id.
- **create_a_agile_crm_task** — Create a new task in Agile CRM. Returns the created task object including its id, type, priority_type, due, subject, status, contacts, notes, progress, and taskOwner. Required: type, priority_type, status, due, subject.
- **agile_crm_tasks_create_by_contact_email** — Create a new task in Agile CRM related to the contact with the given email. Returns the created task object including its id, type, priority_type, due, subject, status, contacts, notes, and taskOwner. Required: email, type, priority_type, status, due, subject.
- **delete_a_agile_crm_task_by_id** — Delete a task in Agile CRM by id. Returns an empty 204 response on success. Required: id.
- **agile_crm_tasks_list_all** — List all Agile CRM tasks in the domain, ordered by creation time. Returns task records including id, type, priority_type, status, subject, due, is_complete, progress, created_time, and taskOwner.
- **agile_crm_tasks_partial_update** — Update an existing task in Agile CRM. The endpoint accepts a task JSON object; the id of the task to update must be supplied. Required: id.
- **list_all_agile_crm_events** — List events that happened in a particular time window in Agile CRM. Returns event records with id, created_time, subject, description, and entity_type. Requires start and end (both in epoch format).
- **agile_crm_events_list_for_contact** — List events related to a specific contact in Agile CRM, sorted by date. Returns event records with id, created_time, subject, description, and entity_type. Required: contact_id.
- **create_a_agile_crm_event** — Create an event in Agile CRM. Returns the created event record including id, created_time, subject, description, and entity_type.
- **delete_a_agile_crm_event_by_id** — Delete an event in Agile CRM by id. Returns an empty response on success. Required: id.
- **update_a_agile_crm_event_by_id** — Update an event in Agile CRM. The id of the event to update must be supplied inside the request body; otherwise the call creates a new event. Returns the updated event record including id, created_time, subject, description, and entity_type.
- **list_all_agile_crm_tracks** — List Agile CRM tracks (pipelines). Returns each track's id, name, conditions, owner_id, updated_time, and is_default_filter.
- **create_a_agile_crm_track** — Create a deal track (pipeline). Required: name (not "Default"), milestones. Returns {id, name, milestones}.
- **delete_a_agile_crm_track_by_id** — Delete an Agile CRM track by id. Returns an empty 204 response on success. Required: id.
- **update_a_agile_crm_track_by_id** — Update a deal track (pipeline). Required: id, name (not "Default"), milestones. Returns {id, name, milestones}.
- **list_all_agile_crm_campaigns** — List Agile CRM campaigns (workflows). Returns an array of campaign records; each record is identified by id. Request 'Accept: application/xml' to receive XML; the default response is also XML.
- **agile_crm_campaigns_enroll_email** — Add a contact to a campaign (workflow) by email. Sent as application/x-www-form-urlencoded. Required: email, workflow-id (from campaigns.list). This starts the campaign for the contact, which can send real email.
- **agile_crm_campaigns_unsubscribe_contact** — Unsubscribe a contact from an Agile CRM campaign. Required: workflow_id, remove_active_subscriber_id. Returns an empty 204 response on success.
- **agile_crm_documents_list_for_contact** — List documents attached to a contact in Agile CRM. Returns the document record with id, type, created_time, tags, tagsWithTime, and properties. Required: contact_id.
- **create_a_agile_crm_document** — Create a new document attached to a contact in Agile CRM. The link to the file is attached. Returns the created record with id, name, conditions, owner_id, updated_time, and is_default_filter. Required: url.
- **update_a_agile_crm_document_by_id** — Update an existing document attached to a contact in Agile CRM. The document link is replaced. Returns the updated record with id, name, conditions, owner_id, updated_time, and is_default_filter. Required: url.
- **list_all_agile_crm_tickets** — List Agile CRM tickets. Returns ticket records with id, subject, status, type, priority, requester_email, created_time, and last_updated_time.
- **create_a_agile_crm_ticket** — Create a helpdesk ticket. All fields are required by Agile CRM: requester_name, requester_email, subject, priority, status, groupID, html_text, cc_emails, labels. Returns the created ticket.
- **delete_a_agile_crm_ticket_by_id** — Delete a ticket by id. Required: id. Returns an empty response on success.
- **agile_crm_tickets_list_filters** — List Agile CRM ticket filter definitions. Returns filter records with id, name, conditions, owner_id, updated_time, and is_default_filter.
- **agile_crm_tickets_add_note** — Add a note to an Agile CRM ticket. Returns the created note with id, ticket_id, plain_text, note_type, created_time, and requester_email. Required: ticket_id.
- **agile_crm_tickets_list_notes** — List notes attached to a ticket in AgileCRM. Returns an array of note records with id, created_time, subject, description, and entity_type. Required: ticket_id.

## How it works

1. **Link your customer's Agile CRM account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Agile CRM.** The Proxy API is a 1-to-1 mapping of the Agile CRM API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Enrich CRM records with product and behavioral signals** — Give your users a native Agile CRM integration that automatically pushes in-app behavior, custom properties, and dynamic lead scores from your SaaS into their CRM — so sales reps work from a single, enriched source of truth.
- **Log AI-generated calls, notes, and tasks to the contact timeline** — If you build meeting intelligence, VoIP, or conversation tools, use Truto to drop transcripts, summaries, and follow-up tasks directly onto the right Agile CRM contact via email-based matching — no manual ID lookups required.
- **Trigger marketing campaigns from product events** — Let your users wire product events (signups, webinar attendance, feature adoption) to Agile CRM campaigns, tags, and drip workflows so marketing automation stays in sync with real customer behavior.
- **Automate deal and document workflows for revenue tools** — FinTech, CPQ, billing, and proposal apps can push deal stage updates, close-won signals, and finalized PDFs straight onto Agile CRM contacts and deals, keeping sales and finance fully aligned.
- **Unify external support channels into Agile CRM helpdesk** — Feedback, NPS, and chat tools can open tickets, add ticket notes, and tag at-risk accounts in Agile CRM so account managers see churn risk alongside sales context.

## What you can build

- **Bi-directional contact and company sync** — Keep contacts, companies, custom properties, tags, and owners in lockstep between your product and Agile CRM, including Agile's company-as-contact model.
- **Email-first activity logging** — Log notes, tasks, and deals against Agile CRM contacts using just an email address, skipping multi-step search-and-update flows.
- **Dynamic lead scoring and tagging** — Increment or decrement lead scores and apply or remove tags in real time based on product events, triggering Agile CRM automations downstream.
- **Campaign enrollment controls** — Enroll users into marketing campaigns on key events and unsubscribe them when conditions change, directly from your product UI.
- **Deal pipeline automation** — Create deals, move them across milestones, update deal properties, and attach documents when revenue events happen in your system.
- **Embedded helpdesk ticketing** — Open Agile CRM tickets from your app, add notes, and filter ticket queues so support interactions stay inside the user's CRM of record.

## FAQs

### How does authentication work for Agile CRM?

Agile CRM uses an API key paired with the user's email and account domain. Truto handles the connection flow, credential storage, and request signing so your users just enter their Agile CRM credentials once.

### Can we match records by email instead of Agile CRM's internal IDs?

Yes. Agile CRM exposes email-first endpoints that Truto surfaces directly — you can add notes, create deals, create tasks, add tags, and update lead scores on a contact using only its email address.

### Does the integration support custom properties and tags?

Yes. You can read and write custom properties on contacts via partial update endpoints, and add or remove tags either by contact ID or email.

### How are Agile CRM companies handled?

Agile CRM treats companies as contacts with a COMPANY type attribute. Dedicated company list and create endpoints are available, and Truto routes requests accordingly so you don't have to special-case this in your app.

### Can we pull filtered segments of contacts for a sync?

Yes. The dynamic filter endpoint accepts JSON condition rules, which lets you fetch targeted cohorts (e.g., recently created VIP leads) instead of paginating through every contact.

### What support workflows are available for helpdesk integrations?

You can create tickets, delete tickets, list tickets with filters, add notes to tickets, and list ticket notes — enough to build a two-way bridge between an external support surface and Agile CRM's native helpdesk.

### How does Truto handle pagination and rate limits?

Truto normalizes pagination across Agile CRM's list endpoints and manages retries and backoff when Agile CRM rate-limits a request, so your integration code stays simple.
