Overview
Grantex tokens are standard JWTs (RS256 by default, or ES256) extended with agent-specific claims. Any service can verify them locally using the published JWKS, without a per-token call to the Grantex verification API. Verifiers still need the public keys, fetched from the issuer and cached according to their SDK’s behavior.Decoded Example
typ: at+jwt). A stock OAuth or JOSE
library validates them with standard semantics; the full profile is
spec/grant-token-0.6.md.
Standard Claims
Grantex Grant Claim
urn:grantex:grant carries the grant record under a collision-resistant name:
Legacy Claim Aliases
agt, dev, grnt, scp, parentAgt, parentGrnt, delegationDepth and bdg are the
pre-0.6 names. They are still issued, with the same values, while the auth service’s
GRANT_TOKEN_LEGACY_CLAIMS is on — the default in 0.6; it defaults off in 0.7. The SDK
verifiers read the standard claim first, fall back to an alias with a deprecation warning,
and reject a token whose claim and alias disagree. See docs/migration-0.6.md.
The hosted service publishes keys at
https://api.grantex.dev/.well-known/jwks.json, but its canonical iss value is
https://grantex.dev. Current SDKs recognize that stable JWKS alias
automatically. Custom verifiers must validate the canonical issuer explicitly.
Delegation Claims
Present on tokens issued to sub-agents viagrants.delegate():
The legacy aliases
parentAgt, parentGrnt and delegationDepth carry the same values while legacy claims are issued.
Verification
Grant tokens can be verified two ways:Offline (recommended)
Verify the RS256 or ES256 signature locally using the published JWKS. This avoids the online token-verification API, although the verifier may still need to retrieve the current public keys from the JWKS endpoint.Online
Call the Grantex API for real-time revocation status:Security
- Algorithm allowlist: every verification layer (auth service, TypeScript, Python and Go SDKs) accepts only RS256 and ES256, and only with a key of the matching type named by
kid. Thealgheader cannot select another algorithm or another key. - Replay prevention: Every token’s
jtiis tracked. Presenting a previously-seenjtireturnsvalid: false. - Minimum key size: The auth service enforces a minimum 2048-bit RSA modulus on RSA signing keys; EC keys must be on P-256.