Workfeed MCP by usefulapi
Review staffing, availability and leave; create or update shifts with confirmation.
我該用這個嗎
品質與安全性
發現項目(1)
- LOW在 workfeed_list_salary_supplements 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `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"
}社群
證據