Rosterfy MCP by usefulapi

Read people, events, training and rewards; assign and remove people on shifts in Rosterfy.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
92%
命名の品質
75%
ポイズニングのリスク
80%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(6)

  • HIGHTool poisoning patterns detected
  • LOWTool 'rosterfy_list_shift_assignments' name length outside 3-30 rangerosterfy_list_shift_assignments 内
  • LOWTool 'rosterfy_list_training_assignments' name length outside 3-30 rangerosterfy_list_training_assignments 内
  • LOWTool 'rosterfy_list_certificate_holders' name length outside 3-30 rangerosterfy_list_certificate_holders 内
  • LOWTool 'rosterfy_remove_user_from_shift' name length outside 3-30 rangerosterfy_remove_user_from_shift 内
  • LOWTool description contains role marker that could confuse chat modelsrosterfy_get_current_user 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~3,902トークン数(ツール定義)
~2.2 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 3.05%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `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"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 15 件