MCP JSON-RPC bridge
JSON-RPC 2.0 adapter that exposes Public Data API actions as MCP tools for AI agent integration.
JSON-RPC 2.0 adapter that exposes Public Data API actions as MCP tools for AI agent integration.
Authorization
ApiKeyAuth API key for the Public Data API and MCP bridge.
Keys are prefixed with ta_sk_ (production) or ta_test_ (sandbox).
X-API-Key: ta_sk_xxxxxxxxxxxxxxxxxxxxIn: header
Header Parameters
Date-based minor version negotiation (e.g. 2026-07-01).
If omitted, the latest version is used.
^\d{4}-\d{2}-\d{2}$Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
JSON-RPC 2.0 request envelope
Response Body
application/json
curl -X POST "https://example.com/api/v1/public/mcp" \ -H "Content-Type: application/json" \ -d '{}'{ "jsonrpc": "2.0", "result": {}, "id": "string"}Execute a Public Data API action POST
Single endpoint for all Public Data API operations. The `action` field in the request body determines which operation to execute. ### Read Actions | Action | Scope | Description | |---|---|---| | `get-active-users` | `users:read` | Get all active users | | `get-employees` | `employees:read` | Get employees with filters | | `get-user-memberships` | `users:read` | Get user-client memberships | | `get-work-item` | `work_items:read` | Get a single work item | | `list-work-items` | `work_items:read` | List work items with filters | | `get-work-item-relationships` | `work_items:read` | Get work item relationships | | `get-work-item-attachments` | `work_items:read` | Get work item attachments | | `get-work-item-photos` | `work_items:read` | Get work item photos | | `get-work-item-comments` | `work_items:read` | Get work item comments | | `get-work-item-time-entries` | `work_items:read` | Get work item time entries | | `get-work-item-assignees` | `work_items:read` | Get work item assignees | | `get-work-item-analytics` | `work_items:read` | Get work item analytics | | `get-work-item-sla` | `work_items:read` | Get work item SLA status | | `get-attendance-logs` | `attendance:read` | Get clock in/out records | | `get-shift-templates` | `shifts:read` | Get shift templates | | `get-shift-roster` | `roster:read` | Get scheduled shifts | | `get-locations` | `locations:read` | Get locations and geofences | | `get-timesheets` | `timesheets:read` | Get timesheet records | | `export-timesheets` | `timesheets:read` | Export timesheets (Sage/Payspace/SimplePay/Pastel) | | `get-overtime-records` | `overtime:read` | Get overtime records | | `list-threads` | `threads:read` | List conversation threads | | `get-job-thread` | `threads:read` | Get a job thread | | `get-job-threads` | `threads:read` | List job threads | | `get-team-thread` | `threads:read` | Get a team thread | | `get-team-threads` | `threads:read` | List team threads | | `get-thread-messages` | `threads:read` | Get messages in a thread | | `list-contacts` | `contacts:read` | List contacts | | `get-contact` | `contacts:read` | Get a single contact | | `list-contact-people` | `contacts:read` | List contact people | | `get-contact-person` | `contacts:read` | Get a contact person | | `search-contact-people` | `contacts:read` | Search contact people | | `get-contact-person-locations` | `contacts:read` | Get contact person locations | | `list-contact-locations` | `contacts:read` | List contact locations | | `get-contact-location` | `contacts:read` | Get a contact location | | `get-contact-location-people` | `contacts:read` | Get people at a location | | `list-contact-documents` | `contacts:read` | List contact documents | | `search-contacts` | `contacts:read` | Search contacts | | `search-contact-locations` | `contacts:read` | Search contact locations | | `list-recurring-jobs` | `recurring:write` or `work_items:read` | List recurring jobs | | `get-recurring-job` | `recurring:write` or `work_items:read` | Get a recurring job | ### Write Actions | Action | Scope | Description | |---|---|---| | `send-thread-message` | `threads:send_message` or `threads:write` | Send a message to a thread | | `create-work-item` | `work_items:write` | Create a new work item | | `create-appointment` | `appointments:write` or `work_items:write` | Create an appointment | | `create-comment` | `comments:write` or `work_items:write` | Add a comment to a work item | | `create-recurring-job` | `recurring:write` or `work_items:write` | Create a recurring job | | `update-recurring-job` | `recurring:write` or `work_items:write` | Update a recurring job | | `pause-recurring-job` | `recurring:write` or `work_items:write` | Pause a recurring job | | `resume-recurring-job` | `recurring:write` or `work_items:write` | Resume a recurring job | | `generate-recurring-job` | `recurring:write` or `work_items:write` | Generate instances from a recurring job | | `generate-job-card-pdf` | `work_items:read` | Generate a job card PDF | | `generate-attendance-card-pdf` | `work_items:read` | Generate an attendance card PDF | | `generate-finance-document-pdf` | `invoices:read` or `bills:read` or `quotes:read` | Generate a PDF for a finance document (invoice, quote, credit note, etc.) | | `convert-finance-document` | `invoices:write` or `bills:write` or `quotes:write` | Convert one finance document type to another (e.g. quote → invoice) | ### Dynamic Per-Type Actions For each work item type defined in the system (e.g. `job`, `invoice`, `task`), a dynamic `list-<type>` action is generated that maps to `list-work-items` with the `item_type` preset.
Batch API documentation GET
Returns documentation and format information for the batch endpoint.