Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
X_API_KEYNoAPI key for X (Twitter) live posting
BROLL_HOMENoWorkspace location (default ~/.broll)
BROLL_FFMPEGNoExplicit path to ffmpeg binary
X_API_SECRETNoAPI secret for X live posting
BROLL_FFPROBENoExplicit path to ffprobe binary
GEMINI_API_KEYNoAPI key for Google Gemini Imagen images and Veo video generation
OPENAI_API_KEYNoAPI key for OpenAI image generation (gpt-image-1)
X_ACCESS_TOKENNoAccess token for X live posting
MASTODON_INSTANCENoMastodon instance URL (optional)
BLUESKY_IDENTIFIERNoBluesky identifier for live posting (use an app password)
BLUESKY_APP_PASSWORDNoBluesky app password for live posting
MASTODON_ACCESS_TOKENNoAccess token for Mastodon live posting
X_ACCESS_TOKEN_SECRETNoAccess token secret for X live posting

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
broll_statusA

Report workspace location, ffmpeg availability, configured generation providers, and social platform readiness. Call this first to see what is possible. Pass probe: true to live-verify social credentials (makes real authenticated API calls, posts nothing).

generate_imageA

Generate image(s) with the user’s own API keys (BYO-key: OpenAI or Gemini; falls back to a labelled mock when no keys are set). Returns workspace asset ids usable in render_video, render_carousel, and post drafts.

generate_videoA

Generate a short video clip with the user’s own API keys (Gemini Veo when configured; labelled mock otherwise). Expensive with real keys — only call when the user’s workflow needs generated footage.

import_assetA

Copy a local file (image/video/audio) into the broll workspace and get an asset id for it.

list_assetsA

List workspace assets (generated, imported, and rendered), optionally filtered by kind.

probe_assetA

Inspect a media file: duration, dimensions, codecs, streams. Accepts an asset id or absolute path.

render_videoA

Compile a declarative RenderPlan into an mp4 via ffmpeg — deterministic, brand-aware, no generation keys needed. Clips (video/image/color) are concatenated in order; overlays and captions are burned in; optional music is mixed under clip audio. Returns the rendered asset id.

render_carouselA

Render branded carousel slides (the Instagram/LinkedIn format). Layout, fonts, accent bar, page numbers, and watermark are deterministic code; backgrounds can be plain color or any image asset. Returns one asset per slide.

extract_frameA

Extract a single PNG frame from a video at a timestamp — use it to visually QA a render.

create_post_draftA

Create a reviewable post draft (text + media + target platforms). Validates against per-platform rules (char limits, media counts/sizes) and reports violations. Nothing is published — drafts are files the user can inspect; use publish_post to send.

create_thread_draftA

Create a multi-post thread draft. On publish, posts chain as replies under the first one (Bluesky reply refs, X in_reply_to). Each post has its own text and up to 4 images, validated per platform. Nothing is published until publish_post with confirm: true.

set_profileA

Update the Bluesky profile (display name, bio, avatar image) — merges with the existing profile, never clobbers other fields. Requires confirm: true because it changes the public account.

list_draftsA

List post drafts in the outbox with status and publish results.

publish_postA

Publish a draft to its target platforms. Requires confirm: true — never call this without the user’s explicit go-ahead in the conversation. Platforms without credentials fail independently with setup instructions; "export" always succeeds and writes a ready-to-post bundle.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct resource or action: status, generation, import/list/probe assets, rendering, draft creation, publishing, and profile update. There is no functional overlap, even among similar pairs like generate_image/generate_video and render_video/render_carousel.

Naming Consistency4/5

Almost all tools follow a consistent verb_noun snake_case pattern (generate_image, list_assets, publish_post). The only deviation is 'broll_status', which uses a domain prefix plus noun rather than a verb, creating a minor inconsistency.

Tool Count5/5

14 tools is within the ideal 3-15 range and matches the server's broad scope (asset generation, management, rendering, drafts, publishing, profile). Each tool serves a distinct step in the workflow, and the count feels well-proportioned.

Completeness4/5

The tool surface covers the full content creation and publishing pipeline: asset generation/import/inspection, rendering, draft creation, publishing, and profile updates. Minor gaps include no explicit draft update/delete or asset deletion, but agents can work around these with list/create operations.

Maintenance

ActivityStale
ResponsivenessUnresponsive