# io.github.MkTurner74/botverse (npm · botverse-mcp)

Transcode video, convert docs & transcribe audio for AI agents. Free $1 trial, no card.

- Trust score: 68/100 (medium)
- Change this week: −11
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `botverse-mcp`: 68/100 (this document), [markdown](https://verifymcp.io/servers/mkturner74-botverse/botverse-mcp.md), [page](https://verifymcp.io/servers/mkturner74-botverse/botverse-mcp)

## Channel facts

- Registry: `npm`
- Package: `botverse-mcp`
- Version: `1.3.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 25 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 69/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2690 tokens (~192/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add mkturner74-botverse -- npx -y botverse-mcp
```

### Codex

```bash
codex mcp add mkturner74-botverse -- npx -y botverse-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mkturner74-botverse": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "botverse-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add mkturner74-botverse --command npx --arg -y --arg botverse-mcp
```

### Hermes

```yaml
mcp_servers:
  mkturner74-botverse:
    command: "npx"
    args: ["-y", "botverse-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "mkturner74-botverse": {
      "command": "npx",
      "args": [
        "-y",
        "botverse-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 68, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-07-31 (score 53, −26)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 79, +32)

- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: excellent
- [functional] First check of Tool coverage: 100
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: fail

### 2026-07-26 (score 47)

First indexed and scored.

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

## MCP tools (14)

### `get_upload_url` (~142 tokens)

Get a presigned PUT URL to upload any file — video, audio, or document (markdown, HTML, DOCX, etc.). The URL expires in 15 minutes. PUT raw file bytes directly to the URL. After upload, pass the object_key to transcode_video (for video) or convert_file (for documents).

Input parameters:

- `content_type` (string, required): MIME type. Video: "video/mp4". Documents: "text/markdown", "text/html", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "text/plain".
- `filename` (string, required): Original filename including extension, e.g. report.md or footage.mp4

Output parameters:

- `expires_in` (number): Seconds until the upload URL expires (900 = 15 minutes).
- `object_key` (string): storage object key — pass this to transcode_video or convert_file.
- `upload_url` (string): Presigned HTTPS PUT URL. Send raw file bytes as the request body.

### `transcode_from_url` (~271 tokens)

Offload a video or audio transcode to Botverse using a public URL — no upload step needed. Accepts share links from Dropbox, Google Drive, OneDrive (personal or business), SharePoint, and Box directly — pass the share URL as-is; they auto-resolve to the file. Also works with any direct HTTPS download URL. Limited to 2 GB. Returns a job_id immediately. IMPORTANT: tell the user the job_id right away so they can track it. Then poll get_job_status every 5 seconds. Large video files (>100 MB) can take 5–15 minutes — keep polling until status is 'complete' or 'failed', no matter how many polls it takes. Never give up early. Wallet debited on completion. Use options.start_time and options.duration to trim — e.g. start_time='00:01:00', duration=120 for a 2-minute clip.

Input parameters:

- `options` (object): Optional encoding parameters. All are optional.
- `output_format` (string, required): Target output format. One of: mp4 (H.264), webm (VP9), mov_prores (ProRes 422), mp3 (audio extraction), gif.
- `source_url` (string, required): Public HTTPS URL of the source video or audio file.

Output parameters:

- `estimated_seconds` (number): Rough estimated processing time in seconds. Actual time may vary.
- `job_id` (string): Unique identifier for this job. Pass to get_job_status and get_download_url.
- `status` (string): Initial job state — always queued or processing immediately after submission.

### `transcode_video` (~147 tokens)

Offload a video transcode to Botverse — encoding runs server-side so you can continue with other tasks. Returns a job_id immediately. Source must be ≤ 60 minutes and ≤ 2 GB. Poll get_job_status every 5 seconds until 'complete', then get_download_url. Wallet debited on completion.

Input parameters:

- `object_key` (string, required): storage object key returned by get_upload_url.
- `options` (object): Optional encoding parameters. All are optional.
- `output_format` (string, required): Target output format. One of: mp4 (H.264), webm (VP9), mov_prores (ProRes 422), mp3 (audio extraction), gif.

Output parameters:

- `estimated_seconds` (number): Rough estimated processing time in seconds. Actual time may vary.
- `job_id` (string): Unique identifier for this job. Pass to get_job_status and get_download_url.
- `status` (string): Initial job state — always queued or processing immediately after submission.

### `get_job_status` (~140 tokens)

Poll the status of a transcode, convert, or transcribe job. Call every 5 seconds until status is 'complete' or 'failed'. Status 'queued' or 'processing' is normal — large files take 5–15 minutes; transcribe reports a live stage (converting audio → transcribing → AI augmenting → rendering). Keep polling indefinitely until a terminal status is reached. Do not stop polling after a fixed number of attempts.

Input parameters:

- `job_id` (string, required): Job ID returned by transcode_video, transcode_from_url, convert_file, convert_from_url, convert_content, transcribe_from_url, or transcribe_media.

Output parameters:

- `cost_usd` (number): Amount debited from the wallet on completion, in USD.
- `error_message` (string): Human-readable error description. Present when status is 'failed'.
- `job_id` (string): The job identifier.
- `output_key` (string): storage object key of the completed output. Present when status is 'complete'. Pass to get_download_url.
- `progress_pct` (number): Encoding progress 0–100. Only present while status is 'processing'.
- `status` (string): Current job state.

### `get_download_url` (~67 tokens)

Get a presigned HTTPS URL to download the completed output file. Call after get_job_status returns 'complete'. URL expires in 24 hours.

Input parameters:

- `job_id` (string, required): Job ID from transcode_video, transcode_from_url, any convert tool, or any transcribe tool.

Output parameters:

- `download_url` (string): Presigned HTTPS GET URL for the output file. Valid for 24 hours.
- `expires_at` (string): ISO 8601 timestamp when the download URL expires.
- `filename` (string): Suggested filename for the downloaded file including extension.
- `size_bytes` (number): File size of the output in bytes.

### `get_wallet_balance` (~31 tokens)

Check the current prepaid wallet balance for this Botverse account. Use before large batch jobs to confirm sufficient funds.

Output parameters:

- `auto_refill_enabled` (boolean): Whether automatic wallet top-up is enabled.
- `balance_usd` (number): Current wallet balance in USD.
- `refill_amount_usd` (number): Amount in USD added on each auto-refill, if enabled.
- `refill_threshold_usd` (number): Balance threshold in USD that triggers an auto-refill, if enabled.

### `convert_from_url` (~338 tokens)

Offload a document conversion to Botverse — runs server-side in seconds, returns a download link, and frees you to continue with other tasks while it processes. Use this when the source document is at a public URL. Accepts share links from Dropbox, Google Drive, OneDrive (personal or business), SharePoint, and Box directly — pass the share URL as-is; they auto-resolve to the file. Also works with any direct HTTPS download URL. If you already have the content as a string, use convert_content instead — no upload step needed. Supported inputs: md, html, rst, txt, doc, docx, pptx, ppt, xlsx (PowerPoint inputs convert to pdf only). Supported outputs: docx (Word), pdf, html, txt, md, rst, xlsx (tables extracted). Office documents (Word, PowerPoint, Excel) render to PDF with full page layout — Excel PDFs honor the workbook's print areas and page setup; optional single_page_sheets scales each sheet onto exactly one PDF page. Returns a job_id immediately. Poll get_job_status every 5s until 'complete', then get_download_url. Flat fee $0.05 per file.

Input parameters:

- `output_format` (string, required): Target format: docx | html | txt | md | rst | pdf | xlsx
- `single_page_sheets` (boolean): Excel→PDF only: scale each sheet onto exactly one PDF page instead of using the workbook's print areas/page setup. Avoid for very tall sheets (1000+ rows).
- `source_url` (string, required): Public HTTPS URL of the source document.

Output parameters:

- `estimated_seconds` (number): Rough estimated processing time in seconds. Actual time may vary.
- `job_id` (string): Unique identifier for this job. Pass to get_job_status and get_download_url.
- `status` (string): Initial job state — always queued or processing immediately after submission.

### `convert_file` (~294 tokens)

Offload a document conversion to Botverse using an already-uploaded file. Workflow: (1) call get_upload_url to get a presigned upload URL, (2) PUT the raw file bytes to that URL, (3) call convert_file with the object_key — Botverse handles the rest server-side. Returns a job_id immediately so you can continue with other tasks while conversion runs. Supported inputs: md, html, rst, txt, doc, docx, pptx, ppt, xlsx (PowerPoint inputs convert to pdf only). Supported outputs: docx (Word), pdf, html, txt, md, rst, xlsx (tables extracted). Office documents (Word, PowerPoint, Excel) render to PDF with full page layout — Excel PDFs honor the workbook's print areas and page setup; optional single_page_sheets scales each sheet onto exactly one PDF page. Poll get_job_status until complete, then get_download_url. Flat fee $0.05 per file.

Input parameters:

- `object_key` (string, required): The object_key returned by get_upload_url.
- `output_format` (string, required): Target format: docx | html | txt | md | rst | pdf | xlsx
- `single_page_sheets` (boolean): Excel→PDF only: scale each sheet onto exactly one PDF page instead of using the workbook's print areas/page setup. Avoid for very tall sheets (1000+ rows).

Output parameters:

- `estimated_seconds` (number): Rough estimated processing time in seconds. Actual time may vary.
- `job_id` (string): Unique identifier for this job. Pass to get_job_status and get_download_url.
- `status` (string): Initial job state — always queued or processing immediately after submission.

### `submit_workflow` (~278 tokens)

Submit a multi-step workflow to the Botverse workflow engine. Steps execute in dependency order; parallel branches (multiple steps with the same depends_on) run simultaneously. Returns a workflow_id immediately — poll get_workflow_status every 5–10 seconds until terminal. INTER-STEP REFERENCES: pass a prior step's output into a later step with the string "$.steps.<step_id>.output_key" (e.g. a docx→pdf chain: step to_pdf has depends_on: ["to_docx"] and inputs {"source_url": "$.steps.to_docx.output_key", "input_format": "docx", "output_format": "pdf"} using tool convert_from_url). Workflow params are referenced as "$.params.<name>". No other template syntax (${...} etc.) is supported. BILLING: convert-only workflows run on wallet balance ($0.05/step). Workflows containing transcode or transcribe steps require auto-refill to be enabled at botverse.cloud/dashboard/billing (their cost scales with source duration). Workflow definition uses BWDL (Botverse Workflow Definition Language) — schema at botverse.cloud/schemas/workflow/v1.json.

Input parameters:

- `definition` (object, required): BWDL workflow definition. Must include workflow_id (string) and steps (array). Each step needs id, tool, and inputs.

Output parameters:

- `already_exists` (boolean): True if this workflow_id was already submitted — idempotent resubmit.
- `status` (string): Initial status: QUEUED or PROCESSING.
- `step_count` (number): Number of steps in the workflow.
- `workflow_id` (string): Unique workflow identifier. Pass to get_workflow_status.

### `get_workflow_status` (~76 tokens)

Get the current status of a workflow and all its steps. Each call may advance the workflow by dispatching steps whose dependencies have completed. Poll every 5–10 seconds until status is COMPLETED, FAILED, PARTIALLY_FAILED, or CANCELLED.

Input parameters:

- `workflow_id` (string, required): Workflow ID returned by submit_workflow.

Output parameters:

- `completed_at` (string): ISO timestamp when workflow reached terminal state.
- `status` (string)
- `steps` (array): Array of step status objects.
- `total_cost_usd` (number)
- `workflow_id` (string)

### `cancel_workflow` (~54 tokens)

Cancel an in-progress workflow. All queued and dispatched steps are marked CANCELLED. Completed steps are not reversed. You are only billed for steps that completed before cancellation.

Input parameters:

- `workflow_id` (string, required): Workflow ID to cancel.

Output parameters:

- `cancelled` (boolean)
- `status` (string)
- `workflow_id` (string)

### `convert_content` (~356 tokens)

Offload an inline document conversion to Botverse — pass the content directly as a string. PREFER this when you already have the content (text, or base64 for binary Office files). Inline limit: 4 MB. For larger files, use convert_from_url (public URL or cloud share link) or get_upload_url + convert_file. Supported inputs: md, html, rst, txt, doc, docx, pptx, ppt, xlsx (PowerPoint inputs convert to pdf only). Supported outputs: docx (Word), pdf, html, txt, md, rst, xlsx (tables extracted). Office documents (Word, PowerPoint, Excel) render to PDF with full page layout — Excel PDFs honor the workbook's print areas and page setup; optional single_page_sheets scales each sheet onto exactly one PDF page. Binary inputs (doc, docx, pptx, ppt, xlsx) require encoding "base64". Flat fee $0.05 per file.

Input parameters:

- `content` (string, required): The file content as a plain text string (for md, html, rst, txt) or base64-encoded bytes (for docx).
- `encoding` (string): Encoding of the content field. Defaults to "text". Use "base64" for binary inputs like .docx.
- `input_format` (string, required): Source format of the content.
- `output_format` (string, required): Target format: docx | html | txt | md | rst | pdf | xlsx
- `single_page_sheets` (boolean): Excel→PDF only: scale each sheet onto exactly one PDF page instead of using the workbook's print areas/page setup. Avoid for very tall sheets (1000+ rows).

Output parameters:

- `estimated_seconds` (number): Rough estimated processing time in seconds. Actual time may vary.
- `job_id` (string): Unique identifier for this job. Pass to get_job_status and get_download_url.
- `status` (string): Initial job state — always queued or processing immediately after submission.

### `transcribe_from_url` (~317 tokens)

Transcribe a video or audio file from a public HTTPS URL into a speaker-labelled transcript — ONE call does everything. Accepts share links from Dropbox, Google Drive, OneDrive (personal or business), SharePoint, and Box directly — pass the share URL as-is; they auto-resolve to the file. Also works with any direct HTTPS download URL. Internally: converts to audio, runs speech-to-text with speaker diarization, uses AI to name the speakers from your attendee list, and renders the document. Pass options.attendees (names, optional gender/role) and it tags who said what. Output formats: txt, json, srt, vtt, docx, pdf. CONSENT: you must have all parties' consent to record/transcribe. Returns a job_id immediately — report it to the user, then poll get_job_status (it reports a live stage: converting audio → transcribing → AI augmenting → rendering) until 'complete', then get_download_url. ~$0.08/audio-minute (~$5/hour), diarization + naming included.

Input parameters:

- `options` (object): Optional. attendees: [{name, gender?, role?}] to name speakers; language (BCP-47 or 'auto'); diarize (default true); max_speakers; title; include_timestamps; also_deliver: extra formats in the same j…
- `output_format` (string, required): Primary deliverable format.
- `source_url` (string, required): Public HTTPS URL of the source video or audio file.

Output parameters:

- `job_id` (string): Unique identifier for this job. Pass to get_job_status and get_download_url.
- `status` (string): Initial job state.

### `transcribe_media` (~179 tokens)

Transcribe an already-uploaded video/audio file (from get_upload_url) into a speaker-labelled transcript. Same one-call pipeline and options as transcribe_from_url (attendee naming, srt/vtt, formatted docx/pdf). Use for local files or files larger than a URL fetch allows (up to 2 GB). CONSENT: you must have all parties' consent. Poll get_job_status (live stage) until complete, then get_download_url. ~$0.08/audio-minute (~$5/hour).

Input parameters:

- `object_key` (string, required): The object_key returned by get_upload_url.
- `options` (object): Same options object as transcribe_from_url (attendees, language, diarize, max_speakers, title, include_timestamps, also_deliver).
- `output_format` (string, required): Primary deliverable format.

Output parameters:

- `job_id` (string): Unique identifier for this job. Pass to get_job_status and get_download_url.
- `status` (string): Initial job state.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/mkturner74-botverse/botverse-mcp#diagnostics

## Score history

- 2026-08-03: 68
- 2026-08-02: 68
- 2026-08-01: 53
- 2026-07-31: 53
- 2026-07-30: 79
- 2026-07-29: 79
- 2026-07-28: 79
- 2026-07-27: 79
- 2026-07-26: 47

## Links

- npm package: https://www.npmjs.com/package/botverse-mcp
- Socket report: https://socket.dev/npm/package/botverse-mcp
- Repository: https://github.com/MkTurner74/botverse-mcp
- Changelog RSS feed: https://verifymcp.io/servers/mkturner74-botverse/botverse-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/mkturner74-botverse/botverse-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/mkturner74-botverse/botverse-mcp
