Workfeed MCP by usefulapi
Review staffing, availability and leave; create or update shifts with confirmation.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWworkfeed_list_salary_supplements에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"workfeed": {
"url": "https://workfeed.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://workfeed.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (17)
🟢workfeed_list_departments
Department names and IDs. GET /departments. Unpaginated vendor response, bounded to5000rows and2MiB here.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_list_roles
Roles and their department IDs. GET /roles. Unpaginated vendor response, bounded to5000rows and2MiB here.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_list_employees
Scheduling/contact fields only; excludes national IDs, banking, tax, emergency contacts, wages, addresses and custom fields. GET /employees. Unpaginated vendor response, bounded to5000rows and2MiB here.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_get_settings
Pay-period and shift-break settings. GET /settings. Unpaginated vendor response, bounded to5000rows and2MiB here.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_list_salary_supplements
Read supplement definitions, not flex-hour supplements. Duration days are inclusive in company timezone. GET /salary-supplements. Unpaginated vendor response, bounded to5000rows and2MiB here.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_get_employee(id)
Read one selected employee. Staff responses exclude payroll identifiers; leave notes are omitted.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_get_shift(id)
Read one selected shift. Staff responses exclude payroll identifiers; leave notes are omitted.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_get_leave(id)
Read one selected leave. Staff responses exclude payroll identifiers; leave notes are omitted.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_get_availability(id)
Read one selected availability. Staff responses exclude payroll identifiers; leave notes are omitted.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_list_shifts(startFrom, startTo, employeeID, released, roleID, ...)
Read shifts whose start>=startFrom and start<startTo (not overlap). Maximum93days per request here. Optional role and department must agree. No vendor pagination parameter is invented.
입력 스키마
{
"type": "object",
"properties": {
"startFrom": {
"type": "string",
"maxLength": 40
},
"startTo": {
"type": "string",
"maxLength": 40
},
"employeeID": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
"released": {
"type": "boolean"
},
"roleID": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
"departmentID": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
}
},
"required": [
"startFrom",
"startTo"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_list_leaves(from, to, employeeIDs, typeIDs, includeDeleted)
Read any leave overlapping from/to, including leave beginning before the range. Max93days here. Free-text leave notes omitted. Repeated employeeIDs/typeIDs filters; includeDeleted defaults true upstream.
입력 스키마
{
"type": "object",
"properties": {
"from": {
"type": "string",
"maxLength": 40
},
"to": {
"type": "string",
"maxLength": 40
},
"employeeIDs": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
}
},
"typeIDs": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
}
},
"includeDeleted": {
"type": "boolean"
}
},
"required": [
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_list_availabilities(from, to, employeeID, type)
Read contained records: start>=from AND end<to, max93days here. End exactly at to is excluded; allow an extra second beyond the last desired end. This differs from leave overlap.
입력 스키마
{
"type": "object",
"properties": {
"from": {
"type": "string",
"maxLength": 40
},
"to": {
"type": "string",
"maxLength": 40
},
"employeeID": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
"type": {
"type": "string",
"enum": [
"WORK",
"NO_WORK"
]
}
},
"required": [
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_list_department_days(departmentID, from, to)
Read stored daily notes, manual revenue, extra labor and targets; from inclusive/to exclusive company-zone days, max93days here. Array may include null for unstored days. Calculated labor totals use get_department_stats.
입력 스키마
{
"type": "object",
"properties": {
"departmentID": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
"from": {
"type": "string"
},
"to": {
"type": "string"
}
},
"required": [
"departmentID",
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_get_department_day(departmentID, date)
Read one stored daily record; a successful null means no data is stored for that day.
입력 스키마
{
"type": "object",
"properties": {
"departmentID": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
"date": {
"type": "string"
}
},
"required": [
"departmentID",
"date"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢workfeed_get_department_stats(departmentID, from, to)
Calculated per-day laborCost/revenue, with from/to inclusive company-zone days, at most31days. Prefer laborCost here: shift grossPay is0 for monthly-paid staff. laborPercentage null when revenue0 is not0%.
입력 스키마
{
"type": "object",
"properties": {
"departmentID": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
"from": {
"type": "string"
},
"to": {
"type": "string"
}
},
"required": [
"departmentID",
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴workfeed_create_shift(confirm, roleID, start, end, employeeID, ...)
Create one shift after the user approves its exact staff, role and times. confirm:true is mandatory. released:true publishes it and cannot be undone through this connector. employeeID:null creates an unassigned shift. No automatic retry; inspect before retrying an uncertain outcome.
입력 스키마
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true
},
"roleID": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
"start": {
"type": "string",
"maxLength": 40
},
"end": {
"type": "string",
"maxLength": 40
},
"employeeID": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
{
"type": "null"
}
]
},
"released": {
"type": "boolean"
},
"comment": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
},
"tagIDs": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
}
}
},
"required": [
"confirm",
"roleID",
"start",
"end",
"employeeID",
"released",
"comment"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴workfeed_update_shift(id, confirm, expectedUpdateTime, roleID, start, ...)
Update one shift after user review; confirm:true required. Pre-reads current shift, optionally rejects stale expectedUpdateTime, and never changes either original UTC calendar day. Vendor additionally enforces company-date rules. Published shifts cannot be unpublished. No deletes or automatic write retries; inspect uncertain outcomes.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
"confirm": {
"type": "boolean",
"const": true
},
"expectedUpdateTime": {
"type": "string",
"maxLength": 40
},
"roleID": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
"start": {
"type": "string",
"maxLength": 40
},
"end": {
"type": "string",
"maxLength": 40
},
"employeeID": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
},
{
"type": "null"
}
]
},
"released": {
"type": "boolean"
},
"comment": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
},
"tagIDs": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque Workfeed ID from a preceding read; not a UUID."
}
}
},
"required": [
"id",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}커뮤니티
증거