MCP
Connect an MCP client to Svit.One and use the available project tools.
Svit.One provides a remote Model Context Protocol (MCP) server. Compatible AI assistants and applications can use it to list your projects, work with tasks, people, and opportunities, read or create comments, list sites, and list or trigger site deployments.
Connect an MCP client
Add the following remote MCP server URL to your client:
https://api-external.svit.one/mcpSelect Streamable HTTP as the transport if your client asks for one. Configuration field names vary by client, but a typical remote-server entry looks like this:
{
"mcpServers": {
"svit": {
"url": "https://api-external.svit.one/mcp"
}
}
}When prompted, sign in to Svit.One and approve access. The client can access only projects you belong to.
How to use the tools
Start with list_projects, then use its projectId with the other tools. Useful discovery
flows include:
- Call
list_foldersbefore filtering tasks by folder or creating or updating a task in a folder. - Call
list_project_usersbefore filtering tasks by assignee, assigning a task, or setting an opportunity or person owner. - Call
find_personto look up a contact by email, phone, or id. Useget_personwhen you already have a person id and a missing contact should fail. - Call
list_tasksbefore reading or creating comments on a task. - Call
list_sitesbeforelist_deploymentsortrigger_deployment. - Call
list_opportunitiesorfind_opportunitybefore reading or updating an opportunity.
Project tools
list_projects
Lists every Svit.One project the authenticated user belongs to.
Inputs: None.
Output: A projects array whose entries contain:
| Field | Type | Description |
|---|---|---|
id | number | Project ID used by the other tools. |
name | string | Project name. |
list_tasks
Lists tasks in a project, with pagination, search, filtering, and sorting.
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | number | Yes | — | Project ID from list_projects. |
page | integer ≥ 1 | No | 1 | Page number. |
limit | integer, 1–100 | No | 20 | Number of tasks per page. |
search | string | No | — | Case-insensitive task-name search. |
status | string or string[] | No | — | One or more task statuses. See task values. |
priority | string | No | — | Task priority. See task values. |
folder | UUID | No | — | Folder ID from list_folders. |
assigneeId | integer | No | — | User ID from list_project_users. |
sortBy | string | No | created_at | created_at, updated_at, name, priority, status, dueDate, startDate, or order. |
sortOrder | string | No | desc | asc or desc. |
Output: A tasks array of task objects and a pagination object containing
total, page, limit, and totalPages numbers.
create_task
Creates a task in a project.
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | integer | Yes | — | Project ID from list_projects. |
name | string | Yes | — | Non-empty task name, up to 255 characters. |
description | string or null | No | null | Task description. |
status | string | No | todo | Task status. See task values. |
priority | string | No | none | Task priority. See task values. |
folder | UUID or null | No | null | Folder ID from list_folders, or null for no folder. |
parentTask | UUID or null | No | null | Parent task ID, if this is a subtask. |
startDate | ISO 8601 datetime or null | No | null | Task start date. |
dueDate | ISO 8601 datetime or null | No | null | Task due date. |
assigneeIds | integer[] | No | [] | User IDs from list_project_users. |
Output: The created task object.
update_task
Updates an existing task. Only provided fields change. Pass null to clear a nullable field or
an empty assigneeIds array to remove all assignees. At least one field to update is required. The
connected user needs tasks:edit access in the project.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
taskId | UUID | Yes | Task ID from list_tasks. |
name | string | No | Non-empty task name, up to 255 characters. |
description | string or null | No | Task description, or null to clear it. |
status | string | No | Task status. See task values. |
priority | string | No | Task priority. See task values. |
folder | UUID or null | No | Folder ID from list_folders, or null for no folder. |
parentTask | UUID or null | No | Parent task ID, or null to make the task a top-level task. |
startDate | ISO 8601 datetime or null | No | Task start date, or null to clear it. |
dueDate | ISO 8601 datetime or null | No | Task due date, or null to clear it. |
assigneeIds | integer[] | No | Project-member IDs, or an empty array to remove all task assignees. |
Output: The updated task object.
list_folders
Lists task folders in a project.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
Output: A folders array whose entries contain:
| Field | Type | Description |
|---|---|---|
id | string | Folder ID. |
name | string | Folder name. |
parentFolder | string or null | Parent folder ID, if any. |
list_project_users
Lists the active members of a project.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
Output: A users array of user objects.
Site tools
list_sites
Lists sites in a project. Use a site's id with list_deployments or trigger_deployment.
Those tools only work when deploymentVersion is 3.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
Output: A sites array whose entries contain:
| Field | Type | Description |
|---|---|---|
id | integer | Site ID used by list_deployments and trigger_deployment. |
name | string | Site name. |
deploymentVersion | integer | 3 for sites that support list_deployments and trigger_deployment. |
list_deployments
Lists deployments for a site. The site must belong to the project and use deployment version
3. Legacy sites are rejected.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
siteId | integer | Yes | Site ID from list_sites. |
Output: A deployments array of deployment objects.
trigger_deployment
Schedules a deployment for a v3 site (deploymentVersion 3) from the site's latest artifacts.
This is the MCP equivalent of Publish in the site editor: it duplicates current artifacts,
creates a deployment with status SCHEDULED, and enqueues it for the worker. It does not use
the legacy immediate-publish path. Sites that are not on deployment version 3 are rejected.
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | integer | Yes | — | Project ID from list_projects. |
siteId | integer | Yes | — | Site ID from list_sites. |
Output: The scheduled deployment object. Status is SCHEDULED.
Opportunity tools
list_opportunities
Lists opportunities in a project, with pagination, name search, and filters. Results follow the authenticated user's CRM opportunity and pipeline view permissions.
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | integer | Yes | — | Project ID from list_projects. |
page | integer ≥ 1 | No | 1 | Page number. |
limit | integer, 1–100 | No | 20 | Number of opportunities per page. |
search | string | No | — | Case-insensitive opportunity-name search. |
pipeline | string | No | — | Filter by pipeline ID. |
pipelineStage | string | No | — | Filter by pipeline stage ID. |
ownerUserId | integer | No | — | Filter by owner user ID from list_project_users. |
personId | string | No | — | Filter to opportunities whose contacts include this person ID. |
openOnly | boolean | No | — | When true, exclude ClosedWon and ClosedLost opportunities. |
Output: An opportunities array of opportunity objects and a
pagination object containing total, page, limit, and totalPages numbers.
find_opportunity
Looks up one opportunity without erroring when nothing matches. Provide at least one of
opportunityId, personId, or name. Name matching is exact and case-insensitive. This is a
soft lookup: a miss returns found: false and opportunity: null instead of an error.
read_opportunity still throws when the ID is missing or inaccessible.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
opportunityId | string | No | Opportunity ID. |
personId | string | No | Contact person ID. |
name | string | No | Exact opportunity name (case-insensitive). |
pipeline | string | No | Restrict the lookup to this pipeline ID. |
pipelineStage | string | No | Restrict the lookup to this pipeline stage ID. |
Output: { found, opportunity } where opportunity is an
opportunity object or null.
read_opportunity
Reads an opportunity by ID. The authenticated user must have access to both CRM opportunities and the opportunity's pipeline.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
opportunityId | string | Yes | Opportunity ID. |
Output: An opportunity object.
create_opportunity
Creates an opportunity in a project's default pipeline and initial stage.
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | integer | Yes | — | Project ID from list_projects. |
name | string | Yes | — | Non-empty opportunity name. |
description | string or null | No | null | Opportunity description. |
ownerUserId | integer or null | No | null | Owner ID from list_project_users. |
Output: The created opportunity object.
update_opportunity
Updates an existing opportunity. Only provided fields change. Pass null to clear the description
or owner. At least one field to update is required. The connected user needs edit access to the
opportunity's pipeline.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
opportunityId | string | Yes | Opportunity ID. |
name | string | No | Non-empty opportunity name. |
description | string or null | No | Opportunity description, or null to clear it. |
ownerUserId | integer or null | No | Owner ID from list_project_users, or null to clear it. |
Output: The updated opportunity object.
Person tools
Start with list_projects, then call these tools with that projectId. Use
list_project_users to resolve ownerUserId values. find_person is a soft lookup: a miss
returns { found: false, person: null }. get_person fails when the person does not exist.
find_person
Looks up a person by id, email, or phone. At least one of personId, email, or phone is
required. A miss is not an error.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
personId | string | No | Person ID from create_person or a prior lookup. |
email | string | No | Email address to match. |
phone | string | No | Phone number to match. |
Output:
| Field | Type | Description |
|---|---|---|
found | boolean | Whether a matching person was found. |
person | person object or null | The person when found is true, otherwise null. |
get_person
Loads a person by ID. A missing person is an error. Use find_person when a miss should not
fail.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
personId | string | Yes | Person ID. |
Output: A person object.
update_person
Updates an existing person. Only provided fields change. Pass null to clear nullable
description, organizationId, ownerUserId, or position. At least one field to update is
required. The connected user needs contacts:edit access in the project.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
personId | string | Yes | Person ID from find_person or create_person. |
name | string | No | Non-empty person name. |
description | string or null | No | Person description, or null to clear it. |
emails | string[] | No | Replacement email list. |
organizationId | string or null | No | Organization ID, or null to clear it. |
ownerUserId | integer or null | No | Owner ID from list_project_users, or null to clear it. |
phones | string[] | No | Replacement phone list. |
position | string or null | No | Job title or position, or null to clear it. |
tags | string[] | No | Replacement list of existing People tag IDs. |
Output: The updated person object.
create_person
Creates a person in a project. The connected user needs contacts:create access.
| Input | Type | Required | Description |
|---|---|---|---|
projectId | integer | Yes | Project ID from list_projects. |
name | string | Yes | Non-empty person name. |
description | string or null | No | Person description. |
emails | string[] | No | Email addresses. |
organizationId | string or null | No | Organization ID. |
ownerUserId | integer or null | No | Owner ID from list_project_users. |
phones | string[] | No | Phone numbers. |
position | string or null | No | Job title or position. |
tags | string[] | No | Existing People tag IDs. Does not create tags. |
Output: The created person object.
Comment tools
Comments are polymorphic: they can be attached to different kinds of Svit.One objects. For
task comments, use task as the objectType and a task ID as the objectId.
Supported objectType values are dataset, site, project, task, and conversation.
list_comments
Lists comments attached to an object in a project.
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | integer | Yes | — | Project ID from list_projects. |
objectType | string | Yes | — | One of the supported object types above. |
objectId | string | Yes | — | ID of the object, such as an ID from list_tasks. |
limit | integer, 1–100 | No | 50 | Maximum number of comments to return. |
Output: A comments array of comment objects.
create_comment
Adds a comment to an object in a project.
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | integer | Yes | — | Project ID from list_projects. |
objectType | string | Yes | — | One of the supported object types above. |
objectId | string | Yes | — | ID of the object to comment on. |
text | string | Yes | — | Non-empty comment text. |
objectParentId | string or null | No | null | Parent object ID when required, such as a dataset ID for a CRM entity. |
Output: The created comment object.
Shared result objects
Opportunity object
| Field | Type | Description |
|---|---|---|
id | string | Opportunity ID. |
name | string | Opportunity name. |
description | string or null | Opportunity description, if any. |
contactPeople | string[] | Contact person IDs. |
organizationId | string or null | Organization ID, if any. |
ownerUserId | integer or null | Owner user ID, if any. |
pipeline | string | Pipeline ID. |
pipelineStage | string or null | Pipeline stage ID, if any. |
isOpen | boolean | Whether the opportunity is open. |
createdAt | string or null | Creation time in ISO 8601 format, if available. |
updatedAt | string or null | Last update time in ISO 8601 format, if available. |
Person object
| Field | Type | Description |
|---|---|---|
id | string | Person ID. |
name | string | Person name. |
description | string or null | Person description, if any. |
emails | string[] | Email addresses. |
organizationId | string or null | Organization ID, if any. |
ownerUserId | integer or null | Owner user ID, if any. |
phones | string[] | Phone numbers. |
position | string or null | Job title or position, if any. |
tags | string[] | Tag IDs. |
createdAt | string or null | Creation time in ISO 8601 format, if available. |
updatedAt | string or null | Last update time in ISO 8601 format, if available. |
Task object
| Field | Type | Description |
|---|---|---|
id | string | Task ID. |
name | string | Task name. |
status | string | Task status. |
priority | string | Task priority. |
description | string or null | Task description. |
folder | string or null | Folder ID, if any. |
parentTask | string or null | Parent task ID, if any. |
assigneeIds | integer[] | IDs of users assigned to the task. |
dueDate | string or null | Due date in ISO 8601 format, if any. |
startDate | string or null | Start date in ISO 8601 format, if any. |
createdAt | string or null | Creation time in ISO 8601 format, if available. |
updatedAt | string or null | Last update time in ISO 8601 format, if available. |
User object
| Field | Type | Description |
|---|---|---|
id | integer | User ID. |
name | string or null | User's first name. |
surname | string or null | User's last name. |
email | string | User's email address. |
image | string or null | Avatar URL, if any. |
Comment object
| Field | Type | Description |
|---|---|---|
id | string | Comment ID. |
projectId | integer | Project ID. |
text | string | Comment text. |
userId | integer | Author's user ID. |
objectId | string | ID of the object the comment is attached to. |
objectType | string | Type of the attached object. |
objectParentId | string or null | Parent object ID, if any. |
createdAt | string or null | Creation time in ISO 8601 format, if available. |
updatedAt | string or null | Last update time in ISO 8601 format, if available. |
user | object | Comment author as a user object. |
Deployment object
| Field | Type | Description |
|---|---|---|
id | integer | Deployment ID. |
siteId | integer | Site ID. |
status | string | SCHEDULED, DEPLOYING, DEPLOYED, or FAILED. |
isActive | boolean | Whether this deployment is currently serving the site. |
isPrivate | boolean | Whether the deployment is private. |
subdomain | string | Preview subdomain for the deployment. |
createdAt | string or null | Creation time in ISO 8601 format, if available. |
updatedAt | string or null | Last update time in ISO 8601 format, if available. |
Task values
Task statuses are todo, in-progress, review, and done.
Task priorities are high, medium, low, and none.