Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PIKOREELS_URLNoDeployment to talk tohttps://app.pikoreels.com
PIKOREELS_HOMENoWhere the credential lives. Set it to keep a second account or a staging login separate.~/.pikoreels

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
whoamiA

The signed-in account, its plan, and everything it has left: AI Studio credits, reels today and this month, automated posts, workspace slots and storage. Call this before any generation — the limits here are enforced server-side, so a job that exceeds them fails rather than queues. Also names the workspace the other tools will act on by default.

list_workspacesA

Every workspace on the account, with the active one marked and the plan's workspace allowance. A workspace is a separate brand: its own content, its own connected social accounts, its own analytics. Check this before acting when the account might have more than one.

use_workspaceA

Set the workspace every later tool call acts on, for the rest of this session. Takes a workspace id from list_workspaces. This only changes where THIS MCP connection points — it does not move the workspace switcher in the user's browser.

create_workspaceA

Add a workspace — a separate brand with its own content and connected accounts. Fails with a plan-limit message when the account is at its allowance. Does not switch to it; call use_workspace afterwards.

rename_workspaceA

Rename a workspace. Renaming also marks the name as human-chosen, which stops a later brand scrape from overwriting it.

delete_workspaceA

PERMANENTLY delete a workspace and everything in it — generated reels, library uploads, scheduled posts, analytics history and connected social accounts. There is no undo and no export. Refuses to delete the account's last workspace. Always confirm the exact workspace name with the user before calling this.

get_brandA

The workspace's brand: website, description, and the voice settings (brand name, @handle, niche, default platform, whether posts mention the brand). This is what the caption writer and the UGC prompt builder draw on, so read it before writing copy so the result sounds like the brand rather than like a generic ad.

update_brand_voiceB

Change how captions sound. Only the fields you send are changed; the rest are left alone. The @handle is globally unique — if it is taken the call fails with a suggestion you can offer the user.

scrape_websiteA

Fetch and summarise a website so the brand can be described from it. Use this when the user gives a URL and you need to know what the business actually is before writing copy or setting the brand. Returns the extracted content; it does not save anything.

list_connected_accountsA

The TikTok, Instagram and YouTube accounts connected to this workspace, with the ids that scheduling tools need. Connections are per workspace. New accounts can only be connected in the browser — this cannot start an OAuth flow.

disconnect_accountA

Disconnect a social account from this workspace and revoke the app's access with the platform. Already-published posts stay; anything still scheduled to it will fail. Reconnecting requires the user to go through OAuth in the browser again.

get_dashboardA

The workspace at a glance: lifetime views and likes, published count, the last five reels with their status, and what is scheduled next. The best first call for 'how am I doing'. Sections degrade independently — a section marked 'unavailable' failed on its own and the rest of the payload is still good.

get_analyticsA

Deeper performance for the workspace: totals, daily series, per-platform breakdown, top posts and posting-hour patterns. Use this over get_dashboard when the question is about trends, what performed best, or when to post.

list_postsA

Every post in the workspace — published, scheduled, publishing and failed — with captions, platforms, times, per-post metrics and the account each went to. Capped at the 500 most recent. A post fanned out to several accounts appears as one row per account sharing a reel id and publish time; the scheduling tools treat that group as one unit.

get_post_analyticsA

Metrics for specific posts by id, including how they moved over time where snapshots exist. Use after list_posts when the question is about particular posts rather than the workspace as a whole.

list_notificationsA

Recent notifications for the account — finished renders, failed publishes, allowance warnings. Useful for answering 'did anything break' without reading every post.

mark_notifications_readA

Mark notifications as read — either specific ids, or all of them at once with all=true.

list_library_uploadsA

Media in the workspace library — uploaded clips and images, with ids, titles, folders and storage keys. The ids here are what reference-taking generation tools expect.

list_foldersB

Folders the workspace's library media is organised into.

create_folderC

Create a library folder to organise media into.

move_uploads_to_folderA

