Artesa MCP by usefulapi
Read customers, assignments, staff, time entries and absences; create customers in Artesa.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWartesa_list_assignment_status_types에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"artesa": {
"url": "https://artesa.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://artesa.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (18)
🟢artesa_list_customers(company_name, number, external_id, page, size)
List customers (private persons or companies that assignments are carried out for). Filter by company name, number or external id. Artesa API: GET /v2/customers.
입력 스키마
{
"type": "object",
"properties": {
"company_name": {
"description": "Filter by company name.",
"type": "string"
},
"number": {
"description": "Filter by customer number.",
"type": "string"
},
"external_id": {
"description": "Filter by the external id from your other system.",
"type": "string"
},
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_get_customer(customer_uuid)
Get one customer with its phones, emails, URLs and billing address. Artesa API: GET /v2/customers/{customerUuid}.
입력 스키마
{
"type": "object",
"properties": {
"customer_uuid": {
"type": "string",
"minLength": 1,
"description": "The customer uuid (from the matching list tool)."
}
},
"required": [
"customer_uuid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴artesa_create_customer(company_name, first_name, surname, external_id, emails, ...)
Create a new customer record (company or private person). Not safe to retry: a retry creates a second customer. Artesa API: POST /v2/customers.
입력 스키마
{
"type": "object",
"properties": {
"company_name": {
"description": "Company name (leave empty for a private person).",
"type": "string"
},
"first_name": {
"description": "First name.",
"type": "string"
},
"surname": {
"description": "Surname.",
"type": "string"
},
"external_id": {
"description": "Id from your other system.",
"type": "string"
},
"emails": {
"description": "Email addresses.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "e.g. main"
},
"emailAddress": {
"type": "string",
"description": "Email address."
}
},
"required": [
"label",
"emailAddress"
]
}
},
"telephones": {
"description": "Phone numbers.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "e.g. mobile"
},
"telephoneNumber": {
"type": "string",
"description": "Phone number."
}
},
"required": [
"label",
"telephoneNumber"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_assignments(customer_uuid, project_uuid, type_uuid, responsible_user_uuid, status_uuid, ...)
List assignments (orders/jobs) with their customer, project, type, responsible user and status. Artesa API: GET /v2/assignments.
입력 스키마
{
"type": "object",
"properties": {
"customer_uuid": {
"description": "Only assignments of this customer uuid.",
"type": "string"
},
"project_uuid": {
"description": "Only assignments in this project uuid.",
"type": "string"
},
"type_uuid": {
"description": "Only assignments of this assignment type uuid.",
"type": "string"
},
"responsible_user_uuid": {
"description": "Only assignments for this responsible user uuid.",
"type": "string"
},
"status_uuid": {
"description": "Only assignments with this status uuid.",
"type": "string"
},
"name": {
"description": "Filter by assignment name.",
"type": "string"
},
"number": {
"description": "Filter by assignment number.",
"type": "string"
},
"external_id": {
"description": "Filter by external id.",
"type": "string"
},
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_get_assignment(assignment_uuid)
Get one assignment with its details. Artesa API: GET /v2/assignments/{assignmentUuid}.
입력 스키마
{
"type": "object",
"properties": {
"assignment_uuid": {
"type": "string",
"minLength": 1,
"description": "The assignment uuid (from the matching list tool)."
}
},
"required": [
"assignment_uuid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_assignment_events(assignment_uuid, type_uuid, group_uuid, name, starts_from, ...)
List work steps (appointments and events) of assignments, optionally in a time window. Artesa API: GET /v2/assignment-events.
입력 스키마
{
"type": "object",
"properties": {
"assignment_uuid": {
"description": "Only events of this assignment uuid.",
"type": "string"
},
"type_uuid": {
"description": "Only events of this assignment event type uuid.",
"type": "string"
},
"group_uuid": {
"description": "Only events in this assignment event group uuid.",
"type": "string"
},
"name": {
"description": "Filter by event name.",
"type": "string"
},
"starts_from": {
"description": "Events starting at or after this time, ISO 8601 (e.g. 2026-03-01T00:00:00Z).",
"type": "string",
"minLength": 1
},
"starts_to": {
"description": "Events starting at or before this time, ISO 8601 (e.g. 2026-03-01T00:00:00Z).",
"type": "string",
"minLength": 1
},
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_get_assignment_event(assignment_event_uuid)
Get one assignment event (work step). Artesa API: GET /v2/assignment-events/{assignmentEventUuid}.
입력 스키마
{
"type": "object",
"properties": {
"assignment_event_uuid": {
"type": "string",
"minLength": 1,
"description": "The assignment event uuid (from the matching list tool)."
}
},
"required": [
"assignment_event_uuid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_projects(number, external_id, page, size)
List projects that group assignments. Artesa API: GET /v2/projects.
입력 스키마
{
"type": "object",
"properties": {
"number": {
"description": "Filter by project number.",
"type": "string"
},
"external_id": {
"description": "Filter by external id.",
"type": "string"
},
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_get_project(project_uuid)
Get one project. Artesa API: GET /v2/projects/{projectUuid}.
입력 스키마
{
"type": "object",
"properties": {
"project_uuid": {
"type": "string",
"minLength": 1,
"description": "The project uuid (from the matching list tool)."
}
},
"required": [
"project_uuid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_users(role_uuid, full_name, email, short_name, staff_number, ...)
List users (staff members) with their role. Filter by name, email or role. Artesa API: GET /v2/users.
입력 스키마
{
"type": "object",
"properties": {
"role_uuid": {
"description": "Only users with this role uuid.",
"type": "string"
},
"full_name": {
"description": "Filter by full name.",
"type": "string"
},
"email": {
"description": "Filter by email address.",
"type": "string"
},
"short_name": {
"description": "Filter by short name.",
"type": "string"
},
"staff_number": {
"description": "Filter by staff number.",
"type": "string"
},
"external_id": {
"description": "Filter by external id.",
"type": "string"
},
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_get_user(user_uuid)
Get one user (staff member). Artesa API: GET /v2/users/{userUuid}.
입력 스키마
{
"type": "object",
"properties": {
"user_uuid": {
"type": "string",
"minLength": 1,
"description": "The user uuid (from the matching list tool)."
}
},
"required": [
"user_uuid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_time_entries(user_uuid, assignment_uuid, event_uuid, type_uuid, day_status, ...)
List recorded time entries (work time) per user, assignment or event, optionally in a time window. Artesa API: GET /v2/time-entries.
입력 스키마
{
"type": "object",
"properties": {
"user_uuid": {
"description": "Only entries of this user uuid.",
"type": "string"
},
"assignment_uuid": {
"description": "Only entries on this assignment uuid.",
"type": "string"
},
"event_uuid": {
"description": "Only entries on this assignment event uuid.",
"type": "string"
},
"type_uuid": {
"description": "Only entries of this time entry type uuid.",
"type": "string"
},
"day_status": {
"description": "Filter by the day status of the time sheet.",
"type": "string"
},
"starts_from": {
"description": "Entries starting at or after this time, ISO 8601 (e.g. 2026-03-01T00:00:00Z).",
"type": "string",
"minLength": 1
},
"starts_to": {
"description": "Entries starting at or before this time, ISO 8601 (e.g. 2026-03-01T00:00:00Z).",
"type": "string",
"minLength": 1
},
"external_id": {
"description": "Filter by external id.",
"type": "string"
},
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_user_absences(user_uuid, type_uuid, status, starts_from, starts_to, ...)
List absences (holidays, sick days and similar) of users in a time window. Artesa API: GET /v2/user-absences.
입력 스키마
{
"type": "object",
"properties": {
"user_uuid": {
"description": "Only absences of this user uuid.",
"type": "string"
},
"type_uuid": {
"description": "Only absences of this user absence type uuid.",
"type": "string"
},
"status": {
"description": "Filter by absence status.",
"type": "string"
},
"starts_from": {
"description": "Absences starting at or after this time, ISO 8601 (e.g. 2026-03-01T00:00:00Z).",
"type": "string",
"minLength": 1
},
"starts_to": {
"description": "Absences starting at or before this time, ISO 8601 (e.g. 2026-03-01T00:00:00Z).",
"type": "string",
"minLength": 1
},
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_time_sheet_weeks(user_uuid, week_start, status, page, size)
List weekly time sheets per user, with their status. Artesa API: GET /v2/time-sheet-weeks.
입력 스키마
{
"type": "object",
"properties": {
"user_uuid": {
"description": "Only time sheets of this user uuid.",
"type": "string"
},
"week_start": {
"description": "Week start date (yyyy-mm-dd).",
"type": "string"
},
"status": {
"description": "Filter by time sheet status.",
"type": "string"
},
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_assignment_status_types(name, category, page, size)
List the assignment status types (Auftragsstatus) your company uses. Artesa API: GET /v2/assignment-status-types.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"description": "Filter by status name.",
"type": "string"
},
"category": {
"description": "Filter by status category.",
"type": "string"
},
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_assignment_types(page, size)
List the assignment types (Auftragstypen) your company uses. Artesa API: GET /v2/assignment-types.
입력 스키마
{
"type": "object",
"properties": {
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_gangs(name, external_id, page, size)
List gangs (work crews or teams) of your company. Artesa API: GET /v2/gangs.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"description": "Filter by gang name.",
"type": "string"
},
"external_id": {
"description": "Filter by external id.",
"type": "string"
},
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢artesa_list_roles(page, size)
List the user roles (Benutzerrollen) of your company. Artesa API: GET /v2/roles.
입력 스키마
{
"type": "object",
"properties": {
"page": {
"description": "Zero-based page index (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"size": {
"description": "Items per page, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}커뮤니티
증거