This is the contract. Agents route on these 48 tools, never on a vendor's API — so a backend can be swapped, added or retired underneath a tool without touching a single agent. Every tool carries a tier and a scope, and the gateway enforces both before the call leaves.
Tier governs what a caller may do: read runs freely, write is policy-gated (confirm, or route to approval), privileged is blocked by default and refuses with a typed, audited reason (hand-off tools return a governed self-service link instead). Systems is how many shipped connectors bind that tool today; 1 tool is in the contract but not yet bound by a shipped connector. Adding a backend that serves a tool your agents already call needs no agent change. See the connectors.
| Tool | Tier | Scope | Systems |
|---|---|---|---|
hr.employee.getBasic HR profile of the signed-in employee (name, job title, department, manager). |
read | hr.read |
5 |
hr.pay.statement.getLatest pay statement metadata and a secure link for the signed-in employee. |
read | hr.read |
1 |
hr.timeoff.balance.getTime-off / PTO / leave balances for the signed-in employee, by accrual type. |
read | hr.read |
4 |
hr.timeoff.request.createSubmit a time-off request for the signed-in employee. |
write | hr.write |
3 |
| Tool | Tier | Scope | Systems |
|---|---|---|---|
case.comment.addAdd a comment or update to one of the signed-in user's own cases — extra detail, a reply to the assignee, or a status nudge. |
write | case.write |
3 |
case.createOpen an HR or IT case/ticket on behalf of the signed-in user. |
write | case.write |
6 |
case.getGet the status of one of the signed-in user's own cases by case id or number. |
read | case.read |
5 |
case.listList the signed-in user's own open (or all) cases. |
read | case.read |
5 |
case.updateUpdate fields on one of the signed-in user's own cases — reprioritise, add detail, or close it. |
write | case.write |
3 |
policy.lookupReturn the authoritative company policy for a topic, with a link to the governed source document. |
read | open | 0 |
| Tool | Tier | Scope | Systems |
|---|---|---|---|
files.getRetrieve one document the signed-in user can access, by id or URL (usually from a files. |
read | files.read |
4 |
files.recentList documents the signed-in user recently opened or edited — 'what was I working on?'. |
read | files.read |
1 |
files.searchFind documents and files the signed-in user can access, by name or content (e. |
read | files.read |
4 |
knowledge.article.createPublish a new knowledge article — typically to write up a resolution so the next person finds it. |
write | knowledge.write |
3 |
knowledge.article.getRetrieve the full text of one knowledge article or page by its id, number or URL — typically an id returned by knowledge. |
read | open | 3 |
knowledge.searchSearch governed enterprise knowledge (KB articles, policies, how-tos). |
read | open | 7 |
| Tool | Tier | Scope | Systems |
|---|---|---|---|
work.backlog.listList a team's backlog or the contents of a sprint — what is planned, in priority order, with state and effort. |
read | work.read |
2 |
work.item.comment.addAdd a comment to a work item's discussion, attributed to the signed-in user. |
write | work.write |
2 |
work.item.createCreate a work item — an epic, feature, user story, task or bug. |
write | work.write |
2 |
work.item.getGet one work item in full, WITH its place in the hierarchy — parent epic/feature and any child items — plus state, assignee, effort and sprint. |
read | work.read |
2 |
work.item.searchFind work items (epics, features, stories, tasks, bugs) — by assignee, state, sprint or free text. |
read | work.read |
2 |
work.item.updateUpdate a work item — move its state, reassign it, set effort/story points, or move it to another sprint. |
write | work.write |
2 |
work.testcase.createAuthor a test case and add it to a suite — title, steps and expected results. |
write | work.write |
1 |
work.testcase.listList the test cases in a suite — id, title, priority and automation status. |
read | work.read |
1 |
work.testplan.listList test plans in the project — name, state, iteration and owner. |
read | work.read |
1 |
work.testrun.getGet one test run with its outcome summary AND per-test results — total/passed/failed, and the failing tests with their error messages. |
read | work.read |
1 |
work.testrun.listList recent test runs — when they ran, against which plan or build, and the pass/fail totals. |
read | work.read |
1 |
work.testsuite.listList the test suites inside a test plan, including nesting, so an agent can drill from a plan to the suites that hold the cases. |
read | work.read |
1 |
| Tool | Tier | Scope | Systems |
|---|---|---|---|
calendar.availability.getCheck when people are free or busy over a date range, for scheduling. |
read | calendar.read |
1 |
calendar.event.createSchedule a meeting on the signed-in user's calendar and invite attendees. |
write | calendar.write |
1 |
calendar.event.listList the signed-in user's own calendar events for a date range — what's on their agenda, with times, subjects and locations. |
read | calendar.read |
1 |
comms.message.listList recent messages in the signed-in user's own inbox (sender, subject, received time, read state). |
read | comms.read |
1 |
comms.message.sendSend a message from the signed-in user to a person or channel (e. |
write | comms.write |
1 |
| Tool | Tier | Scope | Systems |
|---|---|---|---|
crm.account.getGet a CRM account/company overview: owner, segment, open opportunities count, health. |
read | crm.read |
3 |
crm.activity.logLog a call, meeting or note against a CRM record on behalf of the signed-in user. |
write | crm.write |
3 |
crm.contact.getLook up a CRM contact by name or email: role, company, owner, last activity. |
read | crm.read |
3 |
crm.opportunity.listList the signed-in user's CRM opportunities/deals with stage, value and close date. |
read | crm.read |
3 |
| Tool | Tier | Scope | Systems |
|---|---|---|---|
erp.expense.report.getThe signed-in employee's expense reports and their approval/payment state. |
read | erp.read |
2 |
erp.invoice.status.getStatus of an invoice: matched, approved, scheduled payment date. |
read | erp.read |
2 |
erp.po.approveApprove a purchase order assigned to the signed-in approver. |
write | erp.approve |
2 |
erp.po.status.getStatus of a purchase order: approval state, expected delivery, receiving status. |
read | erp.read |
2 |
| Tool | Tier | Scope | Systems |
|---|---|---|---|
data.catalog.searchSearch the data catalog for datasets, tables and metric definitions (names, owners, descriptions — not the data itself). |
read | data.read |
3 |
data.metric.getFetch a named, curated business metric from the governed semantic layer (e. |
read | data.read |
3 |
data.query.runRun freeform SQL against the data platform. |
privileged | data.privileged |
2 |
data.report.runRun a saved, parameterized report by name. |
read | data.read |
2 |
| Tool | Tier | Scope | Systems |
|---|---|---|---|
directory.person.lookupLook up a person in the corporate directory (name, title, department, manager chain). |
read | open | 1 |
identity.mfa.actionMFA enroll/reset for the signed-in user. |
privileged | identity.privileged |
1 |
identity.password.resetInitiate self-service password reset for the signed-in user. |
privileged | identity.privileged |
1 |
Need a tool that isn't here? The catalog is extensible — add a custom tool in the console, give it a scope, and map it to a backend table or endpoint. See the docs.