officient-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OFFICIENT_BASE_URL | No | Override base URL for sandboxes/proxies | https://api.officient.io |
| OFFICIENT_TIMEOUT_MS | No | Per-request timeout in milliseconds | 30000 |
| OFFICIENT_ACCESS_TOKEN | Yes | Bearer token for Officient API; the server refuses to start without it |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| officient_list_endpointsA | Discover Officient API endpoints from the bundled spec (no network call, no scope needed). Returns compact one-liners: operationId | METHOD path | summary | required scope | read/WRITE. Filter by tag, HTTP method or free text, then feed an operationId into officient_describe_endpoint or officient_request. READ-ONLY. |
| officient_describe_endpointA | Full detail for one Officient endpoint from the bundled spec (no network call, no scope needed): path/query parameters, request body schema and a worked example, the required OAuth scope, the documentation prose and the doc URL. Use before calling officient_request. READ-ONLY. |
| officient_requestA | Escape hatch that reaches every one of the documented Officient endpoints by operationId. Input is validated against the bundled spec before anything is sent. Required scope depends on the endpoint — officient_describe_endpoint tells you which one, and whether it writes. CAN WRITE: this tool will happily fire POST/PATCH/PUT/DELETE endpoints, so check the endpoint first. Pagination is zero-indexed (page=0 is the first page). Prefer the dedicated officient_* tools when one exists. |
| officient_get_own_accountA | Information about the account behind the current access token (company, user, locale). Required scope: basics:read. READ-ONLY. |
| officient_list_peopleA | List employees, 30 per page. Pagination is zero-indexed: page 0 is the first page. Required scope: basics:read. READ-ONLY. |
| officient_search_peopleA | Find people by name, work email or national number. Supply at least one criterion. Required scope: personal.info:read. READ-ONLY. |
| officient_get_personA | Full detail for one employee: personal data, contract summary, team, manager and more. Required scope: personal.info:read. READ-ONLY. |
| officient_get_person_custom_fieldsA | Custom field values configured on one employee (text, number, date, money, email, select_option). Required scope: personal.info.custom.fields:read. READ-ONLY. |
| officient_get_weekly_scheduleA | The employee’s current weekly working schedule (scheduled minutes per weekday). Required scope: weekly.schedules:read. READ-ONLY. |
| officient_list_teamsA | All teams in the account. Returns id and name only — despite what the upstream docs imply, the response carries NO member list (verified live 2026-07). There is no team-detail endpoint either, so team membership is not readable over the API. To reconstruct the org structure, walk officient_list_people and call the "person-manager" operation per person via officient_request instead. Required scope: basics:read. READ-ONLY. |
| officient_get_day_calendarA | Time off, overtime and scheduled minutes for a single person on a single date. Required scope: calendar:read. READ-ONLY. |
| officient_get_month_calendarA | Time off, overtime and scheduled minutes for a single person for one month. Required scope: calendar:read. READ-ONLY. |
| officient_get_year_calendarA | Every day of the year for one person, each with scheduled_minutes and any events. Use days_with_events to keep the response small. Required scope: calendar:read. READ-ONLY. |
| officient_list_event_typesA | Custom event types (holiday, remote work, overtime types, …) available in a given year, with the custom_day_off_type_id needed to add a "custom" calendar event. Required scope: calendar:read. READ-ONLY. |
| officient_list_days_off_requestsA | Calendar (days off) requests across the account, 30 per page, zero-indexed pagination. Required scope: calendar:read. READ-ONLY. |
| officient_add_calendar_eventA | Add one or more events (day off, sick day, education, overtime, …) to a person’s calendar. All events in one call must fall in the same year. Set type="custom" together with custom_day_off_type_id from officient_list_event_types; omit that id for sick_day / education. duration_minutes may be the string "all_day". Required scope: calendar:write. WRITES DATA in Officient. |
| officient_overwrite_calendar_eventA | Idempotent upsert of a single event of a given type on a given date: overwrites the existing event of that type or creates it. Handy for syncing time tracking. The event type itself cannot be changed. CAVEAT (observed live 2026-07): when an event of that type already exists on that date with the same duration_minutes, the API returns {"success":1,"info":"no action taken"} and changes NOTHING — it does not compare start_time_minutes. To move an existing event's start time, delete it with officient_delete_calendar_event and re-add it with officient_add_calendar_event. Always read the calendar back to confirm the change actually landed. Required scope: calendar:write. WRITES DATA in Officient. |
| officient_delete_calendar_eventA | Permanently remove one calendar event (e.g. a day off) from a person’s calendar. Get the event_id from a calendar read tool first. Required scope: calendar:write. WRITES DATA in Officient. |
| officient_list_contractsA | All employment contracts in the account, 30 per page, zero-indexed pagination. Required scope: contracts:read. READ-ONLY. |
| officient_list_expensesA | Expenses for a whole year, or for one month when |
| officient_list_documentsA | Documents attached to an employee, asset or car. Zero-indexed pagination. Use officient_request with operationId "download-document" to get a download URL. Required scope: documents.read. READ-ONLY. |
| officient_list_vehiclesA | Vehicles in the fleet, optionally only those assigned to one person. Zero-indexed pagination. Required scope: basics:read. READ-ONLY. |
| officient_list_assetsA | Company assets (laptops, phones, badges, …), optionally filtered by owner. Zero-indexed pagination. Required scope: basics:read. READ-ONLY. |
| officient_list_webhooksA | Webhook subscriptions configured on the account. Officient POSTs {account, event_type, related_object_id} to the target URL and retries on non-200. Required scope: webhooks:read. READ-ONLY. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dhrpieterjan/officient-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server