Tool Details: ucan_issue

Basic Information

Tool Name:ucan_issue
Asset Name:Issue UCAN Token
Description:Creates a venue-signed UCAN capability token. The venue is the issuer. The token grants the audience (aud) the specified capabilities (att) until expiry (exp). Present the returned token as a proof on subsequent requests that require the granted capabilities.
Adapter:ucan
Asset Hash:0x8cdd187f89b274741058bb6f175f0259feaac1f81c970c35ea02323fc0cd9ec9
Input
PropertyTypeDescription
aud*stringAudience DID — who receives this capability (e.g. did:key:z6MkBob...)
exp*integerExpiry time in unix seconds
att*arrayAttenuations — array of {with, can} capability pairs
Output

Type: object

Schema: <code>{ &quot;type&quot;: &quot;object&quot;, &quot;description&quot;: &quot;Complete signed UCAN token (header, payload, sig)&quot; }</code>

MCP Tool Usage Examples

This tool can be called via the MCP (Model Context Protocol) endpoint. Here are examples of how to use it:

JSON-RPC Call Example:

POST to https://venue-3.covia.ai/mcp

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ucan_issue",
    "arguments": {
      "input": "your input here"
    }
  }
}
cURL Example:
curl -X POST https://venue-3.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"
      }
    }
  }'
Python Example:
import requests
import json

url = "https://venue-3.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)
JavaScript/Node.js Example:
const fetch = require('node-fetch');

const url = 'https://venue-3.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));

Asset Metadata

{
	"name": "Issue UCAN Token",
	"description": "Creates a venue-signed UCAN capability token. The venue is the issuer. The token grants the audience (aud) the specified capabilities (att) until expiry (exp). Present the returned token as a proof on subsequent requests that require the granted capabilities.",
	"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",
					"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": {
					"type": "integer",
					"description": "Expiry time in unix seconds"
				}
			},
			"required": ["aud", "att", "exp"]
		},
		"output": {
			"type": "object",
			"description": "Complete signed UCAN token (header, payload, sig)"
		}
	}
}

Navigation

Back to adapter details

Back to all adapters

Back to index