Synchroteam MCP by usefulapi

Read Synchroteam jobs, customers, sites, equipment and parts; create, schedule and complete jobs.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
90%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~9,794Tokens (tool definitions)
~2.6 KBTypical response size
Significant attention impact (7.65% 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": {
    "synchroteam": {
      "url": "https://synchroteam.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

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

What it can do

Tool inventory

Tools (33)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢synchroteam_list_customers(name, email, active, changed_since, sort, ...)

List or search customers (name wildcard, e-mail, active flag, change time). Returns name, address, contact, custom fields, tags. GET /customer/list.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Wildcard name search.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "email": {
      "description": "Exact contact e-mail.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "active": {
      "description": "Active customers (default true); false lists deactivated ones.",
      "type": "boolean"
    },
    "changed_since": {
      "description": "Only customers modified after this UTC date-time.",
      "type": "string"
    },
    "sort": {
      "type": "string",
      "enum": [
        "name",
        "dateModified",
        "dateCreated",
        "myId"
      ]
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_get_customer(by, value)

One customer by id, myId, exact name or e-mail, with address, contact, custom fields and tags. GET /customer/details.

Input Schema

{
  "type": "object",
  "properties": {
    "by": {
      "type": "string",
      "enum": [
        "id",
        "myId",
        "name",
        "email"
      ],
      "description": "Which identifier `value` is."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The identifier."
    }
  },
  "required": [
    "by",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_sites(name, customer_id, customer_my_id, active, changed_since, ...)

List or search sites (a customer's locations): by name, customer, active flag, change time. GET /site/list.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Wildcard name search.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "customer_id": {
      "description": "Only sites of this customer id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "customer_my_id": {
      "description": "Only sites of the customer with this myId.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "active": {
      "description": "Active sites (default true).",
      "type": "boolean"
    },
    "changed_since": {
      "description": "Only sites modified after this UTC date-time.",
      "type": "string"
    },
    "sort": {
      "type": "string",
      "enum": [
        "name",
        "dateModified",
        "dateCreated",
        "myId"
      ]
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_get_site(by, value)

One site by id, myId or exact name: address, contact, customer, custom fields, tags. GET /site/details.

Input Schema

{
  "type": "object",
  "properties": {
    "by": {
      "type": "string",
      "enum": [
        "id",
        "myId",
        "name"
      ],
      "description": "Which identifier `value` is."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The identifier."
    }
  },
  "required": [
    "by",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_equipment(name, customer_id, customer_my_id, site_id, site_my_id, ...)

List or search pieces of equipment (assets) by name, customer, site, active flag, change time. GET /equipment/list.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Wildcard name search.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "customer_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "site_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "site_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "active": {
      "description": "Active equipment (default true).",
      "type": "boolean"
    },
    "changed_since": {
      "description": "Only equipment modified after this UTC date-time.",
      "type": "string"
    },
    "sort": {
      "type": "string",
      "enum": [
        "name",
        "dateModified",
        "dateCreated",
        "myId"
      ]
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_get_equipment(by, value)

One piece of equipment by id, myId or exact name, with its customer and site. GET /equipment/details.

Input Schema

{
  "type": "object",
  "properties": {
    "by": {
      "type": "string",
      "enum": [
        "id",
        "myId",
        "name"
      ],
      "description": "Which identifier `value` is."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The identifier."
    }
  },
  "required": [
    "by",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_jobs(status, date_from, date_to, created_since, changed_since, ...)

List jobs (simplified: no report, parts or time entries) filtered by status, schedule window, technician, team, customer, site, equipment, job type or project. Use synchroteam_get_job for the full record. GET /job/list.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "One or more job statuses.",
      "minItems": 1,
      "maxItems": 8,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "created",
          "scheduled",
          "synchronized",
          "started",
          "paused",
          "completed",
          "validated",
          "cancelled"
        ]
      }
    },
    "date_from": {
      "description": "Jobs planned, ongoing or completed on or after this date-time.",
      "type": "string"
    },
    "date_to": {
      "description": "Jobs planned, ongoing or completed on or before this date-time.",
      "type": "string"
    },
    "created_since": {
      "description": "Jobs created on or after this date-time.",
      "type": "string"
    },
    "changed_since": {
      "description": "Jobs modified on or after this date-time.",
      "type": "string"
    },
    "validated_since": {
      "description": "Jobs validated on or after this date-time.",
      "type": "string"
    },
    "my_id": {
      "description": "Exact job myId.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "user_login": {
      "description": "Technician login.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "user_id": {
      "description": "Technician user id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "team_id": {
      "description": "Jobs of technicians in this team id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "customer_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "site_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "site_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "equipment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "equipment_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "type_id": {
      "description": "Job type id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "type_name": {
      "description": "Job type name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "project_id": {
      "description": "Project id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "has_photos": {
      "description": "Only jobs that have (true) or lack (false) photos.",
      "type": "boolean"
    },
    "sort": {
      "type": "string",
      "enum": [
        "num",
        "scheduledstart",
        "scheduledend",
        "actualstart",
        "actualend",
        "datemodified"
      ]
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "show": {
      "description": "Default active.",
      "type": "string",
      "enum": [
        "active",
        "deleted",
        "all"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_get_job(by, value)

One job by num (the job number shown in the app), id or myId: status, customer/site/equipment, technician(s), schedule, actual times, time entries, parts used, report and custom fields. GET /job/details.

Input Schema

{
  "type": "object",
  "properties": {
    "by": {
      "type": "string",
      "enum": [
        "num",
        "id",
        "myId"
      ],
      "description": "Which identifier `value` is."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "The identifier."
    }
  },
  "required": [
    "by",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_get_job_photos(by, value)

Photo links of a job (url, file name, comment, report iteration). Image bytes are never returned. GET /job/photos.

Input Schema

{
  "type": "object",
  "properties": {
    "by": {
      "type": "string",
      "enum": [
        "num",
        "id",
        "myId"
      ],
      "description": "Which identifier `value` is."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "The identifier."
    }
  },
  "required": [
    "by",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_job_types(name, page, page_size)

List job types (name, default duration, priority, skills, default report). Use their id or name when creating a job. GET /jobtype/list.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Types whose name contains this.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_users(team_id, team_name, skilled_trade, show, page, ...)

List users: login, name, profile (technician, manager, administrator), teams, skills, last known location. Passwords are never returned. GET /user/list.

Input Schema

{
  "type": "object",
  "properties": {
    "team_id": {
      "description": "Only users of this team id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "team_name": {
      "description": "Only users of this team name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "skilled_trade": {
      "description": "Only users with this skill.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "show": {
      "description": "Default active.",
      "type": "string",
      "enum": [
        "active",
        "deleted",
        "all"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_get_user(by, value)

One user by login or id. GET /user/details.

Input Schema

{
  "type": "object",
  "properties": {
    "by": {
      "type": "string",
      "enum": [
        "login",
        "id"
      ],
      "description": "Which identifier `value` is."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The identifier."
    }
  },
  "required": [
    "by",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_teams(name, show, page, page_size)

List teams with member counts and tags. GET /team/list.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Teams whose name contains this.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "show": {
      "type": "string",
      "enum": [
        "active",
        "deleted",
        "all"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_parts(category_id, category_name, is_tracked, is_serializable, status, ...)

List the parts and services catalog (reference, name, price, category, tax, tracked/serialized flags, type). GET /part/list.

Input Schema

{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "category_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "is_tracked": {
      "description": "Only parts tracked (true) or not tracked (false) in inventory.",
      "type": "boolean"
    },
    "is_serializable": {
      "type": "boolean"
    },
    "status": {
      "type": "string",
      "enum": [
        "active",
        "inactive"
      ]
    },
    "type": {
      "type": "string",
      "enum": [
        "part",
        "service",
        "travel",
        "other"
      ]
    },
    "changed_since": {
      "description": "Only parts modified after this UTC date-time.",
      "type": "string"
    },
    "sort": {
      "type": "string",
      "enum": [
        "name",
        "reference",
        "category"
      ]
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_get_part(by, value)

One part or service by id or reference. GET /part/details.

Input Schema

{
  "type": "object",
  "properties": {
    "by": {
      "type": "string",
      "enum": [
        "id",
        "reference"
      ],
      "description": "Which identifier `value` is."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The identifier."
    }
  },
  "required": [
    "by",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_depots(name, is_provider, is_default, sort, sort_order, ...)

List stock depots (warehouses and technician vans). The part quantities of one depot come from synchroteam_get_depot. GET /depot/list.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Wildcard name search.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "is_provider": {
      "description": "Only depots that are (true) or are not (false) providers.",
      "type": "boolean"
    },
    "is_default": {
      "type": "boolean"
    },
    "sort": {
      "type": "string",
      "enum": [
        "name",
        "isProvider"
      ]
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_get_depot(id)

One stock depot by id, with the quantity of each part it holds. GET /depot/details.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "Depot id (a GUID from synchroteam_list_depots)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_part_requests(is_urgent, is_sent, is_complete, is_deleted, created_since, ...)

List technicians' part requests (urgent, sent, completed, deleted flags). GET /partrequest/list.

Input Schema

{
  "type": "object",
  "properties": {
    "is_urgent": {
      "type": "boolean"
    },
    "is_sent": {
      "type": "boolean"
    },
    "is_complete": {
      "type": "boolean"
    },
    "is_deleted": {
      "type": "boolean"
    },
    "created_since": {
      "type": "string",
      "description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
    },
    "changed_since": {
      "type": "string",
      "description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_invoices(status, customer_id, customer_my_id, site_id, site_my_id, ...)

List invoices (read only): number, status, customer, job, lines, totals. Filter by status, customer, site, job or time. GET /invoice/list.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "new",
        "sent",
        "late",
        "paid",
        "cancelled"
      ]
    },
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "customer_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "site_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "site_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "job_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "job_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "job_num": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "created_since": {
      "type": "string",
      "description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
    },
    "changed_since": {
      "type": "string",
      "description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
    },
    "paid_since": {
      "type": "string",
      "description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_get_invoice(by, value)

One invoice by id, reference or number, with its lines. GET /invoice/details.

Input Schema

{
  "type": "object",
  "properties": {
    "by": {
      "type": "string",
      "enum": [
        "id",
        "reference",
        "num"
      ],
      "description": "Which identifier `value` is."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The identifier."
    }
  },
  "required": [
    "by",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_quotations(status, customer_id, customer_my_id, site_id, site_my_id, ...)

List quotations (read only): number, status, customer, job, lines, totals. GET /quotation/list.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "new",
        "sent",
        "accepted"
      ]
    },
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "customer_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "site_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "site_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "job_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "job_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "job_num": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "created_since": {
      "type": "string",
      "description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
    },
    "changed_since": {
      "type": "string",
      "description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_get_quotation(by, value)

One quotation by id, reference or number, with its lines. GET /quotation/details.

Input Schema

{
  "type": "object",
  "properties": {
    "by": {
      "type": "string",
      "enum": [
        "id",
        "reference",
        "num"
      ],
      "description": "Which identifier `value` is."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The identifier."
    }
  },
  "required": [
    "by",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_contracts(name, customer_id, customer_my_id, site_id, site_my_id, ...)

List service contracts by name, customer, site, period or active flag. GET /contract/list.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "customer_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "site_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "site_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "start": {
      "description": "Contracts on or after this date (yyyy-mm-dd).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "end": {
      "description": "Contracts on or before this date (yyyy-mm-dd).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "active": {
      "description": "Active contracts (default true).",
      "type": "boolean"
    },
    "sort": {
      "type": "string",
      "enum": [
        "num",
        "start",
        "end",
        "datemodified"
      ]
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_projects(customer_id, customer_my_id, site_id, site_my_id, equipment_id, ...)

List projects (groups of jobs) by customer, site, equipment or project type. GET /project/list.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "customer_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "site_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "site_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "equipment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "equipment_my_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "type_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "type_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢synchroteam_list_activities(start_date, end_date, activity_type_name, activity_type_category, user_id, ...)

List time entries and unavailabilities (travel, at work, clock, unavailable) of technicians. start_date and end_date go together and return anything overlapping that range. GET /activity/list.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "description": "Range start (requires end_date).",
      "type": "string"
    },
    "end_date": {
      "description": "Range end (requires start_date).",
      "type": "string"
    },
    "activity_type_name": {
      "description": "Exact activity type name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "activity_type_category": {
      "type": "string",
      "enum": [
        "unavailability",
        "atwork",
        "travel",
        "clock"
      ]
    },
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "user_login": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "team_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "sort": {
      "type": "string",
      "enum": [
        "startDate",
        "endDate",
        "activityType_name",
        "user_login"
      ]
    },
    "sort_order": {
      "description": "Sort order (default ascending; invoices and quotations default to descending).",
      "type": "string",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴synchroteam_create_customer(name, address, addressComplement, my_id, contact_first_name, ...)

WRITE: create a new customer (name and an address are required). If you pass myId and a customer with that myId already exists, nothing is created and an error is returned (use synchroteam_update_customer). POST /customer/send.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Customer name."
    },
    "address": {
      "description": "Full address on one line (e.g. '6605 Fisher Avenue, Falls Church, VA 22046, United States').",
      "type": "string",
      "minLength": 1,
      "maxLength": 400
    },
    "addressComplement": {
      "description": "Complementary address line (unit, floor...).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "my_id": {
      "description": "Your own reference for this customer.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "contact_first_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "contact_last_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "contact_email": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "contact_phone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "contact_fax": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "vat_number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴synchroteam_update_customer(id, name, address, addressComplement, contact_first_name, ...)

WRITE: change fields of an existing customer by its numeric id. Only the fields you pass are changed; nothing is cleared. The customer id must exist (an unknown id fails). POST /customer/send.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Customer id (synchroteam_list_customers)."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "address": {
      "description": "Full address on one line (e.g. '6605 Fisher Avenue, Falls Church, VA 22046, United States').",
      "type": "string",
      "minLength": 1,
      "maxLength": 400
    },
    "addressComplement": {
      "description": "Complementary address line (unit, floor...).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "contact_first_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "contact_last_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "contact_email": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "contact_phone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "contact_fax": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "vat_number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴synchroteam_create_site(name, address, addressComplement, customer, my_id, ...)

WRITE: create a new site (a location of a customer). Needs a name, an address and the customer (id or myId). If myId already exists nothing is created and an error is returned. POST /site/send.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Site name."
    },
    "address": {
      "description": "Full address on one line (e.g. '6605 Fisher Avenue, Falls Church, VA 22046, United States').",
      "type": "string",
      "minLength": 1,
      "maxLength": 400
    },
    "addressComplement": {
      "description": "Complementary address line (unit, floor...).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "customer": {
      "type": "object",
      "properties": {
        "id": {
          "description": "Synchroteam id.",
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ]
        },
        "myId": {
          "description": "Your own reference (myId).",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        }
      },
      "description": "The customer: exactly one of id or myId."
    },
    "my_id": {
      "description": "Your own reference for this site.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "contact_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "contact_email": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "contact_phone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "contact_mobile": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    }
  },
  "required": [
    "name",
    "customer"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴synchroteam_create_equipment(name, site, customer, my_id)

WRITE: create a new piece of equipment under a site or a customer (give exactly one of site or customer; both is refused). If myId already exists nothing is created and an error is returned. POST /equipment/send.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Equipment name."
    },
    "site": {
      "description": "The site: exactly one of id or myId.",
      "type": "object",
      "properties": {
        "id": {
          "description": "Synchroteam id.",
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ]
        },
        "myId": {
          "description": "Your own reference (myId).",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        }
      }
    },
    "customer": {
      "description": "The customer (when there is no site): exactly one of id or myId.",
      "type": "object",
      "properties": {
        "id": {
          "description": "Synchroteam id.",
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ]
        },
        "myId": {
          "description": "Your own reference (myId).",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        }
      }
    },
    "my_id": {
      "description": "Your own reference for this equipment.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴synchroteam_create_job(customer, site, equipment, type, description, ...)

WRITE: create a new job for a customer (status created, not yet scheduled; use synchroteam_schedule_job to assign a technician and time). The customer is required (id, myId or exact name); site, equipment and job type are optional. If myId already exists nothing is created and an error is returned. Synchroteam may send the account's 'job created' notifications (email/SMS/webhook, possibly to the customer), as configured. POST /job/send.

Input Schema

{
  "type": "object",
  "properties": {
    "customer": {
      "type": "object",
      "properties": {
        "id": {
          "description": "Synchroteam id.",
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ]
        },
        "myId": {
          "description": "Your own reference (myId).",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "name": {
          "description": "Exact name (customers and job types only).",
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "description": "The customer: exactly one of id, myId or name."
    },
    "site": {
      "description": "The site: exactly one of id or myId.",
      "type": "object",
      "properties": {
        "id": {
          "description": "Synchroteam id.",
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ]
        },
        "myId": {
          "description": "Your own reference (myId).",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        }
      }
    },
    "equipment": {
      "description": "The equipment: exactly one of id or myId.",
      "type": "object",
      "properties": {
        "id": {
          "description": "Synchroteam id.",
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ]
        },
        "myId": {
          "description": "Your own reference (myId).",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        }
      }
    },
    "type": {
      "description": "Job type: exactly one of id or name (synchroteam_list_job_types).",
      "type": "object",
      "properties": {
        "id": {
          "description": "Synchroteam id.",
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ]
        },
        "name": {
          "description": "Exact name (customers and job types only).",
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      }
    },
    "description": {
      "description": "Job description.",
      "type": "string",
      "minLength": 1,
      "maxLength": 4000
    },
    "priority": {
      "description": "Default medium.",
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high"
      ]
    },
    "my_id": {
      "description": "Your own reference for this job.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "address": {
      "description": "Full address on one line (e.g. '6605 Fisher Avenue, Falls Church, VA 22046, United States').",
      "type": "string",
      "minLength": 1,
      "maxLength": 400
    },
    "addressComplement": {
      "description": "Complementary address line (unit, floor...).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "contact_first_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "contact_last_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "contact_email": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "contact_phone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "contact_mobile": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "skills": {
      "description": "Required skills.",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    }
  },
  "required": [
    "customer"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴synchroteam_schedule_job(id, my_id, num, scheduled_start, scheduled_end, ...)

WRITE: schedule a job for a technician between two times (also re-schedules a scheduled or paused job). Synchroteam may notify technicians and/or customers (email/SMS/webhook) as configured in the account's notification settings (SMS uses the account's paid credits). Identify the job by exactly one of id, my_id or num. POST /job/schedule.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "description": "Job id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "my_id": {
      "description": "Job myId.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "num": {
      "description": "Job number.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "scheduled_start": {
      "type": "string",
      "description": "Start, yyyy-mm-dd hh:mm:ss."
    },
    "scheduled_end": {
      "type": "string",
      "description": "End, yyyy-mm-dd hh:mm:ss (after the start)."
    },
    "technician": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        "login": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        }
      },
      "description": "The technician: exactly one of id or login (synchroteam_list_users)."
    },
    "other_technician_logins": {
      "description": "Logins of additional technicians.",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    }
  },
  "required": [
    "scheduled_start",
    "scheduled_end",
    "technician"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴synchroteam_start_job(id, my_id, num)

WRITE: mark a job as started (status started, actual start now). If the job's technician already has another started job, Synchroteam pauses that one. Starting may trigger the account's 'job started' notifications (email/SMS/webhook to managers, technicians or the customer). Identify the job by exactly one of id, my_id or num. POST /job/start.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "description": "Job id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "my_id": {
      "description": "Job myId.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "num": {
      "description": "Job number.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴synchroteam_complete_job(id, my_id, num, actual_start, actual_end)

WRITE: mark a job as completed, optionally with the real start and end times (give actual_start and actual_end together: Synchroteam may refuse the call with only one of them). Completing may trigger the account's 'job completed' notifications (email/SMS/webhook to managers, technicians or the customer), as configured in Synchroteam. Identify the job by exactly one of id, my_id or num. POST /job/complete.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "description": "Job id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "my_id": {
      "description": "Job myId.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "num": {
      "description": "Job number.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "actual_start": {
      "description": "Real start, yyyy-mm-dd hh:mm:ss.",
      "type": "string"
    },
    "actual_end": {
      "description": "Real end, yyyy-mm-dd hh:mm:ss.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded33 tools