Move library media into a folder, or out of every folder by passing folderId as null. Moves are metadata only — nothing is re-uploaded and no file changes.

delete_uploadA

Permanently delete one piece of library media and free its storage. Posts already published with it are unaffected, but anything still referencing it will lose the file. No undo.

list_studio_modelsA

The image and video models available, with their tiers, aspect ratios, durations and per-image or per-second credit cost. CALL THIS BEFORE generate_image or generate_video — model and tier ids are not guessable, an unknown one is rejected, and the price difference between tiers is large enough to be worth choosing deliberately.

generate_imageA

Generate images from a prompt. COSTS CREDITS — between roughly 1 and 24 credits per image depending on model and tier, charged whether or not the result is used. Get valid model, tier and aspect values from list_studio_models first, and check the balance with whoami. Returns straight away with the generated images; there is no separate job to poll.

list_image_generationsA

Recent image generation runs in this workspace, with their prompts, images and the credit balance. Use to find an earlier result rather than paying to regenerate it.

generate_videoA

Start a text-to-video generation. COSTS CREDITS — priced per second, from about 5 to 53 credits a second depending on model and tier, so a 5-second clip ranges from ~25 to ~265 credits. Charged when the job is accepted, not when it succeeds. Get valid model, quality, duration and aspect values from list_studio_models, and check the balance with whoami first. Returns a job that renders in the background; poll it with get_video_job.

get_video_jobA

The current state of one video generation — queued, running, done or failed — and the clip when it has finished. Video takes tens of seconds to minutes; poll every 10-15 seconds rather than in a tight loop.

list_video_jobsA

Recent video generations in this workspace with their status and clips, plus the credit balance. Set completedOnly to skip anything still rendering.

delete_video_jobA

Delete a generated video and its clip. Credits already spent are NOT refunded — deleting removes the result, not the charge. No undo.

list_slideshowsC

Slideshow drafts and finished sets in this workspace.

get_slideshowA

One slideshow in full — its slides, their copy and their images.

create_slideshowA

Build a slideshow from one of the built-in template sets. COSTS CREDITS — the copy is written by an LLM and each slide is a generated image, so cost scales with the slide count. Get image model and tier ids from list_studio_models. Use list_slideshow_templates for valid set ids.

list_slideshow_templatesA

The template sets create_slideshow can build from, with their ids and what each one is for.

write_post_copyA

Write a caption and hashtags in the workspace's brand voice for a piece of content. Costs a small amount of the account's text allowance. Requires a brand on the workspace — without one it fails with a 409 telling you to set a website first. Prefer this over writing captions yourself: it reads the brand voice, which you cannot see in full.

schedule_generationA

Schedule an already-generated video or image to publish to connected social accounts. THIS PUBLISHES PUBLICLY at the time given — confirm with the user before calling. The generation must have finished. publishAt must be at least ~2 minutes in the future. Selecting several accounts fans out to all of them as one group.

reschedule_postsA

Change when a scheduled post publishes. Pass EVERY id in the group — a post sent to three accounts is three rows sharing one time, and they must move together; a partial list is refused rather than splitting them. Only works while the posts are still 'scheduled', and the new time must be a few minutes out.

cancel_postsA

Cancel posts that have not published yet. Anything already published or mid-publish is silently skipped — this cannot unpublish. Pass every id in a fanned-out group to cancel it whole.

list_automationsB

Automations in this workspace. An automation is a planned run of posts across a date range — it generates a lineup of content, which a human approves, and then publishes on a schedule.

get_automationB

One automation in full, including its planned items and their individual states.

create_automationA

Plan a run of posts across a date range. This creates the plan and reserves allowance; it does not publish anything until publish_automation is called on it. The daily slot ceiling comes from the plan — read automationSlotsPerDay from whoami before choosing postTimes.

update_automationA

Change an automation's name, schedule or target accounts. Items already published are not affected.

publish_automationA

Approve an automation's lineup and commit it to the publishing schedule. THIS IS THE POINT OF NO RETURN — from here the posts go out to real accounts on their planned times without further confirmation. Always show the user the lineup from get_automation and get explicit approval before calling this.

delete_automationA

Delete an automation and cancel everything it still has scheduled. Posts it already published stay up. No undo.

get_rush_prefsB

What the Rush deck is currently tuned to — the content mix and the categories it draws from.

get_rush_feedA

Deal the next cards from the Rush deck. NOT a plain read: cards dealt here are counted against the account's daily reel allowance as soon as they are in hand, and stay counted until each one is kept or skipped with resolve_rush_item. Ask the user before dealing a large batch, and resolve what you deal.

resolve_rush_itemA

Decide a card that has been dealt — keep it, which turns it into a reel, or skip it, which returns its hold on the daily allowance. Every card from get_rush_feed should end up here.

schedule_rush_lineupA

Turn Rush cards you have already dealt into a dated plan. This is the only way to get a Rush pick onto a calendar — resolve_rush_item records a verdict but builds nothing, and create_automation invents its own content instead of taking yours.

PUBLISHES NOTHING. It returns a draft automation: no video is rendered and no post exists until publish_automation is called on the id it hands back. That makes this safe to call before showing the user anything.

The whole flow, in order:

  1. get_rush_feed — deal cards.

  2. schedule_rush_lineup — send the ones you want (this tool). Do this BEFORE step 3: if the plan is refused, the deck is left exactly as it was, whereas resolving first would close cards for a run that never existed.

  3. resolve_rush_item with 'keep' for each card you sent, and 'skip' for the rest, to clear the hand.

  4. get_automation — read the lineup back and show the user the dates and copy.

  5. publish_automation — only after the user has explicitly approved. This is irreversible.

Dates are worked out for you: it spreads the items from startDate over postTimes and returns the exact instant each one landed on, so you never compute a timestamp yourself.

ALWAYS PASS timezone. It is the one default that will embarrass you. Omitted, the zone saved on the account is used, and accounts often have none saved — which falls back to UTC, so an evening slot for a user in Asia/Kolkata is planned at half past one in the morning. Pass the user's IANA zone every time unless they actually want UTC.

startDate defaults to tomorrow, which is usually right. postTimes defaults to a spread that fits the items into the days available; it is a reasonable shape but it knows nothing about when this audience is awake, so prefer the times the workspace already posts at — list_posts shows the existing cadence. Note the plan-window check is on startDate only, so a long run can still spread past the date the plan is paid through.

Refusals worth knowing before you call: a lineup may hold at most 200 items; postTimes cannot be longer than the plan's reels-per-day (read reelsPerDay from whoami); and a run cannot start after the date the plan is paid through, so check periodEnd in whoami if the user wants something far out.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 47 tools

Disambiguation4/5

Most tools target a distinct resource+action, and descriptions go out of their way to delineate boundaries (e.g. get_dashboard vs get_analytics vs get_post_analytics, and schedule_rush_lineup vs create_automation). A few analytics/post-reading tools overlap in intent but the descriptions disambiguate them. No true duplicates.

Naming Consistency5/5

Nearly every tool follows a clean verb_noun snake_case pattern (list_slideshows, generate_image, get_video_job, create_automation, publish_automation). The vocabulary is even semantically consistent, using list_/get_/create_/update_/delete_/schedule_/publish_ in predictable ways. No mixed conventions.

Tool Count3/5

47 tools is heavy and pushes well past the comfortable 3-15 range, so the surface is daunting and increases selection cost. However the server genuinely spans many distinct sub-domains (workspaces, brand, social accounts, analytics, library, image/video/slideshow generation, scheduling, automations, rush), so each tool roughly earns its place rather than being redundant.

Completeness4/5

Coverage is broad and lifecycle-complete for the core domain: full CRUD on workspaces, automations and library media; generate/get/list/delete for videos and images; schedule, reschedule, cancel and publish for posts. Minor gaps exist (e.g. no update/delete for slideshows, brand exposed only via get_brand/update_brand_voice) but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues