Workfeed MCP by usefulapi

Review staffing, availability and leave; create or update shifts with confirmation.

사용해야 할까요

품질 및 안전성

A
설명 품질
99%
스키마 완전성
72%
이름 품질
79%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (1)

  • LOWTool 'workfeed_list_salary_supplements' name length outside 3-30 rangeworkfeed_list_salary_supplements에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~2,812토큰 (도구 정의)
~1.1 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 2.20%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 17개