Skip to main content
Glama
774,710 tools. Updated 2026-11-13 02:09

"Slides" matching MCP tools:

  • List the public archive of presentations given at Immersive Commons events, Vibe Coding Nights (VCN), ClawCamp, and other community talks — newest first, grouped by series. No auth required. NOT to be confused with ic_resources_list (that lists bookable rooms). Use ic_presentations_get for one VCN session's detail. Args: { series?: string (e.g. 'VCN'|'ClawCamp'|'Talk'), format?: 'deck'|'slides'|'video'|'doc'|'link', limit?: number (max 200, default 100) }. Returns: { count, total, series: string[], scaffold, by_series: Array<{ series, presentations: P[] }>, presentations: P[] (flat) } where P = { session_no (number, VCN-only; null for non-VCN talks), series, title, date, format, public_url, deployed, speaker?, event?, summary? }. `scaffold:true` means placeholder data (real manifest not yet synced). `public_url` is a direct view/download link, null if unpublished (local-only).
    ConnectorNo auth
  • Submit a draft for verification against its brief. Returns a pass/flag verdict with per-check detail. Pass moves the article to ready_to_publish; flag moves it to draft_ready for revision. `channel` (article | reels | youtube | x | linkedin) declares WHICH of the suggestion's per-channel briefs the draft is graded against AND the submission shape — always pass it for non-article content; when omitted, the channel is inferred from `format`. Submission shapes (get_lint_rubric returns the same spec + the numeric limits): article = markdown draft; x = thread text with one post per --- separated section, NO links in post bodies (put links in a reply); linkedin = post/caption text first, optional --- separated carousel slides after, NO links in the body (put links in the first comment); reels/youtube = the production SCRIPT — the process is brief -> script -> video, this gate validates the script, and the video is produced after it passes (published URL is recorded at publish time, not here). `format` labels the storage destination: prefer one of the project's destination type ids (see list_destinations) so receipts and drafts group per destination — re-submitting the same `format` replaces that destination's draft, a different `format` keeps both. The response reports the suggestion's post-lint `status` and a `nextAction` hint; `thresholds` is the article ratio block on the article channel and null otherwise (channel limits live in get_lint_rubric checkParams). `waiveChecks` marks check ids the OPERATOR deliberately deviates from (e.g. a brief section they dropped on purpose): waived checks still run and are recorded as waived in the receipt, but no longer fail the verdict — only pass ids the operator explicitly waived, never waive on your own initiative. Verdicts and drafts are stored per `format` and re-readable any time via get_draft_status (free — never re-lint to recover a lost verdict). Status transitions are forward-only: a flagged re-submit never demotes a suggestion already at ready_to_publish or published. Daily-capped (cap and remaining are in get_account_status limits); re-submitting an unchanged draft is served from cache.
    ConnectorNo auth
  • Replace the design's camera moves and morphs between layers with a value in the stored format (read the current one with get_design timeline); `{}` clears it. A `flow` alone (slides in order, joined by transitions) is compiled into the camera and morphs it plays. Validated before saving, and the timeline grows to fit. Returns the timeline. Saved as a new revision that undo reverts; if any part is refused, nothing changes. Use it to edit or clear choreography as a whole; for one camera move use camera, for a single layer's motion animate, for a wipe between scenes make_transition, and for the length set_timeline.
    ConnectorOAuth
  • Query the ERCOT generator interconnection queue — ERCOT's public GIS Report (EMIL PG7-200-ER), the waiting line of generation projects that have REQUESTED to connect to the ERCOT (Texas) grid. Returns cited, project-level records with ERCOT's full published structure across four lifecycle sheets (Large Gen + Small Gen = active; Inactive Projects; Cancellation Update): the requested `capacity_mw` (ERCOT publishes ONE capacity figure — no summer/winter split), the ERCOT `fuel` and `technology` codes (e.g. SOL/PV solar, OTH/BA battery, GAS/CC combined-cycle, WIN/WT wind — HYD is HYDROGEN, hydro is WAT), the `cdr_reporting_zone` (NORTH/SOUTH/WEST/COASTAL/HOUSTON/PANHANDLE), the `interconnecting_entity`, the `poi_location`, the composite `gim_study_phase` token string, and the milestone dates (`screening_study_started`, `fis_approved`, `ia_signed`, `construction_start`/`construction_end`, `approved_for_energization`/`approved_for_synchronization`, `projected_cod`). Group or filter by `application_status`, `size_category`, `fuel`, `technology`, `cdr_reporting_zone`, `county_fips`, `state`, `gim_study_phase`, or `interconnecting_entity`; filter `projected_cod` by the `projected_cod_from` / `projected_cod_to` range. Pass each parameter as a top-level key of `params` (flat — not nested). Example: `{"application_status": "ACTIVE", "fuel": "SOL"}` for active solar requests; `{"application_status": "ACTIVE", "group_by": ["fuel"], "order_by": "capacity_mw", "top_n": 5}` for the active pipeline's biggest fuels by requested MW. The GIS Report is published MONTHLY and its full history is queryable — this is NOT a single point-in-time snapshot. Omit `as_of` for the latest month, or pass `as_of` (a date) to get the queue as it stood at a past month: `as_of` resolves to the newest monthly snapshot at or before it, with vintages back to 2018-12 (the floor; an earlier `as_of` is refused, naming the floor). Example: `{"application_status": "ACTIVE", "as_of": "2019-06-30"}` returns the active queue as of mid-2019. Each month is a full point-in-time snapshot (a project that has since withdrawn is simply absent from later months — query the earlier `as_of` to see it), so a multi-month trend is one query per month; `as_of` is the history axis, not a row filter. Returns JSON aggregates with citations and optional row-level records when `include_records` is true; every value carries `source`, `as_of`, and a `source_row` verifiable with get_source_evidence_v1. `capacity_mw` is REQUESTED capacity, not built: historically the large majority of queued megawatts withdraw before they are built. NEVER read a queue-MW total as installed or operating capacity — it is additive across distinct rows but is a REQUESTED total only. ERCOT prints NO status column, so `application_status` is derived from the sheet ERCOT files the project on: `ACTIVE` is the live pipeline (Large/Small Gen), `INACTIVE` and `CANCELLED` are projects that recently left the queue (the Inactive / Cancellation sheets list RECENT departures, NOT the full historical withdrawn set). The build-progress reading is carried SEPARATELY in `gim_study_phase` (e.g. "SS Completed, FIS Completed, IA") + the milestone dates and is never collapsed into `application_status`. For built/operating capacity use query_power_capacity_v1. ERCOT only — never summed, deduped, or compared across ISOs. For the MISO interconnection queue use query_power_interconnection_queue_v1; for PJM use query_power_interconnection_queue_pjm_v1 (or query_power_interconnection_queue_pjm_cycle_v1 for PJM's cluster/cycle grid); for the CAISO (California) queue use query_power_interconnection_queue_caiso_v1; for the NYISO (New York) queue use query_power_interconnection_queue_nyiso_v1; for the ISO-NE (New England) queue use query_power_interconnection_queue_isone_v1; for the SPP (central US) queue use query_power_interconnection_queue_spp_v1. This tool serves ERCOT's GIS Report, which is GENERATION-only; ERCOT's separate large-load / data-center interconnection queue is an unstructured source (TAC-meeting PDF slides) and is NOT served here, and this tool does not infer which projects are data-center-driven — that interpretation is the analyst's, from cited rows.
    ConnectorNo auth
  • Update a single question of an existing form, located by code. Changeable: name / description / explain / required / score / correctAnswer / aiMatch (FillBlank AI grading) / min / max / unit / decimalPlaces (NumberField) / words (Rate scale labels) / maxFiles (Attachment) / choices (replaces ALL choices of a choice-based question). NOT changeable — delete_question then add_question instead: question type, Rate steps, DropDown multiple, Ordering shuffle, Attachment kind. Rate rejects score / correctAnswer / aiMatch. The scored_quiz, outcome_quiz and ai_quiz scenes reject the top-level score / correctAnswer / aiMatch as well: pass choices carrying choices[i].score or choices[i].outcomes instead (TrueFalse outcome votes still need delete + recreate). Display blocks are edited here too, with their own keys: Statement takes content, Swiper takes items (replacing all slides), and both take name / description — every question key is rejected on them.
    Connector
    Destructive
    API key
  • Update a single question of an existing form, located by code. Changeable: name / description / explain / required / score / correctAnswer / aiMatch (FillBlank AI grading) / min / max / unit / decimalPlaces (NumberField) / words (Rate scale labels) / maxFiles (Attachment) / choices (replaces ALL choices of a choice-based question). NOT changeable — delete_question then add_question instead: question type, Rate steps, DropDown multiple, Ordering shuffle, Attachment kind. Rate rejects score / correctAnswer / aiMatch. The scored_quiz, outcome_quiz and ai_quiz scenes reject the top-level score / correctAnswer / aiMatch as well: pass choices carrying choices[i].score or choices[i].outcomes instead (TrueFalse outcome votes still need delete + recreate). Display blocks are edited here too, with their own keys: Statement takes content, Swiper takes items (replacing all slides), and both take name / description — every question key is rejected on them.
    Connector
    Destructive
    API key

Matching MCP Servers

Matching MCP Connectors

  • Read and update slide text and structure in owned AppStruct presentations.

  • Agent-Native Google Slides - generate and edit React presentations

  • MOVE a group and everything inside it along the timeline, keeping its internal timing intact — the 'slide this whole section later' operation. A plain group is a relative CONTAINER: it has no window of its own, so on the timeline it spans the hull of its contents, and moving it slides the whole subtree as one rigid body. `start` is the ABSOLUTE frame the group's window should end up at, not a delta, so calling it twice with the same value is a no-op. Descendants keep their spacing; the move stops when the earliest thing inside reaches frame 0. Welded caption lines are deliberately left behind (they follow their clip's speech, not this group), and an embedded morpha band moves as one unit. Fails when the group is empty or holds an always-present layer — there is no bounded window to move. To CLIP what is shown of a group rather than move it, use set_group_window; for a single layer use set_layer_block.
    Connector
    Destructive
    No auth
  • Upload files the user has on their machine (slides, photos, a short video) into sprkly and get a media_id for each. LINK MODE is the way to send a file from disk. Send files, one entry per file with its filename, sha256 and size_bytes. You get back one uploadUrl per file. PUT the bytes to it: curl -sS -X PUT --data-binary @01.jpg "<uploadUrl>". Each PUT answers JSON with mediaId. Links last 15 minutes. Up to 50 MB per file and 35 files per call. The bytes never pass through you, so a whole carousel costs a few hundred tokens. INLINE MODE is for tiny files only (a few KB): data_base64 plus filename, 25 MB at most. base64 costs about one token per character, so never inline a real slide. When files is sent, data_base64 and filename are ignored. For a public link use media_urls on sprkly_schedule_post instead. The same bytes sent twice return the same media_id.
    ConnectorNo auth
  • Upload files the user has on their machine (slides, photos, a short video) into sprkly and get a media_id for each. LINK MODE is the way to send a file from disk. Send files, one entry per file with its filename, sha256 and size_bytes. You get back one uploadUrl per file. PUT the bytes to it: curl -sS -X PUT --data-binary @01.jpg "<uploadUrl>". Each PUT answers JSON with mediaId. Links last 15 minutes. Up to 50 MB per file and 35 files per call. The bytes never pass through you, so a whole carousel costs a few hundred tokens. INLINE MODE is for tiny files only (a few KB): data_base64 plus filename, 25 MB at most. base64 costs about one token per character, so never inline a real slide. When files is sent, data_base64 and filename are ignored. For a public link use media_urls on sprkly_schedule_post instead. The same bytes sent twice return the same media_id.
    ConnectorNo auth
  • Moves a deck (slides, script and Q&A documents) to the trash, where restore_deck can recover it for 30 days before it is purged. confirm_title must exactly match the deck's current title, otherwise the call is refused; the active presentation cannot be deleted. Returns a trash_id.
    Connector
    Destructive
    OAuth
  • Publish to Instagram, Facebook, TikTok, YouTube, X, Bluesky or LinkedIn (a personal profile or an organization Page). This posts publicly unless the platform's privacy setting says otherwise, so confirm the content with the user first. `post` is exactly the JSON body of POST /api/v1/posts: Instagram takes image, legacy image-only images, reel, story, or mixed image/video carousel. Instagram video can be base64 MP4 or {"url": "https://..."}; prefer staged upload references for media. Image altText and coordinate userTags, video username-only userTags, Reel shareToFeed, collaborators, and isAiGenerated are supported where Instagram allows them; hashtags go in caption. A fully staged Instagram request returns a durable job; poll get_instagram_post_status. Legacy URL/base64 requests remain synchronous. Stories expire after 24 hours and may have no permalink. Facebook takes image, images, reel or video (base64); TikTok takes video (prefer {"url": "https://..."} over base64) or photos, with music_usage_confirmed: true. Call get_tiktok_creator_info before a TikTok post. TikTok videos publish publicly (privacy_level PUBLIC_TO_EVERYONE or omitted); any other video privacy_level is refused. Photos take any level from get_tiktok_creator_info. post_mode MEDIA_UPLOAD sends a draft to the creator's TikTok inbox instead of publishing. YouTube takes video (prefer {"url": "https://..."}), title, privacy_status (public, unlisted or private) and made_for_kids, all required; ask the user for privacy_status and made_for_kids rather than choosing them. publish_at schedules a private video to go public. Until Adeli passes YouTube's API audit, YouTube keeps every upload private: the result says so with privacyRestricted. X takes text (280 characters, a link counts as 23) and media: up to 4 images, or 1 GIF, or 1 video, as base64 or a video {"url"}; thread is a list of further posts, each a reply to the one before. Every X post is billed at X's price ($0.015, or $0.20 with a link), and a thread that fails part-way returns 207 with the posts that went live. Bluesky takes text (300 characters; links, @mentions and #hashtags become links), and either up to 4 images as base64 with altText each (over 2 MB are resized) or one MP4 video (base64 or {"url"}, up to 100 MB), plus optional langs, and thread like X. Bluesky posting is free. LinkedIn takes commentary and at most one of: image (one JPEG, PNG or GIF as {upload_id, title?} or {content_type, base64, title?}), images (2 to 20 staged images as {upload_id, alt_text?}), video (one staged MP4, 3 seconds to 30 minutes, as {upload_id, title?}), or document (one staged PDF shown as swipeable slides, as {upload_id, title}). Stage files with create_media_uploads and platform linkedin first. mentions lists {urn, name, offset} entries, where name appears in commentary at offset and urn is urn:li:organization:<id> or urn:li:person:<id>. It publishes publicly as the connected personal profile or organization Page; LinkedIn can take a minute to show a new post. Adeli does not automatically retry ambiguous writes. Instagram staged media, TikTok, Facebook video, and YouTube publish asynchronously: poll the platform's status tool with the returned jobId or publishId. Multipart uploads are REST-only. To post the same content to several accounts at once, use create_publication instead.
    ConnectorAPI key
  • Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload to an ad platform or a social post. One slide comes back as a PNG; several as a .zip named by deck, slide and size. Hidden slides are left out. The file is saved to the workspace's files; give the user `downloadUrl` (it opens for anyone signed in to the workspace) and say it's also in their files. Slide numbers and the workspace mark aren't drawn. For a PDF or PowerPoint, the user exports from the deck's File menu.
    ConnectorNo auth
  • Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload to an ad platform or a social post. One slide comes back as a PNG; several as a .zip named by deck, slide and size. Hidden slides are left out. The file is saved to the workspace's files; give the user `downloadUrl` (it opens for anyone signed in to the workspace) and say it's also in their files. Slide numbers and the workspace mark aren't drawn. For a PDF or PowerPoint, the user exports from the deck's File menu.
    ConnectorNo auth
  • Read one of the user's Instagram carousel decks (or list them all) with SERVER-RENDERED slide previews. FREE, read-only. Omit `deckId` to list decks newest-first; pass `deckId` for the full deck: per-slide preview URLs, copy headlines, paid-background flags, and a fidelity report. **Previews are faithful layout approximations, not pixel-exact exports** — they are rasterised from the deck's vector layout on the server; effects like glass/blur, image crop pan-zoom, and exotic gradients are simplified, estimated line breaks are flagged `TEXT_WRAP_ESTIMATED`, and `fidelity.exact=false` whenever anything was approximated. The user's browser export remains the source of truth for final pixels. **Instagram autopublish is NOT available** (`publish.instagram.available=false` in every response) — do not promise posting to Instagram; the deck can be exported or (later waves) published to AIGORA. Each slide also carries `exportUrl`: the PERMANENT full-resolution file when one already exists for this designVersion, else null. `export.available` says whether any exist. Preview URLs are for showing the slides in chat and are cleared by the daily scheduled preview cleanup (14 days); when a scheduler, an uploader or a download needs the real files, call `antix_export_deck`. Embed the returned preview URLs in your reply (see `markdownEmbed`) so the user SEES the slides. Poll cheaply after edits by passing `knownDesignVersion` (unchanged version skips re-rendering) and `slideIds` to re-render only edited slides. `previewStatus:"partial"` means some slides hit the time budget — call again to finish, never assume they failed.
    ConnectorAPI key
  • Turns an existing post's pictures (a carousel's slides, or a single post's picture) into a short animated vertical video and saves it as a NEW draft video post; the original post is left as it is, unless consumeSource is passed. For a slot that should hold only a Reel, make the carousel with create_carousel, then pass consumeSource: true here: once the Reel is saved the carousel draft is deleted (and a dated draft gives the Reel its day), so the plan holds no deck that will never go out. Only a draft that never went out can be consumed, and it is kept if another post was made from it; sourceRemoved says whether it went. The video opens with a hook headline that pops in word by word over a cover drawn in the post's own carousel style at full height (a single picture opens in boldPhoto on that picture; pass style to choose editorial, clean, boldPhoto or dark; the cover is also the video's thumbnail; a carousel drawn before styles, or an ad, already has words in its pictures, so its cover is drawn without them, in dark unless style is passed), shows the pictures one after another nearly full screen with a story bar counting them, then an end card with the logo, a closing line and a call-to-action button, all set in real type. Pass hook, endLine and cta to choose the words; leave them out and Simplo writes them from the post. COSTS CREDITS (one render). Rendering takes about a minute. The draft is never published or scheduled here: schedule it with schedule_post after the user approves. It goes to the source post's video platforms (Instagram as a Reel, Facebook, TikTok, YouTube as a Short; never X), or to platforms when passed: make a TikTok twin by passing platforms: ["tiktok"]. With TikTok among its platforms the caption is rewritten for TikTok (short, its own hashtags); otherwise it keeps the source post's caption. It has no music: suggest adding a sound in the Instagram or TikTok app.
    ConnectorOAuth
  • Start a pack of product cards for Wildberries or Ozon (POST /api/v1/marketplace-cards/generations). Paid. From 1-8 photos of one product and its description the service plans the pack and draws a cleaned product photo plus 3-12 slides (cover, benefits, specs, details, ...) in the marketplace's 3:4 format, keeping the marketplace's safe zones free. This is a long task of 3-8 minutes: the answer comes at once with an id and status queued. Do not wait for it in this call; fetch the result with get_marketplace_cards until status is completed or failed. Needs image_urls (public HTTPS links to JPEG, PNG or WebP photos, up to 10 MiB each; a photo the user gave you instead of a link is uploaded first with upload_media, and the url it returns goes here) and description (what the product is and the facts the cards may use: the service invents no data). Optional title and marketplace (wb is the default, ozon for Ozon). Run estimate_marketplace_cards first when the user asks the price. The pack is charged once the plan is ready, a failed pack is refunded; with too little money on the balance the answer is 402 INSUFFICIENT_BALANCE and nothing is started. Reuse idempotency_key on a retry after a timeout so that one pack is not started twice. Tell the user the pack takes a few minutes.
    ConnectorOAuth
  • Create a complete PowerPoint presentation (.pptx): a whole multi-slide deck, native and editable, in one call. `slides` is a list of create_slide intents (same form menu + data shapes — see create_slide). Slides fill in parallel and merge into one themed PPTX with page numbers. Include furniture: a hero_statement cover, section_divider breaks, and a closing (hero_statement variant=contact_closing via blocks-free slots). BLOCKED (not billed)? If an error has `can_autofix:true`, merge its `patch` into the args at `patch_target`. Unchanged retries repeat the block. New form: browse_catalog(type=schema) first. Also: mode=assemble merges existing slide job_ids as-rendered (free; theme_id does NOT re-theme them — render with create_deck(slides=[…], theme_id=…) for a unified theme); mode=fork clones a deck (free). Polling: deck_id == job_id — manage_account(action=job, job_id=<deck_id>).
    ConnectorNo auth
  • DEPRECATED: call create_presentation with an `audio` array instead — it is the same thing in one call, and the slides are viewable while the narration lands. Publish an html-presentation/v1 document using audio YOU synthesized locally (e.g. with `bisque-voice`) — free, unlimited, and works on macOS, Linux and Windows. Send each narrated slide's word timings and MP3 metadata; the server assembles presentation.json (recomputing cues from your narration markers) and returns one upload URL per MP3. Then PUT each file and POST the returned completeUrl with the returned `files` array. RE-PUBLISHING: `audio` is optional — any narrated slide you omit reuses the audio from the last publish whenever its narration text and speechSpeed are unchanged, so an HTML-only edit needs no synthesis at all. The response reports `reused`, `synthesized`, and `staleSlides` (narrated slides whose text changed and have no audio — synthesize exactly those and publish again). Use create_presentation instead to have the server narrate.
    Connector
    Destructive
    No auth
  • Convenience tool: AI-generates a video post (postType VIDEO), polls until completion, and returns the final output. Rendering a video takes longer than a carousel — typically 15-45 seconds when responseType is 'MP4', and longer for designs with animations or GIFs (which use the enhanced renderer). The content is AI-generated from your aiGeneration prompt — you do NOT provide slides. (To supply your own scene content instead, use postnitro_import_video_and_wait.) Output: 'DESIGN' (default) creates the design without rendering; 'MP4' renders the video file. A video over 2:00 fails as an MP4; its design is kept, to shorten in the editor. Motion: animated without asking, as its template is, or in the clean style. videoSettings.motionStyle picks a style, built-in or saved; videoSettings.sequenceId puts a saved sequence on every slide. templateId, brandId, presetId, and responseType are optional if you've saved defaults via postnitro_set_defaults.
    ConnectorAPI key
  • Render a batch of TikTok photo carousels from a template: swipeable 1080x1920 slides, real library photos, the copy composited as REAL text (never generated into the image, so it says exactly what you write). ASYNC — returns a jobId; poll get_job until completed, and the slide URLs come back on the job itself. SPENDS 1 CREDIT PER CAROUSEL. Max 12 per call. Keys in `values` must come from list_carousel_templates; unknown ones are reported in ignoredKeys, not rejected. Image slots take either a `collection:<pool>` key (stock photos, see the template's examples) or a direct image URL. For candid phone-shot backgrounds that match each slide's line, generate them first with studio_generate_image (modelKey 'replicate-pruna-p-image-ideogram', 1 credit, aspectRatio '9:16', prompt like 'candid iPhone photo of a laptop showing a blurred inbox at night, phone-camera grain, no people, no readable text, no logos') and pass the returned URL.
    Connector
    Destructive
    OAuth
  • SHOW what Ad Library ads ACTUALLY LOOK LIKE (creative, copy, page name), in a SELF-CONTAINED card. Pass up to 8 ad ids in ad_ids and ONE call renders them all as a gallery the user can click through; pass one id for a single full-size ad. Video ads PLAY in the card and carousel ads show their slides. Use this right after adsap_search_ad_library whenever the user asks to SEE or SHOW ads: a table of links shows nothing, so render the top results (up to 8) in the SAME turn instead of offering to. One call takes about 8 seconds whatever the number of ads, so always batch: never call once per ad. This is public ad-transparency data, not your own ads (for those use adsap_get_ad_preview). It renders ads exactly as the Ad Library shows them, so it works only for ads that search returned in the first place.
    ConnectorAPI key