| Tool Name: | ucan_issue |
| Asset Name: | Issue UCAN Token |
| Description: | Creates a venue-signed UCAN capability token for resources controlled by this venue or one of its managed custodial users. The venue is the issuer. Self-sovereign DID owners must sign UCANs with their own key using a client SDK. The token grants the audience (aud) the specified capabilities (att). Set exp to a future Unix timestamp for a finite lifetime; omitted exp or explicit exp:null mints a genuinely non-expiring token with an explicit null claim. |
| Adapter: | ucan |
| Asset Hash: | 0x53743d6a34c9772925fe3e20b7527fe4666bc55ac07f89bc00b43513f04e29eb |
| Property | Type | Description |
|---|---|---|
aud* | string | Audience DID — who receives this capability (e.g. did:key:z6MkBob...) |
att* | array | Attenuations — array of {with, can} capability pairs for venue-controlled resources |
exp | any | Optional expiry as a future integer Unix timestamp in seconds. Omit or set to null for a genuinely non-expiring token; the emitted token carries an explicit exp:null claim. |
Type: object
Schema: <code>{ "type": "object", "description": "Complete signed UCAN token (header, payload, sig)" }</code>
This tool can be called via the MCP (Model Context Protocol) endpoint. Here are examples of how to use it:
POST to https://venue-2.covia.ai/mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ucan_issue",
"arguments": {
"input": "your input here"
}
}
}curl -X POST https://venue-2.covia.ai/mcp \\
-H "Content-Type: application/json" \\
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ucan_issue",
"arguments": {
"input": "your input here"
}
}
}'import requests
import json
url = "https://venue-2.covia.ai/mcp"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ucan_issue",
"arguments": {
"input": "your input here"
}
}
}
response = requests.post(url, json=payload)
result = response.json()
print(result)const fetch = require('node-fetch');
const url = 'https://venue-2.covia.ai/mcp';
const payload = {
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'ucan_issue',
arguments: {
input: 'your input here'
}
}
};
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data));{
"name": "Issue UCAN Token",
"description": "Creates a venue-signed UCAN capability token for resources controlled by this venue or one of its managed custodial users. The venue is the issuer. Self-sovereign DID owners must sign UCANs with their own key using a client SDK. The token grants the audience (aud) the specified capabilities (att). Set exp to a future Unix timestamp for a finite lifetime; omitted exp or explicit exp:null mints a genuinely non-expiring token with an explicit null claim.",
"dateCreated": "2026-03-25T00:00:00Z",
"operation": {
"adapter": "ucan:issue",
"toolName": "ucan_issue",
"input": {
"type": "object",
"properties": {
"aud": {
"type": "string",
"description": "Audience DID — who receives this capability (e.g. did:key:z6MkBob...)"
},
"att": {
"type": "array",
"description": "Attenuations — array of {with, can} capability pairs for venue-controlled resources",
"items": {
"type": "object",
"properties": {
"with": { "type": "string", "description": "Resource path (e.g. /w/, /w/projects/)" },
"can": { "type": "string", "description": "Ability (e.g. crud/read, crud/write, *)" }
},
"required": ["with", "can"]
}
},
"exp": {
"description": "Optional expiry as a future integer Unix timestamp in seconds. Omit or set to null for a genuinely non-expiring token; the emitted token carries an explicit exp:null claim."
}
},
"required": ["aud", "att"]
},
"output": {
"type": "object",
"description": "Complete signed UCAN token (header, payload, sig)"
}
}
}