Read Homebase locations, employees, shifts, timecards, labor costs and time clock status.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
The Homebase company this API key belongs to: name, owner (id, name, email, phone) and created/updated times. GET /company.
This tool takes no arguments.
The Homebase company this API key belongs to: name, owner (id, name, email, phone) and created/updated times. GET /company.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One employee of a location by user id, with contact details and job (role, wage type and rate, payroll id). The id is the job's user id from homebase_list_employees. GET /locations/{location_uuid}/employees/{id}.
| Argument | Type | Description |
|---|---|---|
| employee_id* | integer | Homebase user id of the employee. |
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
| with_archived | boolean | Also find an archived employee (default false). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid",
"employee_id"
],
"properties": {
"employee_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Homebase user id of the employee.",
"exclusiveMinimum": 0
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
},
"with_archived": {
"type": "boolean",
"description": "Also find an archived employee (default false)."
}
}
}Aggregate labor for a location in a date range, grouped by day or by hour: regular, overtime and paid hours, labor cost, tips, breaks and time off. GET /locations/{location_uuid}/labor.
| Argument | Type | Description |
|---|---|---|
| end_date* | string | End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| group_by | string | Group the totals by day (default) or by hour. |
| start_date* | string | Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid",
"start_date",
"end_date"
],
"properties": {
"end_date": {
"type": "string",
"description": "End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"group_by": {
"enum": [
"day",
"hour"
],
"type": "string",
"description": "Group the totals by day (default) or by hour."
},
"start_date": {
"type": "string",
"description": "Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}Aggregate labor (hours, cost, wage rate, tips, overtime, time off) for a location in a date range, grouped by employee. Use it for payroll totals. GET /locations/{location_uuid}/labor/by_employee.
| Argument | Type | Description |
|---|---|---|
| end_date* | string | End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| start_date* | string | Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid",
"start_date",
"end_date"
],
"properties": {
"end_date": {
"type": "string",
"description": "End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"start_date": {
"type": "string",
"description": "Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}Aggregate labor (hours, cost, tips, overtime) for a location in a date range, grouped by role. GET /locations/{location_uuid}/labor/by_role.
| Argument | Type | Description |
|---|---|---|
| end_date* | string | End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| start_date* | string | Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid",
"start_date",
"end_date"
],
"properties": {
"end_date": {
"type": "string",
"description": "End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"start_date": {
"type": "string",
"description": "Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}One location by uuid: name, address, phone, website, time zone and POS merchant id. GET /locations/{location_uuid}.
| Argument | Type | Description |
|---|---|---|
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid"
],
"properties": {
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}The Homebase subscription plan of a location: plan number, price, last update and trial state. GET /locations/{location_uuid}/plan.
| Argument | Type | Description |
|---|---|---|
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid"
],
"properties": {
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}One shift of a location by id, with its labor data and optional note. GET /locations/{location_uuid}/shifts/{id}.
| Argument | Type | Description |
|---|---|---|
| shift_id* | integer | Homebase shift id. |
| with_note | boolean | Include the shift note. |
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid",
"shift_id"
],
"properties": {
"shift_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Homebase shift id.",
"exclusiveMinimum": 0
},
"with_note": {
"type": "boolean",
"description": "Include the shift note."
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}One timecard of a location by id: clock in and out, breaks, labor hours and cost, tips, approval state. GET /locations/{location_uuid}/timecards/{id}.
| Argument | Type | Description |
|---|---|---|
| timecard_id* | integer | Homebase timecard id. |
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid",
"timecard_id"
],
"properties": {
"timecard_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Homebase timecard id.",
"exclusiveMinimum": 0
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}The current time-clock state of one job (employee at a location): clocked_in, on_break or clocked_out, the current shift, the shifts that can be clocked into and the breaks that can be started. The job id is the `job.id` of an employee from homebase_list_employees. GET /timeclock/status.
| Argument | Type | Description |
|---|---|---|
| job_id* | integer | Homebase job id (`job.id` on an employee). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Homebase job id (`job.id` on an employee).",
"exclusiveMinimum": 0
}
}
}The ids of shifts deleted in a date range at a location, with their start, end and deletion time. Use it to keep a copy of the schedule in sync. GET /locations/{location_uuid}/shifts/deleted.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| end_date* | string | End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| per_page | integer | Results per page, 1-100 (default 25). |
| start_date* | string | Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid",
"start_date",
"end_date"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"description": "End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"start_date": {
"type": "string",
"description": "Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}The ids of timecards deleted in a date range at a location, with clock in, clock out and deletion time. Use it to keep a copy of the timecards in sync. GET /locations/{location_uuid}/timecards/deleted.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| end_date* | string | End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| per_page | integer | Results per page, 1-100 (default 25). |
| start_date* | string | Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid",
"start_date",
"end_date"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"description": "End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"start_date": {
"type": "string",
"description": "Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}List the employees of a location with contact details and their job: level, default role, additional roles, wage type and rate, payroll id and archive date. The time-clock PIN is never returned. GET /locations/{location_uuid}/employees.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). |
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
| with_archived | boolean | Include archived employees (default false). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
},
"with_archived": {
"type": "boolean",
"description": "Include archived employees (default false)."
}
}
}List the locations (stores or sites) of the account with uuid, name, address, phone, website and time zone. The uuid is the id every other Homebase tool needs. GET /locations.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the scheduled shifts of a location in a date range: employee, role, department, start and end, published/open state, wage rate and scheduled labor hours (regular, overtime). Filter open shifts only. GET /locations/{location_uuid}/shifts.
| Argument | Type | Description |
|---|---|---|
| open | boolean | Only open shifts that any employee can claim. |
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| end_date* | string | End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| per_page | integer | Results per page, 1-100 (default 25). |
| with_note | boolean | Include the shift note. |
| start_date* | string | Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| date_filter | string | Which shift time the range applies to (default start_at). |
| location_uuid* |
List the timecards (worked time) of a location in a date range: employee, role, clock in and out, breaks, hours, labor cost, tips and approval state. Time-off hours are always 0 on timecards; use homebase_get_labor_by_employee for totals with time off. GET /locations/{location_uuid}/timecards.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| end_date* | string | End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| per_page | integer | Results per page, 1-100 (default 25). |
| start_date* | string | Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00). |
| date_filter | string | Which timecard time the range applies to (default clock_in). |
| location_uuid* | string | Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid",
"start_date",
"end_date"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"description": "End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"start_date": {
"type": "string",
"description": "Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"date_filter": {
"enum": [
"clock_in",
"clock_out",
"created_at",
"updated_at"
],
"type": "string",
"description": "Which timecard time the range applies to (default clock_in)."
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}| string |
| Homebase location uuid (from homebase_list_locations). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_uuid",
"start_date",
"end_date"
],
"properties": {
"open": {
"type": "boolean",
"description": "Only open shifts that any employee can claim."
},
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"description": "End of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"with_note": {
"type": "boolean",
"description": "Include the shift note."
},
"start_date": {
"type": "string",
"description": "Start of the range. ISO 8601: a date (2026-10-01) or a date-time with timezone (2026-10-01T09:00:00-05:00)."
},
"date_filter": {
"enum": [
"start_at",
"end_at",
"created_at",
"updated_at"
],
"type": "string",
"description": "Which shift time the range applies to (default start_at)."
},
"location_uuid": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,64}$",
"description": "Homebase location uuid (from homebase_list_locations)."
}
}
}