Direct answer
Grantex supplies verifiable, delegated tool authority for AgenticOrg’s governed business cases. The AgenticOrg source runtime requires one active tenant role agent, a registered provider read-tool manifest, an exact local case-purpose allowlist, and a valid delegated grant before every provider call. A missing or denied check stops the provider call. Case decisions and analyst review remain human actions in AgenticOrg; an agent grant does not approve a case. This describes repository source, not an assertion that a particular hosted tenant has the feature enabled or that the latest main commit is deployed. Check the deployed revision and the tenant’sgoverned_cases.enabled flag.
Responsibility boundary
At the last verified AgenticOrg integration check on September 24, 2026, its
Python dependency was
grantex==0.5.1. That integration did not enforce
token-level purpose or per-case caps for this flow, and a pooled run token was
not bound to one case. Python 0.6.1 is now published with general purpose and
cap APIs, but a package release alone does not wire AgenticOrg’s case context
into enforcement. Recheck AgenticOrg’s deployed dependency and flow before
claiming this as a production control. See Release Status.
Operator setup
- Review the selected provider’s manifest and allow only the read tools the business-underwriter and screening-disposition roles need.
- Register exactly one active, shared tenant agent for each role in AgenticOrg. Verify each stored Grantex agent ID and derived scope set.
- Set each role’s exact
case_purposeslist and provision a root grant that covers the registered tools. Keep credentials in a secret manager. - Configure a reviewed case policy and provider. The bundled mock provider is for local and test environments, not production verification.
- Run denied-path tests for missing role, wrong purpose, missing grant, revoked grant, undeclared tool and provider failure before enabling the tenant flag.
- Confirm the deployed SHA and operator logs before describing the flow as available to users.
SDK and MCP boundary
Machine-safe submit, list, read and investigation-scheduling methods for the AgenticOrg Python and TypeScript SDKs are proposed in AgenticOrg PR #1401. At this guide’s September 24, 2026 check, they are not in AgenticOrgmain or
its published 0.3.0 client packages. Evaluate them from that PR’s source
branch until it is merged, released and verified separately. Scheduling an
investigation is not proof it succeeded; inspect the later case state.
AgenticOrg’s MCP server advertises general agents-as-tools, not the governed
case roles. Grantex MCP transport authorization and tool authorization are
separate from AgenticOrg’s human case-decision path. Neither MCP discovery nor
an agent token can stand in for a signed-in person or a verified decision grant.
Decision grants and the agent binding
The Grantex auth service settingDECISION_GRANT_AGENT_BINDING (off by
default) binds decision grants to the agent a request names and stops
GET /v1/decisions/requests/{id} returning them to the developer API key (see
Decision Grants).
An integration that records a decision by reading decisionGrants from that
GET and presenting them to POST /v1/decisions/consume stops working when
the binding is on, because the list is no longer returned. Before the binding
is turned on, such an integration:
- Consumes its own decisions by request id. A request created without
agentIdorgrantIdis consumed withPOST /v1/decisions/requests/{id}/consumeand{"action": ..., "caseVersion": ...}, so its grants never leave Grantex. The answer has the same shape asPOST /v1/decisions/consume(requestId,jtis,actionHash, andapproverseach withsubandjti). - Consumes at the same point as before. If the decision is recorded
under a lock today, the consumption by request id happens under that
lock too. “Not approved yet” comes from the request’s own state, or from
an
unknown_grantorfour_eyes_incompleterefusal, rather than from an empty grant list. - Reads
subReasonbefore the HTTP status. Grantex refuses a grant presented for another agent with403,"reason": "decision_invalid"and"subReason": "wrong_agent", which is not an authentication failure. - Leaves agent decisions to the agent. Grants of a request made for an
agent (
agentId,grantId) are released only to that agent’s grant token (POST /v1/decisions/requests/{id}/grants) and consumed only when the same agent’s grant token accompanies the consumption (grantTokenonPOST /v1/decisions/consume). Grantex establishes the agent from that token, never from agent or grant identifiers in the request body, so the developer API key alone cannot consume them. The SDKs’enforce()sends the token it verified, as Decision Grants describes.