Tamigo MCP by usefulapi

Read Tamigo departments, employees, shifts, absences and opening hours; register attendance.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
96%
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,474Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (1.93% 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": {
    "tamigo": {
      "url": "https://tamigo.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

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

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢tamigo_list_departments(include_parents, offset, limit)

List all departments (shops, restaurants, units) of the company: DepartmentId (a GUID, used by other tools), DepartmentKey (the POS key set in Tamigo), Name, IsDefault and ParentDepartmentId. GET /departments/application/.

Input Schema

{
  "type": "object",
  "properties": {
    "include_parents": {
      "description": "Also return the parent (grouping) departments, not only the leaf units. Default false.",
      "type": "boolean"
    },
    "offset": {
      "description": "Skip this many items (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Items to return, 1-1000 (default 200). The reply's next_offset says where to continue.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tamigo_list_employees(offset, limit)

List all employees of the company (basic): EmployeeId, Name, Email, IsPlanner, PosKey (the employee key used by the attendance tool) and DepartmentRoles. For contract, wage and absence-balance details use tamigo_list_employee_details. GET /employees/.

Input Schema

{
  "type": "object",
  "properties": {
    "offset": {
      "description": "Skip this many items (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Items to return, 1-1000 (default 200). The reply's next_offset says where to continue.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tamigo_list_employee_details(page, include_deleted, offset, limit)

Detailed employee records, 500 per page in alphabetical order: contact data, roles per department, home department, contract hours, wage type and history, absence balances, competencies, custom columns, notes and availability. Bank details and ID numbers are never returned. Large pages are returned in slices: pass the reply's next_page and next_offset to continue. GET /employees/getemployeedetails/.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 0 (default 0). Pass the previous reply's next_page.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "include_deleted": {
      "description": "Also include deleted employees. Default false.",
      "type": "boolean"
    },
    "offset": {
      "description": "Skip this many employees within the page (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Items to return, 1-500 (default 50). The reply's next_offset says where to continue.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tamigo_list_shifts(start_date, end_date, department_id, offset, limit)

Per employee and day, the original rota, the planned (current) rota and the worked (timesheet) hours for a date range, with department, employee POS key, email and wage number. Use it for payroll checks, hours worked vs planned and who worked when. Shift values are hours. GET /shifts/all/{start}/{end}/.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "First day, yyyy-mm-dd."
    },
    "end_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Last day, yyyy-mm-dd."
    },
    "department_id": {
      "description": "Department id from tamigo_list_departments. Omit for all departments.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9-]+$"
    },
    "offset": {
      "description": "Skip this many items (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Items to return, 1-1000 (default 200). The reply's next_offset says where to continue.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "start_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tamigo_list_absences(start_date, end_date, offset, limit)

All absences (holiday, sickness, leave) that overlap a date range: employee, department, absence type, start and end, and whether it is approved or rejected. GET /LeaveRequests/All/.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "First day, yyyy-mm-dd."
    },
    "end_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Last day, yyyy-mm-dd."
    },
    "offset": {
      "description": "Skip this many items (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Items to return, 1-1000 (default 200). The reply's next_offset says where to continue.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "start_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tamigo_get_opening_hours(start_date, end_date, offset, limit)

Normal and special opening hours per department for a date range. GET /OpeningHours/{start}/{end}/.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "First day, yyyy-mm-dd."
    },
    "end_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Last day, yyyy-mm-dd."
    },
    "offset": {
      "description": "Skip this many items (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Items to return, 1-1000 (default 200). The reply's next_offset says where to continue.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "start_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴tamigo_register_attendance(entries)

WRITE: register check-in and check-out times in the Tamigo timesheet, for one or many employees (the same call a POS system makes). Each entry names a department key and an employee key (the POS keys set in Tamigo under Configuration -> Departments / POS Keys; they are shown by tamigo_list_departments and tamigo_list_employees) and EITHER a check_in_time OR a check_out_time, in chronological order per employee. A break is registered by giving the same activity_name (for example Lunch, SmallBreak) on its check-in and its check-out. Tamigo may round the times by the company's rules, and the reply echoes the times actually registered. This changes worked hours and wages: it is not undone by repeating it, so confirm the entries first.

Input Schema

{
  "type": "object",
  "properties": {
    "entries": {
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "department_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[^\\u0000-\\u001f]+$",
            "description": "Department key (POS key) from Tamigo."
          },
          "employee_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[^\\u0000-\\u001f]+$",
            "description": "Employee key (POS key) from Tamigo."
          },
          "check_in_time": {
            "type": "string",
            "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})$",
            "description": "Local date-time without a timezone, yyyy-MM-ddTHH:mm:ss (the workplace's local time)."
          },
          "check_out_time": {
            "type": "string",
            "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})$",
            "description": "Local date-time without a timezone, yyyy-MM-ddTHH:mm:ss (the workplace's local time)."
          },
          "activity_name": {
            "description": "Optional break/activity name, e.g. Lunch or SmallBreak.",
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          }
        },
        "required": [
          "department_key",
          "employee_key"
        ]
      },
      "description": "1-50 entries, in chronological order."
    }
  },
  "required": [
    "entries"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴tamigo_upload_daily_revenue(rows)

WRITE: import daily revenue per department into Tamigo (the same call a cash-register system makes), used for revenue-based planning and KPIs. Each row is a department key (the POS key set in Tamigo), a date and a revenue amount (a plain number with a dot as decimal separator). A date that already has revenue for that department may be overwritten by Tamigo, so confirm the rows first. POST /Revenues/.

Input Schema

{
  "type": "object",
  "properties": {
    "rows": {
      "minItems": 1,
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "department_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "allOf": [
              {
                "pattern": "^[^\\u0000-\\u001f]+$"
              },
              {
                "pattern": "^[^,;]+$"
              }
            ],
            "description": "Department key (POS key) from Tamigo."
          },
          "date": {
            "type": "string",
            "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
            "description": "A date, yyyy-mm-dd."
          },
          "revenue": {
            "type": "number",
            "minimum": -1000000000000,
            "maximum": 1000000000000,
            "description": "Revenue for the day, e.g. 12450.5."
          }
        },
        "required": [
          "department_key",
          "date",
          "revenue"
        ]
      },
      "description": "1-200 rows."
    }
  },
  "required": [
    "rows"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools