Smartplan MCP by usefulapi

Read accounts, staff, shifts, worklogs and absence dates in Smartplan.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
71%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,235Tokens (tool definitions)
~779 BTypical response size
Moderate attention impact (1.75% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "smartplan": {
      "url": "https://smartplan.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://smartplan.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢smartplan_list_accounts

Shows only the account selected during login, from the authenticated account list. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_get_account

Account settings and timezone for this connection's selected account. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_list_members(limit, offset, is_admin)

One page of members for the selected account; continue with next_offset. Excludes contact details, photos and custom data. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "is_admin": {
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_get_member(id)

One member by ID in the selected account. Excludes contact details, photos and custom data. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_list_locations(limit, offset, is_hidden)

One page of locations for the selected account; continue with next_offset. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "is_hidden": {
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_get_location(id)

One location by ID in the selected account. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_list_jobtypes(limit, offset, alive)

One page of job roles for the selected account; continue with next_offset. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "alive": {
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_get_jobtype(id)

One jobtype by ID in the selected account. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_list_shifts(limit, offset, start_date, end_date, owner, ...)

One page of upcoming shifts for the selected account; continue with next_offset. Date filters use the displayed start date, including shifts crossing midnight. Shift IDs change on archive/bulk edit; worklogs are historical records. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "start_date": {
      "type": "string"
    },
    "end_date": {
      "type": "string"
    },
    "owner": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    },
    "location": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    },
    "jobtypes": {
      "minItems": 1,
      "maxItems": 25,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
      }
    }
  },
  "required": [
    "start_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_get_shift(id)

One shift by ID in the selected account. Date filters use the displayed start date, including shifts crossing midnight. Shift IDs change on archive/bulk edit; worklogs are historical records. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_list_worklogs(limit, offset, start_date, end_date, owner, ...)

One page of recorded worklogs for the selected account; continue with next_offset. Date filters use the displayed start date, including shifts crossing midnight. Shift IDs change on archive/bulk edit; worklogs are historical records. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "start_date": {
      "type": "string"
    },
    "end_date": {
      "type": "string"
    },
    "owner": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    },
    "location": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    },
    "jobtypes": {
      "minItems": 1,
      "maxItems": 25,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
      }
    }
  },
  "required": [
    "start_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_get_worklog(id)

One worklog by ID in the selected account. Date filters use the displayed start date, including shifts crossing midnight. Shift IDs change on archive/bulk edit; worklogs are historical records. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_list_absences(limit, offset, start_date, end_date, absentee, ...)

One page of absence dates for the selected account; continue with next_offset. Excludes absence types, reasons and notes. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "start_date": {
      "type": "string"
    },
    "end_date": {
      "type": "string"
    },
    "absentee": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    },
    "status": {
      "type": "string",
      "enum": [
        "W",
        "A",
        "D",
        "C",
        "DEL",
        "A-AUTO"
      ]
    }
  },
  "required": [
    "start_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smartplan_get_absence(id)

One absence by ID in the selected account. Excludes absence types, reasons and notes. Read-only Smartplan Pro API.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools