Insightly MCP by usefulapi

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

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
91%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~6,946Tokens (tool definitions)
~3.2 KBTypical response size
Significant attention impact (5.43% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "insightly": {
      "url": "https://insightly.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://insightly.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (21)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢insightly_get_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.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢insightly_list_users(top, skip, count_total)

List the users in the Insightly instance — needed to resolve OWNER_USER_ID / RESPONSIBLE_USER_ID. Insightly: GET /Users.

Input Schema

{
  "type": "object",
  "properties": {
    "top": {
      "description": "Max records to return, 1-500 (API default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count_total": {
      "description": "true = also return the total number of matching records (response becomes {total_count, items}).",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢insightly_list_records(object, field_name, field_value, updated_after_utc, brief, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "object": {
      "type": "string",
      "enum": [
        "Contacts",
        "Organisations",
        "Leads",
        "Opportunities",
        "Projects",
        "Tasks",
        "Events",
        "Notes"
      ],
      "description": "Record type."
    },
    "field_name": {
      "description": "Field to filter on, e.g. EMAIL_ADDRESS.",
      "type": "string"
    },
    "field_value": {
      "description": "Value the field must equal.",
      "type": "string"
    },
    "updated_after_utc": {
      "description": "Only records updated after this time, yyyy-mm-ddThh:mm:ssZ (e.g. 2026-04-09T16:58:14Z).",
      "type": "string"
    },
    "brief": {
      "description": "true = only top-level fields (no CUSTOMFIELDS, TAGS, LINKS, ...). Smaller and faster.",
      "type": "boolean"
    },
    "top": {
      "description": "Max records to return, 1-500 (API default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count_total": {
      "description": "true = also return the total number of matching records (response becomes {total_count, items}).",
      "type": "boolean"
    }
  },
  "required": [
    "object"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢insightly_get_record(object, id)

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}.

Input Schema

{
  "type": "object",
  "properties": {
    "object": {
      "type": "string",
      "enum": [
        "Contacts",
        "Organisations",
        "Leads",
        "Opportunities",
        "Projects",
        "Tasks",
        "Events",
        "Notes"
      ],
      "description": "Record type."
    },
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The record's numeric id."
    }
  },
  "required": [
    "object",
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢insightly_list_record_activity(object, id, kind, updated_after_utc, brief, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "object": {
      "type": "string",
      "enum": [
        "Contacts",
        "Organisations",
        "Leads",
        "Opportunities",
        "Projects"
      ],
      "description": "The parent record's type."
    },
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The parent record's numeric id."
    },
    "kind": {
      "type": "string",
      "enum": [
        "Notes",
        "Tasks",
        "Events"
      ],
      "description": "Which activity to list."
    },
    "updated_after_utc": {
      "description": "Only items updated after this time, yyyy-mm-ddThh:mm:ssZ.",
      "type": "string"
    },
    "brief": {
      "description": "true = only top-level fields (no CUSTOMFIELDS, TAGS, LINKS, ...). Smaller and faster.",
      "type": "boolean"
    },
    "top": {
      "description": "Max records to return, 1-500 (API default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count_total": {
      "description": "true = also return the total number of matching records (response becomes {total_count, items}).",
      "type": "boolean"
    }
  },
  "required": [
    "object",
    "id",
    "kind"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢insightly_search_by_tag(object, tag, brief, top, skip, ...)

List Contacts, Organisations, Leads, Opportunities or Projects carrying a tag. Insightly: GET /<Object>/SearchByTag?tagName=.

Input Schema

{
  "type": "object",
  "properties": {
    "object": {
      "type": "string",
      "enum": [
        "Contacts",
        "Organisations",
        "Leads",
        "Opportunities",
        "Projects"
      ],
      "description": "Record type."
    },
    "tag": {
      "type": "string",
      "minLength": 1,
      "description": "The tag name."
    },
    "brief": {
      "description": "true = only top-level fields (no CUSTOMFIELDS, TAGS, LINKS, ...). Smaller and faster.",
      "type": "boolean"
    },
    "top": {
      "description": "Max records to return, 1-500 (API default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count_total": {
      "description": "true = also return the total number of matching records (response becomes {total_count, items}).",
      "type": "boolean"
    }
  },
  "required": [
    "object",
    "tag"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢insightly_list_pipelines(top, skip)

List the sales and project pipelines (PIPELINE_ID, name, whether for opportunities or projects). Insightly: GET /Pipelines.

Input Schema

{
  "type": "object",
  "properties": {
    "top": {
      "description": "Max records to return, 1-500 (API default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢insightly_list_pipeline_stages(top, skip)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "top": {
      "description": "Max records to return, 1-500 (API default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢insightly_list_lead_statuses(include_converted, top, skip)

List the lead statuses defined in the instance (LEAD_STATUS_ID, name, type). Insightly: GET /LeadStatuses.

Input Schema

{
  "type": "object",
  "properties": {
    "include_converted": {
      "description": "Also include statuses used for converted leads.",
      "type": "boolean"
    },
    "top": {
      "description": "Max records to return, 1-500 (API default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢insightly_list_lead_sources(top, skip)

List the lead sources defined in the instance (LEAD_SOURCE_ID, name). Insightly: GET /LeadSources.

Input Schema

{
  "type": "object",
  "properties": {
    "top": {
      "description": "Max records to return, 1-500 (API default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_create_contact(salutation, first_name, last_name, title, email_address, ...)

Create a contact (first_name is required). Insightly: POST /Contacts.

Input Schema

{
  "type": "object",
  "properties": {
    "salutation": {
      "description": "e.g. Mr, Ms, Dr.",
      "type": "string"
    },
    "first_name": {
      "type": "string",
      "minLength": 1,
      "description": "First name (required)."
    },
    "last_name": {
      "description": "Last name.",
      "type": "string"
    },
    "title": {
      "description": "Job title.",
      "type": "string"
    },
    "email_address": {
      "description": "Primary email.",
      "type": "string"
    },
    "phone": {
      "description": "Business phone.",
      "type": "string"
    },
    "phone_mobile": {
      "description": "Mobile phone.",
      "type": "string"
    },
    "organisation_id": {
      "description": "Id of the contact's organisation.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "owner_user_id": {
      "description": "Owning user's id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "background": {
      "description": "Background / description text.",
      "type": "string"
    },
    "address_mail_street": {
      "type": "string"
    },
    "address_mail_city": {
      "type": "string"
    },
    "address_mail_state": {
      "type": "string"
    },
    "address_mail_postcode": {
      "type": "string"
    },
    "address_mail_country": {
      "type": "string"
    },
    "social_linkedin": {
      "description": "LinkedIn URL.",
      "type": "string"
    },
    "email_opted_out": {
      "description": "Opted out of email.",
      "type": "boolean"
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field_name": {
            "type": "string",
            "description": "The custom field's FIELD_NAME, e.g. Industry__c."
          },
          "field_value": {
            "description": "The value (null clears it).",
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "field_name",
          "field_value"
        ]
      }
    }
  },
  "required": [
    "first_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_update_contact(contact_id, salutation, first_name, last_name, title, ...)

Update a contact. Only the fields you pass are changed (v3.1 partial update). Insightly: PUT /Contacts with CONTACT_ID.

Input Schema

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The contact's numeric id."
    },
    "salutation": {
      "description": "e.g. Mr, Ms, Dr.",
      "type": "string"
    },
    "first_name": {
      "description": "First name.",
      "type": "string"
    },
    "last_name": {
      "description": "Last name.",
      "type": "string"
    },
    "title": {
      "description": "Job title.",
      "type": "string"
    },
    "email_address": {
      "description": "Primary email.",
      "type": "string"
    },
    "phone": {
      "description": "Business phone.",
      "type": "string"
    },
    "phone_mobile": {
      "description": "Mobile phone.",
      "type": "string"
    },
    "organisation_id": {
      "description": "Id of the contact's organisation.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "owner_user_id": {
      "description": "Owning user's id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "background": {
      "description": "Background / description text.",
      "type": "string"
    },
    "address_mail_street": {
      "type": "string"
    },
    "address_mail_city": {
      "type": "string"
    },
    "address_mail_state": {
      "type": "string"
    },
    "address_mail_postcode": {
      "type": "string"
    },
    "address_mail_country": {
      "type": "string"
    },
    "social_linkedin": {
      "description": "LinkedIn URL.",
      "type": "string"
    },
    "email_opted_out": {
      "description": "Opted out of email.",
      "type": "boolean"
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field_name": {
            "type": "string",
            "description": "The custom field's FIELD_NAME, e.g. Industry__c."
          },
          "field_value": {
            "description": "The value (null clears it).",
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "field_name",
          "field_value"
        ]
      }
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_create_organisation(organisation_name, website, phone, background, owner_user_id, ...)

Create an organisation (company). Insightly: POST /Organisations.

Input Schema

{
  "type": "object",
  "properties": {
    "organisation_name": {
      "type": "string",
      "minLength": 1,
      "description": "Organisation name (required)."
    },
    "website": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "background": {
      "description": "Background / description text.",
      "type": "string"
    },
    "owner_user_id": {
      "description": "Owning user's id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "address_billing_street": {
      "type": "string"
    },
    "address_billing_city": {
      "type": "string"
    },
    "address_billing_state": {
      "type": "string"
    },
    "address_billing_postcode": {
      "type": "string"
    },
    "address_billing_country": {
      "type": "string"
    },
    "social_linkedin": {
      "description": "LinkedIn URL.",
      "type": "string"
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field_name": {
            "type": "string",
            "description": "The custom field's FIELD_NAME, e.g. Industry__c."
          },
          "field_value": {
            "description": "The value (null clears it).",
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "field_name",
          "field_value"
        ]
      }
    }
  },
  "required": [
    "organisation_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_update_organisation(organisation_id, organisation_name, website, phone, background, ...)

Update an organisation. Only the fields you pass are changed. Insightly: PUT /Organisations with ORGANISATION_ID.

Input Schema

{
  "type": "object",
  "properties": {
    "organisation_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The organisation's numeric id."
    },
    "organisation_name": {
      "description": "Organisation name.",
      "type": "string"
    },
    "website": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "background": {
      "description": "Background / description text.",
      "type": "string"
    },
    "owner_user_id": {
      "description": "Owning user's id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "address_billing_street": {
      "type": "string"
    },
    "address_billing_city": {
      "type": "string"
    },
    "address_billing_state": {
      "type": "string"
    },
    "address_billing_postcode": {
      "type": "string"
    },
    "address_billing_country": {
      "type": "string"
    },
    "social_linkedin": {
      "description": "LinkedIn URL.",
      "type": "string"
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field_name": {
            "type": "string",
            "description": "The custom field's FIELD_NAME, e.g. Industry__c."
          },
          "field_value": {
            "description": "The value (null clears it).",
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "field_name",
          "field_value"
        ]
      }
    }
  },
  "required": [
    "organisation_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_create_lead(salutation, first_name, last_name, title, email, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "salutation": {
      "type": "string"
    },
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "type": "string",
      "minLength": 1,
      "description": "Last name (required)."
    },
    "title": {
      "description": "Job title.",
      "type": "string"
    },
    "email": {
      "description": "Email address.",
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "mobile": {
      "type": "string"
    },
    "organisation_name": {
      "description": "Company name (free text — leads are not linked to organisations).",
      "type": "string"
    },
    "industry": {
      "type": "string"
    },
    "website": {
      "type": "string"
    },
    "employee_count": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "lead_rating": {
      "description": "Rating, e.g. 1-5.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "lead_description": {
      "description": "Description / notes on the lead.",
      "type": "string"
    },
    "lead_status_id": {
      "description": "Status id — see insightly_list_lead_statuses.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "lead_source_id": {
      "description": "Source id — see insightly_list_lead_sources.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "owner_user_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "responsible_user_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "address_street": {
      "type": "string"
    },
    "address_city": {
      "type": "string"
    },
    "address_state": {
      "type": "string"
    },
    "address_postcode": {
      "type": "string"
    },
    "address_country": {
      "type": "string"
    },
    "email_opted_out": {
      "type": "boolean"
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field_name": {
            "type": "string",
            "description": "The custom field's FIELD_NAME, e.g. Industry__c."
          },
          "field_value": {
            "description": "The value (null clears it).",
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "field_name",
          "field_value"
        ]
      }
    }
  },
  "required": [
    "last_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_update_lead(lead_id, salutation, first_name, last_name, title, ...)

Update a lead. Only the fields you pass are changed. Insightly: PUT /Leads with LEAD_ID.

Input Schema

{
  "type": "object",
  "properties": {
    "lead_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The lead's numeric id."
    },
    "salutation": {
      "type": "string"
    },
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "description": "Last name.",
      "type": "string"
    },
    "title": {
      "description": "Job title.",
      "type": "string"
    },
    "email": {
      "description": "Email address.",
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "mobile": {
      "type": "string"
    },
    "organisation_name": {
      "description": "Company name (free text — leads are not linked to organisations).",
      "type": "string"
    },
    "industry": {
      "type": "string"
    },
    "website": {
      "type": "string"
    },
    "employee_count": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "lead_rating": {
      "description": "Rating, e.g. 1-5.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "lead_description": {
      "description": "Description / notes on the lead.",
      "type": "string"
    },
    "lead_status_id": {
      "description": "Status id — see insightly_list_lead_statuses.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "lead_source_id": {
      "description": "Source id — see insightly_list_lead_sources.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "owner_user_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "responsible_user_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "address_street": {
      "type": "string"
    },
    "address_city": {
      "type": "string"
    },
    "address_state": {
      "type": "string"
    },
    "address_postcode": {
      "type": "string"
    },
    "address_country": {
      "type": "string"
    },
    "email_opted_out": {
      "type": "boolean"
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field_name": {
            "type": "string",
            "description": "The custom field's FIELD_NAME, e.g. Industry__c."
          },
          "field_value": {
            "description": "The value (null clears it).",
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "field_name",
          "field_value"
        ]
      }
    }
  },
  "required": [
    "lead_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_create_opportunity(opportunity_name, opportunity_details, organisation_id, bid_amount, bid_currency, ...)

Create a sales opportunity (opportunity_name is required). Insightly: POST /Opportunities.

Input Schema

{
  "type": "object",
  "properties": {
    "opportunity_name": {
      "type": "string",
      "minLength": 1,
      "description": "Opportunity name (required)."
    },
    "opportunity_details": {
      "description": "Description.",
      "type": "string"
    },
    "organisation_id": {
      "description": "Id of the linked organisation.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "bid_amount": {
      "description": "Bid value.",
      "type": "number"
    },
    "bid_currency": {
      "description": "ISO currency code, e.g. USD.",
      "type": "string"
    },
    "bid_type": {
      "description": "BID_TYPE — how the bid is priced, using a value your Insightly instance accepts.",
      "type": "string"
    },
    "bid_duration": {
      "description": "Number of bid periods (for non-fixed bid types).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "probability": {
      "description": "Win probability, 0-100.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "forecast_close_date": {
      "description": "Forecast close date, as \"yyyy-MM-dd HH:mm:ss\" in UTC (e.g. 2026-04-10 21:15:00).",
      "type": "string"
    },
    "category_id": {
      "description": "Opportunity category id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "owner_user_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "responsible_user_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field_name": {
            "type": "string",
            "description": "The custom field's FIELD_NAME, e.g. Industry__c."
          },
          "field_value": {
            "description": "The value (null clears it).",
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "field_name",
          "field_value"
        ]
      }
    }
  },
  "required": [
    "opportunity_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_update_opportunity(opportunity_id, opportunity_name, opportunity_details, organisation_id, bid_amount, ...)

Update an opportunity's value, probability, dates, owner or details. Only the fields you pass are changed. Insightly: PUT /Opportunities with OPPORTUNITY_ID.

Input Schema

{
  "type": "object",
  "properties": {
    "opportunity_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The opportunity's numeric id."
    },
    "opportunity_name": {
      "description": "Opportunity name.",
      "type": "string"
    },
    "opportunity_details": {
      "description": "Description.",
      "type": "string"
    },
    "organisation_id": {
      "description": "Id of the linked organisation.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "bid_amount": {
      "description": "Bid value.",
      "type": "number"
    },
    "bid_currency": {
      "description": "ISO currency code, e.g. USD.",
      "type": "string"
    },
    "bid_type": {
      "description": "BID_TYPE — how the bid is priced, using a value your Insightly instance accepts.",
      "type": "string"
    },
    "bid_duration": {
      "description": "Number of bid periods (for non-fixed bid types).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "probability": {
      "description": "Win probability, 0-100.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "forecast_close_date": {
      "description": "Forecast close date, as \"yyyy-MM-dd HH:mm:ss\" in UTC (e.g. 2026-04-10 21:15:00).",
      "type": "string"
    },
    "category_id": {
      "description": "Opportunity category id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "owner_user_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "responsible_user_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field_name": {
            "type": "string",
            "description": "The custom field's FIELD_NAME, e.g. Industry__c."
          },
          "field_value": {
            "description": "The value (null clears it).",
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "field_name",
          "field_value"
        ]
      }
    }
  },
  "required": [
    "opportunity_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_create_task(title, details, due_date, start_date, status, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "Task title (required)."
    },
    "details": {
      "description": "Task description.",
      "type": "string"
    },
    "due_date": {
      "description": "Due date, as \"yyyy-MM-dd HH:mm:ss\" in UTC (e.g. 2026-04-10 21:15:00).",
      "type": "string"
    },
    "start_date": {
      "description": "Start date, as \"yyyy-MM-dd HH:mm:ss\" in UTC (e.g. 2026-04-10 21:15:00).",
      "type": "string"
    },
    "status": {
      "description": "Task STATUS text, using a value your Insightly instance accepts (read an existing task to see them).",
      "type": "string"
    },
    "priority": {
      "description": "Priority number.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "percent_complete": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "completed": {
      "description": "Whether the task is done.",
      "type": "boolean"
    },
    "category_id": {
      "description": "Task category id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "responsible_user_id": {
      "description": "Assignee's user id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "owner_user_id": {
      "description": "Owner's user id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "project_id": {
      "description": "Link the task to this project.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "opportunity_id": {
      "description": "Link the task to this opportunity.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field_name": {
            "type": "string",
            "description": "The custom field's FIELD_NAME, e.g. Industry__c."
          },
          "field_value": {
            "description": "The value (null clears it).",
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "field_name",
          "field_value"
        ]
      }
    }
  },
  "required": [
    "title"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_update_task(task_id, title, details, due_date, start_date, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The task's numeric id."
    },
    "title": {
      "description": "Task title.",
      "type": "string"
    },
    "details": {
      "description": "Task description.",
      "type": "string"
    },
    "due_date": {
      "description": "Due date, as \"yyyy-MM-dd HH:mm:ss\" in UTC (e.g. 2026-04-10 21:15:00).",
      "type": "string"
    },
    "start_date": {
      "description": "Start date, as \"yyyy-MM-dd HH:mm:ss\" in UTC (e.g. 2026-04-10 21:15:00).",
      "type": "string"
    },
    "status": {
      "description": "Task STATUS text, using a value your Insightly instance accepts (read an existing task to see them).",
      "type": "string"
    },
    "priority": {
      "description": "Priority number.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "percent_complete": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "completed": {
      "description": "Whether the task is done.",
      "type": "boolean"
    },
    "category_id": {
      "description": "Task category id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "responsible_user_id": {
      "description": "Assignee's user id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "owner_user_id": {
      "description": "Owner's user id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "project_id": {
      "description": "Link the task to this project.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "opportunity_id": {
      "description": "Link the task to this opportunity.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field_name": {
            "type": "string",
            "description": "The custom field's FIELD_NAME, e.g. Industry__c."
          },
          "field_value": {
            "description": "The value (null clears it).",
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "field_name",
          "field_value"
        ]
      }
    }
  },
  "required": [
    "task_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴insightly_add_note(object, id, title, body)

Add a note (title + body) to a Contact, Organisation, Lead, Opportunity or Project. Insightly: POST /<Object>/{id}/Notes.

Input Schema

{
  "type": "object",
  "properties": {
    "object": {
      "type": "string",
      "enum": [
        "Contacts",
        "Organisations",
        "Leads",
        "Opportunities",
        "Projects"
      ],
      "description": "The record type to attach the note to."
    },
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The record's numeric id."
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "Note title (required)."
    },
    "body": {
      "description": "Note body (may contain HTML).",
      "type": "string"
    }
  },
  "required": [
    "object",
    "id",
    "title"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded21 tools
verifiedversion not recorded21 tools