usefulapi

Insightly MCP server. Read and write Insightly contacts, organisations, leads, opportunities, tasks and notes.

Claude

  1. Open Settings → Connectors → Add custom connector
  2. Paste this URL:
    https://insightly.usefulapi.io/mcp
  3. Authenticate with Insightly when prompted

Cursor · VS Code · Windsurf · Cline

Add to your MCP config, then reload & authorize:

{
  "mcpServers": {
    "insightly": {
      "url": "https://insightly.usefulapi.io/mcp"
    }
  }
}
live23 toolsFree 100 tool calls / monthPro $9/mo · $90/yr

Tools 23

ToolTypeWhat it does
insightly_get_current_userread
Get the current user
Fetch the user the API key belongs to (USER_ID, name, email, admin flag). A cheap way to confirm the key and pod are right, and to get your own id for owner fields. Insightly: GET /Users/Me.
insightly_list_usersread
List users
List the users in the Insightly instance — needed to resolve OWNER_USER_ID / RESPONSIBLE_USER_ID. Insightly: GET /Users.
insightly_list_recordsread
List or search records
List records of one type — Contacts, Organisations, Leads, Opportunities, Projects, Tasks, Events or Notes — optionally filtered by one field value and/or last-updated time. With field_name + field_value (both required together) or updated_after_utc this uses GET /<Object>/Search; otherwise GET /<Object>. Field names are Insightly's UPPER_SNAKE names, e.g. EMAIL_ADDRESS, LAST_NAME, ORGANISATION_NAME, OPPORTUNITY_STATE, LEAD_RATING, or a custom field such as Industry__c.
insightly_get_recordread
Get one record
Fetch a single Contact, Organisation, Lead, Opportunity, Project, Task, Event or Note by id, with its custom fields, tags and links. Insightly: GET /<Object>/{id}.
insightly_list_record_activityread
List a record's notes, tasks or events
List the Notes, Tasks or Events attached to one Contact, Organisation, Lead, Opportunity or Project — the activity history of that record. Insightly: GET /<Object>/{id}/Notes | Tasks | Events.
insightly_search_by_tagread
Find records by tag
List Contacts, Organisations, Leads, Opportunities or Projects carrying a tag. Insightly: GET /<Object>/SearchByTag?tagName=.
insightly_list_pipelinesread
List pipelines
List the sales and project pipelines (PIPELINE_ID, name, whether for opportunities or projects). Insightly: GET /Pipelines.
insightly_list_pipeline_stagesread
List pipeline stages
List every pipeline stage (STAGE_ID, PIPELINE_ID, name, order) — map an opportunity's or project's STAGE_ID to a stage name. Insightly: GET /PipelineStages.
insightly_list_lead_statusesread
List lead statuses
List the lead statuses defined in the instance (LEAD_STATUS_ID, name, type). Insightly: GET /LeadStatuses.
insightly_list_lead_sourcesread
List lead sources
List the lead sources defined in the instance (LEAD_SOURCE_ID, name). Insightly: GET /LeadSources.
insightly_create_contactwrite
Create a contact
Create a contact (first_name is required). Insightly: POST /Contacts.
insightly_update_contactwrite
Update a contact
Update a contact. Only the fields you pass are changed (v3.1 partial update). Insightly: PUT /Contacts with CONTACT_ID.
insightly_create_organisationwrite
Create an organisation
Create an organisation (company). Insightly: POST /Organisations.
insightly_update_organisationwrite
Update an organisation
Update an organisation. Only the fields you pass are changed. Insightly: PUT /Organisations with ORGANISATION_ID.
insightly_create_leadwrite
Create a lead
Create a lead (last_name is required). Insightly's schema also marks lead_status_id and lead_source_id as required — get valid ids from insightly_list_lead_statuses / insightly_list_lead_sources. Insightly: POST /Leads.
insightly_update_leadwrite
Update a lead
Update a lead. Only the fields you pass are changed. Insightly: PUT /Leads with LEAD_ID.
insightly_create_opportunitywrite
Create an opportunity
Create a sales opportunity (opportunity_name is required). Insightly: POST /Opportunities.
insightly_update_opportunitywrite
Update an opportunity
Update an opportunity's value, probability, dates, owner or details. Only the fields you pass are changed. Insightly: PUT /Opportunities with OPPORTUNITY_ID.
insightly_create_taskwrite
Create a task
Create a task (title is required). Insightly requires OWNER_USER_ID and COMPLETED on a task: if owner_user_id is omitted it is filled with the API key's own user (via GET /Users/Me), and completed defaults to false. Insightly: POST /Tasks.
insightly_update_taskwrite
Update a task
Update a task — mark it completed, change due date, status, assignee or details. Only the fields you pass are changed. Insightly: PUT /Tasks with TASK_ID.
insightly_add_notewrite
Add a note to a record
Add a note (title + body) to a Contact, Organisation, Lead, Opportunity or Project. Insightly: POST /<Object>/{id}/Notes.
insightly_usage_statusmeta
Usage status (free-tier meter)
Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter.
insightly_upgrademeta
Upgrade to Pro (unlimited)
Subscribe to the Pro plan for UNLIMITED Insightly tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter.

Pricing

PlanPriceLimit
Free$0100 tool calls / month
Proper user$9/mo · $90/yrUnlimited

This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.