Rosterfy MCP by usefulapi
Read people, events, training and rewards; assign and remove people on shifts in Rosterfy.
使うべきか
品質と安全性
検出事項(6)
- HIGH
- LOWrosterfy_list_shift_assignments 内
- LOWrosterfy_list_training_assignments 内
- LOWrosterfy_list_certificate_holders 内
- LOWrosterfy_remove_user_from_shift 内
- LOWrosterfy_get_current_user 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"rosterfy": {
"url": "https://rosterfy.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://rosterfy.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(15)
🟢rosterfy_get_current_user
Return the signed-in integration user: their profile, what they may do, and their user type. A quick check that the connection works. Rosterfy: GET /api/v2/user/me.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_list_users(page, per_page, sort_by, sort_order, filter)
List the people on the account, one page at a time, with their contact details and custom attributes. Use filter to find someone, for example attr name with operator like. Rosterfy: GET /api/v2/user.
入力スキーマ
{
"type": "object",
"properties": {
"page": {
"description": "Page of results, from 1. Default 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page, 1 to 100. Default 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_by": {
"description": "Attribute to sort on, for example id. Sorting is not applied unless set.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"sort_order": {
"description": "Sort direction. Default asc.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"filter": {
"description": "Filter conditions. Each item is {attr, operator, value}. The filterable attributes differ per resource.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"attr": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Attribute code to filter on."
},
"operator": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "Operator, for example = , > , < or like."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
}
],
"description": "Value to compare with."
}
},
"required": [
"attr",
"operator",
"value"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_get_user(user_id)
Return one person's full record, with their subscription and verification state. Rosterfy: GET /api/v2/user/{id}.
入力スキーマ
{
"type": "object",
"properties": {
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The user id."
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_list_events(page, per_page, sort_by, sort_order, filter)
List the events on the account, one page at a time. An event holds shifts; each shift has statuses that rosterfy_assign_user_to_shift needs. Rosterfy: GET /api/v2/event.
入力スキーマ
{
"type": "object",
"properties": {
"page": {
"description": "Page of results, from 1. Default 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page, 1 to 100. Default 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_by": {
"description": "Attribute to sort on, for example id. Sorting is not applied unless set.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"sort_order": {
"description": "Sort direction. Default asc.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"filter": {
"description": "Filter conditions. Each item is {attr, operator, value}. The filterable attributes differ per resource.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"attr": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Attribute code to filter on."
},
"operator": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "Operator, for example = , > , < or like."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
}
],
"description": "Value to compare with."
}
},
"required": [
"attr",
"operator",
"value"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_get_event(event_id)
Return one event: when and where it runs, who may see it, and the shift status defaults each shift inherits. Rosterfy: GET /api/v2/event/{id}.
入力スキーマ
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The event id."
}
},
"required": [
"event_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_list_shift_assignments(event_id, shift_id, page, per_page, sort_by, ...)
List the people on one shift, with their status and check-in times, one page at a time. Rosterfy: GET /api/v2/event/{event_id}/shift/{shift_id}/user.
入力スキーマ
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The event id."
},
"shift_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The shift id."
},
"page": {
"description": "Page of results, from 1. Default 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page, 1 to 100. Default 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_by": {
"description": "Attribute to sort on, for example id. Sorting is not applied unless set.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"sort_order": {
"description": "Sort direction. Default asc.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"filter": {
"description": "Filter conditions. Each item is {attr, operator, value}. The filterable attributes differ per resource.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"attr": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Attribute code to filter on."
},
"operator": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "Operator, for example = , > , < or like."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
}
],
"description": "Value to compare with."
}
},
"required": [
"attr",
"operator",
"value"
]
}
}
},
"required": [
"event_id",
"shift_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_get_shift_assignment(event_id, shift_id, shift_assignment_id)
Return one person's place on one shift: their status, check-in and check-out times, break and any rating. Rosterfy: GET /api/v2/event/{event_id}/shift/{shift_id}/user/{id}.
入力スキーマ
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The event id."
},
"shift_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The shift id."
},
"shift_assignment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The shift assignment id."
}
},
"required": [
"event_id",
"shift_id",
"shift_assignment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_list_training_modules(page, per_page, sort_by, sort_order, filter)
List the training modules the account can use, including modules from an account above it. Rosterfy: GET /api/v2/training.
入力スキーマ
{
"type": "object",
"properties": {
"page": {
"description": "Page of results, from 1. Default 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page, 1 to 100. Default 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_by": {
"description": "Attribute to sort on, for example id. Sorting is not applied unless set.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"sort_order": {
"description": "Sort direction. Default asc.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"filter": {
"description": "Filter conditions. Each item is {attr, operator, value}. The filterable attributes differ per resource.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"attr": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Attribute code to filter on."
},
"operator": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "Operator, for example = , > , < or like."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
}
],
"description": "Value to compare with."
}
},
"required": [
"attr",
"operator",
"value"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_list_training_assignments(training_id, page, per_page, sort_by, sort_order, ...)
List the people assigned to one training module, with each person's status and progress. Rosterfy: GET /api/v2/training/{training_id}/user.
入力スキーマ
{
"type": "object",
"properties": {
"training_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The training module id."
},
"page": {
"description": "Page of results, from 1. Default 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page, 1 to 100. Default 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_by": {
"description": "Attribute to sort on, for example id. Sorting is not applied unless set.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"sort_order": {
"description": "Sort direction. Default asc.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"filter": {
"description": "Filter conditions. Each item is {attr, operator, value}. The filterable attributes differ per resource.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"attr": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Attribute code to filter on."
},
"operator": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "Operator, for example = , > , < or like."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
}
],
"description": "Value to compare with."
}
},
"required": [
"attr",
"operator",
"value"
]
}
}
},
"required": [
"training_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_list_certificate_holders(certificate_id, page, per_page, sort_by, sort_order, ...)
List the people a certificate was issued to, one row per issue. Give certificate_id for one certificate, or leave it out for all. Rosterfy: GET /api/v2/certificate/user or GET /api/v2/certificate/{certificate_id}/user.
入力スキーマ
{
"type": "object",
"properties": {
"certificate_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The certificate id."
},
"page": {
"description": "Page of results, from 1. Default 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page, 1 to 100. Default 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_by": {
"description": "Attribute to sort on, for example id. Sorting is not applied unless set.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"sort_order": {
"description": "Sort direction. Default asc.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"filter": {
"description": "Filter conditions. Each item is {attr, operator, value}. The filterable attributes differ per resource.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"attr": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Attribute code to filter on."
},
"operator": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "Operator, for example = , > , < or like."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
}
],
"description": "Value to compare with."
}
},
"required": [
"attr",
"operator",
"value"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_get_reward_balance(user_id)
Return one user's reward point balance: the points they hold now and who they belong to. Rosterfy: GET /api/v2/reward-point/user/{id}.
入力スキーマ
{
"type": "object",
"properties": {
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The user id."
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_list_reports(page, per_page, sort_by, sort_order, filter)
List the account's reports and their generation state, one page at a time. This does not regenerate any report. Rosterfy: GET /api/v2/report.
入力スキーマ
{
"type": "object",
"properties": {
"page": {
"description": "Page of results, from 1. Default 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page, 1 to 100. Default 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_by": {
"description": "Attribute to sort on, for example id. Sorting is not applied unless set.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"sort_order": {
"description": "Sort direction. Default asc.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"filter": {
"description": "Filter conditions. Each item is {attr, operator, value}. The filterable attributes differ per resource.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"attr": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Attribute code to filter on."
},
"operator": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "Operator, for example = , > , < or like."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
}
],
"description": "Value to compare with."
}
},
"required": [
"attr",
"operator",
"value"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rosterfy_get_report(report_id)
Return one report's definition and its generation state (queued, processing, completed or failed). This does not regenerate it. Rosterfy: GET /api/v2/report/{id}.
入力スキーマ
{
"type": "object",
"properties": {
"report_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The report id."
}
},
"required": [
"report_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rosterfy_assign_user_to_shift(event_id, shift_id, user_id, event_shift_status_id, is_leader)
Put one person on one shift at the status you give. Read the status id from rosterfy_get_event first. A status the account treats as cancelled, or a full shift, is refused with a 422. Rosterfy: POST /api/v2/event/{event_id}/shift/{shift_id}/user.
入力スキーマ
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The event id."
},
"shift_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The shift id."
},
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The user to put on the shift id."
},
"event_shift_status_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The shift status id."
},
"is_leader": {
"description": "Whether this person leads the shift.",
"type": "boolean"
}
},
"required": [
"event_id",
"shift_id",
"user_id",
"event_shift_status_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rosterfy_remove_user_from_shift(event_id, shift_id, shift_assignment_id, repeat)
Take one person off one shift. The assignment is soft-deleted, so the history stays. On a linked series, the first call returns a 400 that asks about later shifts; repeat the call with repeat set to true to remove them from those too. Rosterfy: DELETE /api/v2/event/{event_id}/shift/{shift_id}/user/{id}.
入力スキーマ
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The event id."
},
"shift_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The shift id."
},
"shift_assignment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The shift assignment id."
},
"repeat": {
"description": "Also remove the person from every later linked shift.",
"type": "boolean"
}
},
"required": [
"event_id",
"shift_id",
"shift_assignment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス