Hub Planner MCP by usefulapi

Read Hub Planner resources, projects, bookings and timesheets; create clients and time entries.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
82%
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,267Tokens (tool definitions)
~953 BTypical response size
Moderate attention impact (1.77% 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": {
    "hub-planner": {
      "url": "https://hub-planner.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://hub-planner.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (16)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢hubplanner_list_resources(page, limit)

List one page of Hub Planner resources. Pages start at 0; follow next_page until null. For filtered results use the search tool where available.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 0,
      "description": "Zero-based page",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 100,
      "description": "Results per page, max 1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_get_resource(id)

Get one Hub Planner resource by its ID.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_list_projects(page, limit)

List one page of Hub Planner projects. Pages start at 0; follow next_page until null. For filtered results use the search tool where available.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 0,
      "description": "Zero-based page",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 100,
      "description": "Results per page, max 1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_get_project(id)

Get one Hub Planner project by its ID.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_list_bookings(page, limit)

List one page of Hub Planner bookings. Pages start at 0; follow next_page until null. For filtered results use the search tool where available.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 0,
      "description": "Zero-based page",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 100,
      "description": "Results per page, max 1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_get_booking(id)

Get one Hub Planner booking by its ID.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_list_time_entries(page, limit)

List one page of Hub Planner time entries. Pages start at 0; follow next_page until null. For filtered results use the search tool where available.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 0,
      "description": "Zero-based page",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 100,
      "description": "Results per page, max 1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_get_time_entry(id)

Get one Hub Planner timeentry by its ID.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_list_clients(page, limit)

List one page of Hub Planner clients. Pages start at 0; follow next_page until null. For filtered results use the search tool where available.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 0,
      "description": "Zero-based page",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 100,
      "description": "Results per page, max 1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_get_client(id)

Get one Hub Planner client by its ID.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_search_projects(page, limit, name, status)

Search projects by exact name or status. Pagination is zero-based.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 0,
      "description": "Zero-based page",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 100,
      "description": "Results per page, max 1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "status": {
      "type": "string",
      "enum": [
        "STATUS_ACTIVE",
        "STATUS_ARCHIVED",
        "STATUS_PENDING",
        "STATUS_PLANNED",
        "STATUS_FLOATING"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_search_resources(page, limit, email, firstName, lastName, ...)

Search resources by exact email, first name, last name or status. Pagination is zero-based.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 0,
      "description": "Zero-based page",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 100,
      "description": "Results per page, max 1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "email": {
      "type": "string"
    },
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "STATUS_ACTIVE",
        "STATUS_ARCHIVED",
        "STATUS_NON_BOOKABLE",
        "STATUS_PARKED"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_search_bookings(page, limit, resource, project, start, ...)

Find bookings for a resource, project or date range. start/end select bookings overlapping that inclusive range. Pagination is zero-based.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 0,
      "description": "Zero-based page",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 100,
      "description": "Results per page, max 1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "start": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "end": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢hubplanner_search_time_entries(page, limit, resource, project, start, ...)

Find time entries by resource, project, inclusive YYYY-MM-DD date range or submission status. Pagination is zero-based.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 0,
      "description": "Zero-based page",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 100,
      "description": "Results per page, max 1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "start": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "end": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "status": {
      "type": "string",
      "enum": [
        "UNSUBMITTED",
        "SUBMITTED",
        "APPROVED",
        "REJECTED",
        "PENDING"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡hubplanner_create_time_entry(resource, project, date, minutes, note)

WRITE: Create a time entry for a resource and project on one date. Requires a Read & Write API key. This records actual worked time and can affect reports and billing; verify details first. No automatic retries.

Input Schema

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "minutes": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1440
    },
    "note": {
      "type": "string",
      "maxLength": 10000
    }
  },
  "required": [
    "resource",
    "project",
    "date",
    "minutes"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡hubplanner_create_client(name)

WRITE: Create a client by name. Requires a Read & Write API key. Repeating the call can create duplicates.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded16 tools