botverse-mcp 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +2 -1
  2. package/package.json +1 -1
  3. package/tools.json +125 -5
package/README.md CHANGED
@@ -8,12 +8,13 @@ MCP server **and command-line tool** for [Botverse](https://botverse.cloud) —
8
8
 
9
9
  - **Video transcoding** — MP4 (H.264), WebM (VP9), ProRes 422, GIF, MP3 extraction · $0.25/job
10
10
  - **Document conversion** — Markdown ↔ DOCX ↔ PDF ↔ HTML ↔ XLSX · $0.05/file
11
+ - **Transcription** — speaker-labelled transcripts (diarization + AI speaker naming) → txt/srt/vtt/docx/pdf · ~$5/hour
11
12
 
12
13
  Two ways to use it: an **MCP server** for your AI agents, and a **`botverse` CLI** for the shell — evaluation, CI/CD, cron, scripts, and local coding agents. No AWS. No FFmpeg. No infrastructure.
13
14
 
14
15
  ## Setup
15
16
 
16
- 1. Sign up at [botverse.cloud](https://botverse.cloud) — $5 minimum top-up, no monthly fees
17
+ 1. Sign up at [botverse.cloud](https://botverse.cloud) — **free to try: $1 credit on signup, no card required.** A card + 2FA are only needed at your first top-up ($5 min). No monthly fees.
17
18
  2. Get an API key or connector URL from your dashboard
18
19
  3. Add to your MCP client config
19
20
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botverse-mcp",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "mcpName": "io.github.MkTurner74/botverse",
5
5
  "description": "Botverse for AI agents and the command line — video transcoding and document conversion. MCP server + `botverse` CLI. $0.25/transcode · $0.05/convert · No AWS required.",
6
6
  "main": "index.js",
package/tools.json CHANGED
@@ -152,7 +152,7 @@
152
152
  },
153
153
  {
154
154
  "name": "transcode_video",
155
- "description": "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 ≤ 10 minutes and ≤ 5 GB. Poll get_job_status every 5 seconds until 'complete', then get_download_url. Wallet debited on completion.",
155
+ "description": "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.",
156
156
  "inputSchema": {
157
157
  "type": "object",
158
158
  "properties": {
@@ -254,13 +254,13 @@
254
254
  },
255
255
  {
256
256
  "name": "get_job_status",
257
- "description": "Poll the status of a transcode or convert job. Call every 5 seconds until status is 'complete' or 'failed'. Status 'queued' or 'processing' is normal — large files take 5–15 minutes. Keep polling indefinitely until a terminal status is reached. Do not stop polling after a fixed number of attempts.",
257
+ "description": "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.",
258
258
  "inputSchema": {
259
259
  "type": "object",
260
260
  "properties": {
261
261
  "job_id": {
262
262
  "type": "string",
263
- "description": "Job ID returned by transcode_video, transcode_from_url, convert_file, convert_from_url, or convert_content."
263
+ "description": "Job ID returned by transcode_video, transcode_from_url, convert_file, convert_from_url, convert_content, transcribe_from_url, or transcribe_media."
264
264
  }
265
265
  },
266
266
  "required": [
@@ -321,7 +321,7 @@
321
321
  "properties": {
322
322
  "job_id": {
323
323
  "type": "string",
324
- "description": "Job ID from transcode_video, transcode_from_url, or any convert tool."
324
+ "description": "Job ID from transcode_video, transcode_from_url, any convert tool, or any transcribe tool."
325
325
  }
326
326
  },
327
327
  "required": [
@@ -525,7 +525,7 @@
525
525
  },
526
526
  {
527
527
  "name": "submit_workflow",
528
- "description": "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. Requires auto-refill to be enabled at botverse.cloud/dashboard/billing to prevent mid-workflow balance failures. Workflow definition uses BWDL (Botverse Workflow Definition Language) — schema at botverse.cloud/schemas/workflow/v1.json.",
528
+ "description": "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.",
529
529
  "inputSchema": {
530
530
  "type": "object",
531
531
  "properties": {
@@ -746,5 +746,125 @@
746
746
  "idempotentHint": false,
747
747
  "openWorldHint": true
748
748
  }
749
+ },
750
+ {
751
+ "name": "transcribe_from_url",
752
+ "description": "Transcribe a video or audio file from a public HTTPS URL into a speaker-labelled transcript — ONE call does everything. Source can be a direct HTTPS URL or a Dropbox / Google Drive / Box share link (auto-resolved); OneDrive and SharePoint share links are unreliable — use a direct download URL, or upload via get_upload_url + transcribe_media. 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.",
753
+ "inputSchema": {
754
+ "type": "object",
755
+ "properties": {
756
+ "source_url": {
757
+ "type": "string",
758
+ "description": "Public HTTPS URL of the source video or audio file."
759
+ },
760
+ "output_format": {
761
+ "type": "string",
762
+ "enum": [
763
+ "txt",
764
+ "json",
765
+ "srt",
766
+ "vtt",
767
+ "docx",
768
+ "pdf"
769
+ ],
770
+ "description": "Primary deliverable format."
771
+ },
772
+ "options": {
773
+ "type": "object",
774
+ "description": "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 job."
775
+ }
776
+ },
777
+ "required": [
778
+ "source_url",
779
+ "output_format"
780
+ ]
781
+ },
782
+ "outputSchema": {
783
+ "type": "object",
784
+ "properties": {
785
+ "job_id": {
786
+ "type": "string",
787
+ "description": "Unique identifier for this job. Pass to get_job_status and get_download_url."
788
+ },
789
+ "status": {
790
+ "type": "string",
791
+ "enum": [
792
+ "queued",
793
+ "processing"
794
+ ],
795
+ "description": "Initial job state."
796
+ }
797
+ },
798
+ "required": [
799
+ "job_id",
800
+ "status"
801
+ ]
802
+ },
803
+ "annotations": {
804
+ "readOnlyHint": false,
805
+ "destructiveHint": false,
806
+ "idempotentHint": false,
807
+ "openWorldHint": true
808
+ }
809
+ },
810
+ {
811
+ "name": "transcribe_media",
812
+ "description": "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).",
813
+ "inputSchema": {
814
+ "type": "object",
815
+ "properties": {
816
+ "object_key": {
817
+ "type": "string",
818
+ "description": "The object_key returned by get_upload_url."
819
+ },
820
+ "output_format": {
821
+ "type": "string",
822
+ "enum": [
823
+ "txt",
824
+ "json",
825
+ "srt",
826
+ "vtt",
827
+ "docx",
828
+ "pdf"
829
+ ],
830
+ "description": "Primary deliverable format."
831
+ },
832
+ "options": {
833
+ "type": "object",
834
+ "description": "Same options object as transcribe_from_url (attendees, language, diarize, max_speakers, title, include_timestamps, also_deliver)."
835
+ }
836
+ },
837
+ "required": [
838
+ "object_key",
839
+ "output_format"
840
+ ]
841
+ },
842
+ "outputSchema": {
843
+ "type": "object",
844
+ "properties": {
845
+ "job_id": {
846
+ "type": "string",
847
+ "description": "Unique identifier for this job. Pass to get_job_status and get_download_url."
848
+ },
849
+ "status": {
850
+ "type": "string",
851
+ "enum": [
852
+ "queued",
853
+ "processing"
854
+ ],
855
+ "description": "Initial job state."
856
+ }
857
+ },
858
+ "required": [
859
+ "job_id",
860
+ "status"
861
+ ]
862
+ },
863
+ "annotations": {
864
+ "readOnlyHint": false,
865
+ "destructiveHint": false,
866
+ "idempotentHint": false,
867
+ "openWorldHint": true
868
+ }
749
869
  }
750
870
  ]