Tool Details: asset_store

Basic Information

Tool Name:asset_store
Asset Name:Store Asset
Description:Store an immutable content-addressed asset in your a/ namespace. The ID is the CAD3 hash — storing identical metadata twice returns the same ID (idempotent). Use for documents, definitions, or data needing a stable tamper-proof identity. For named operations callable via grid_run, prefer covia_write to o/<name> — simpler than store-then-pin.
Adapter:asset
Asset Hash:0x683124721a40a4516efcaf3f9f1d14ffcbdda04e99ec90f15ac85e3372071169
Input
PropertyTypeDescription
contentstringOptional content payload as a hex-encoded Blob (must start with 0x). Retrieved separately via asset:content. Mutually exclusive with contentText.
metadata*anyArbitrary JSON metadata for the asset, as a JSON object (or a string containing one, parsed on receipt). The asset ID is computed from the stored metadata. Include a 'name' field for discoverability and a 'type' field for filtering (e.g. 'agent-definition', 'invoice', 'document'). When content bytes are supplied, metadata.content must be an object (or absent) — the venue validates or injects content.sha256 into it; any other shape is an error.
contentTextstringOptional content payload as plain text (auto-encoded to UTF-8 Blob). Convenience alternative to content for text documents. Mutually exclusive with content.
Output
PropertyTypeDescription
storedboolean-
refstringFully-qualified DID/a reference for the stored asset
idstringCompatibility alias for ref

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": "asset_store",
    "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": "asset_store",
      "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": "asset_store",
        "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: 'asset_store',
        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": "Store Asset",
  "description": "Store an immutable content-addressed asset in your a/ namespace. The ID is the CAD3 hash — storing identical metadata twice returns the same ID (idempotent). Use for documents, definitions, or data needing a stable tamper-proof identity. For named operations callable via grid_run, prefer covia_write to o/<name> — simpler than store-then-pin.",
  "dateCreated": "2026-03-31T00:00:00Z",
  "operation": {
    "adapter": "asset:store",
    "readOnly": false,
    "toolName": "asset_store",
    "input": {
      "type": "object",
      "properties": {
        "metadata": {
          "description": "Arbitrary JSON metadata for the asset, as a JSON object (or a string containing one, parsed on receipt). The asset ID is computed from the stored metadata. Include a 'name' field for discoverability and a 'type' field for filtering (e.g. 'agent-definition', 'invoice', 'document'). When content bytes are supplied, metadata.content must be an object (or absent) — the venue validates or injects content.sha256 into it; any other shape is an error."
        },
        "content": {
          "type": "string",
          "description": "Optional content payload as a hex-encoded Blob (must start with 0x). Retrieved separately via asset:content. Mutually exclusive with contentText."
        },
        "contentText": {
          "type": "string",
          "description": "Optional content payload as plain text (auto-encoded to UTF-8 Blob). Convenience alternative to content for text documents. Mutually exclusive with content."
        }
      },
      "required": ["metadata"]
    },
    "output": {
      "type": "object",
      "properties": {
        "ref": { "type": "string", "description": "Fully-qualified DID/a reference for the stored asset" },
        "id": { "type": "string", "deprecated": true, "description": "Compatibility alias for ref" },
        "stored": { "type": "boolean" }
      }
    }
  }
}

Navigation

Back to adapter details

Back to all adapters

Back to index