Workfeed MCP by usefulapi
Review staffing, availability and leave; create or update shifts with confirmation.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen workfeed_list_salary_supplements
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"workfeed": {
"url": "https://workfeed.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://workfeed.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (17)
🟢workfeed_list_departments
Department names and IDs. GET /departments. Unpaginated vendor response, bounded to5000rows and2MiB here.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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%.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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"
}Comunidad
Evidencia