API reference

All Botverse services share the same MCP endpoint and authentication model. This page documents the protocol, authentication, error codes, and a full tool inventory.

MCP protocol

Botverse implements the Model Context Protocol (MCP) with Streamable HTTP transport. Requests are JSON-RPC 2.0 POST requests to a single endpoint.

Base URL
https://botverse.cloud/mcp
Current endpoint (Transcode)
https://9gp65guz58.execute-api.us-east-2.amazonaws.com/mcp
Protocol
JSON-RPC 2.0 over HTTP POST
Content-Type
application/json
Auth header
X-API-Key: bv_live_...
Health check
GET /health → 200 OK

Supported MCP methods

MethodDescription
tools/listReturns all available tool definitions with input schemas
tools/callExecute a tool by name with provided arguments
initializeMCP handshake — called automatically by MCP clients

Request structure

{
  "jsonrpc": "2.0",
  "id": 1,                    // any integer or string — echoed back in response
  "method": "tools/call",
  "params": {
    "name": "tool_name",
    "arguments": { ... }      // tool-specific parameters
  }
}

Response structure

// Success
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ ... JSON string of tool result ... }"
      }
    ]
  }
}

// Error
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32000,
    "message": "API key missing or invalid"
  }
}
Tool results are returned as a JSON string inside content[0].text. Parse this string to get the structured result object. This is standard MCP protocol — all MCP clients handle it automatically.

Authentication

Every request must include your API key in the X-API-Key header. API keys are scoped to your account and authorize job submissions, wallet charges, and data access.

X-API-Key: bv_live_••••••••••••••••

API key format

All live keys begin with bv_live_ followed by 32 hex characters. Test keys (sandbox environment, coming soon) begin with bv_test_.

Key security

  • Never embed your API key in client-side JavaScript, mobile apps, or public repositories
  • Use environment variables or secrets managers to store keys server-side
  • Rotate keys from the dashboard if you suspect they have been exposed
  • Keys can be scoped to specific IP ranges (coming soon)

Error codes

HTTP statusJSON-RPC codeMeaning
200-32000Tool executed but returned a logical error (e.g. pre-flight rejection). Check the 'error' field in the tool result.
400-32600Invalid JSON-RPC request structure
401-32001API key missing or invalid
402-32002Insufficient wallet balance — top up at botverse.cloud
404-32601Method not found (e.g. tool name does not exist)
422-32602Invalid tool arguments — check required parameters
429-32003Rate limit exceeded — back off and retry
500-32000Internal server error — retry with exponential backoff

Tool-level errors

When a tool call succeeds at the HTTP/RPC level but the tool itself detects an error (e.g. a video file fails pre-flight), the HTTP status is still 200 and the JSON-RPC result is present. The error is embedded in the tool result as a status: "failed" and error: "..." field. Your agent (or code) must check these fields.

Example — pre-flight rejection
// HTTP 200, but the job was rejected:
{
  "result": {
    "content": [{
      "type": "text",
      "text": "{\"status\": \"failed\", \"error\": \"Source video exceeds 10-minute limit (duration: 742.3s)\"}"
    }]
  }
}

Tool inventory

Full list of all available tools across all services. Tools marked as "coming soon" are defined here for planning purposes.

botverse-transcode

Live
get_upload_urlGet presigned S3 PUT URL to upload a source file
transcode_videoSubmit a video transcode job (async)
get_job_statusPoll job status until complete or failed
get_download_urlGet presigned S3 GET URL for a completed job
get_wallet_balanceCheck wallet balance and auto-refill settings
get_usage_historyList recent jobs and costs

botverse-extract

Coming soon
extract_thumbnailsExtract JPEG frames at a fixed interval from a video
extract_audioExtract audio track as WAV or MP3
get_job_statusPoll extract job status
get_download_urlGet download URL for extracted assets

botverse-transcribe

Coming soon
transcribe_audioTranscribe audio/video to text using Whisper (SRT, VTT, JSON)
get_job_statusPoll transcription job status
get_download_urlGet download URL for transcript file

botverse-metadata

Roadmap
ingest_pipeline_outputCreate CreativeWork + Asset nodes with OMC descriptors and relationships
find_assetsSearch assets by type, relationship, or metadata field
get_assetRetrieve a single asset node with all relationships
query_graphRun a SPARQL or Cypher query against the knowledge graph
link_entitiesAdd a relationship edge between two existing nodes
update_assetAdd or update metadata fields on an existing asset node

xinsere

Roadmap
register_assetsRegister asset IDs with access permissions, optionally anchored to blockchain
check_permissionVerify whether a user or agent has read/write access to an asset
revoke_accessRevoke a previously granted permission
get_audit_logGet a tamper-evident log of all access events for an asset

Rate limits

LimitValue
Tool calls per minute60 per API key
Concurrent jobs5 per account (transcode)
tools/list callsNot rate-limited
Status pollingNot rate-limited (per-job)

If you hit rate limits for high-volume automated workloads, contact us for enterprise limits.