onyx_perm_grant
ActiveTool of onyx-paid-mcp
Mint a signed permission grant (onyx-perm-grant/v0) for an agent: a portable, Ed25519-notarized declaration of the scope it may act within (allowed_actions, allowed_merchants/domains, spend_max_usdc, principal, consent_ref, expires_at). Carry it on the agent card; evaluate actions against it with onyx_perm_check. Facts, not judgments — attests what was declared, not that the grantor holds the authority. (price: $0.00 USDC, tier: free)
Parameters schema
{
"type": "object",
"required": [
"agent"
],
"properties": {
"agent": {
"type": "string",
"description": "Who is granted (did:pkh / wallet / agent id)"
},
"purpose": {
"type": "string"
},
"principal": {
"type": "string",
"description": "Who grants the authority (did / email / org)"
},
"expires_at": {
"type": "integer",
"description": "Unix time the grant lapses"
},
"consent_ref": {
"type": "string",
"description": "Proof of consent (AP2 mandate id / signature hash)"
},
"velocity_max": {
"type": "integer",
"description": "Max number of transacts per window"
},
"spend_max_usdc": {
"type": "number",
"description": "Hard ceiling per action"
},
"allowed_actions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Subset of ['read', 'verify', 'transact', 'sign', 'negotiate', 'subscribe']; deny-by-default"
},
"allowed_domains": {
"type": "array",
"items": {
"type": "string"
}
},
"spend_window_sec": {
"type": "integer",
"description": "Window length in seconds (default 86400)"
},
"allowed_merchants": {
"type": "array",
"items": {
"type": "string"
}
},
"spend_window_usdc": {
"type": "number",
"description": "Optional rolling-window aggregate cap"
},
"per_counterparty_budget": {
"type": "number",
"description": "Max aggregate spend per single counterparty per window"
}
}
}Parent server
onyx-paid-mcp
https://github.com/dimitrilaouanis-tech/onyx-mcp
2/7 registries