logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

placid-media-pipeline-engine

Connects to the Placid service to retrieve asset blueprints and orchestrate the rendering of visual media (pictures and motion visuals) using variable input data. Features secure secret credential handling and resilient fault reporting.

Author

placid-media-pipeline-engine logo

felores

MIT License

Quick Info

GitHub GitHub Stars 14
NPM Weekly Downloads 0
Tools 1
Last Updated 2026-02-19

Tags

placidapiapisplacid appplacid mcpfelores placid

Placid Media Orchestration Component

smithery badge

An implementation of the Model Context Protocol (MCP) server interface designed for seamless integration with the Placid.app asset generation API. This module facilitates querying available design schematics and triggering the creation of images and videos.

badge

Capabilities

  • Enumerate Placid blueprints, supporting restrictive criteria.
  • Initiate image and video renderings leveraging blueprints and supplied dynamic payloads.
  • Secure custody and management of API authorization keys.
  • Comprehensive exception management and data validation mechanisms.
  • Adherence to strict type definitions throughout the implementation.

Prerequisites: Node.js Runtime

  1. Obtain and set up Node.js (version 18 minimum) and npm from nodejs.org
  2. Verify the toolchain integrity: bash node --version npm --version

Setup Instructions

The simplest onboarding involves Smithery, which automates the entire provisioning process:

bash npx -y @smithery/cli install @felores/placid-mcp-server --client claude

Manual Configuration

Alternatively, inject the following configuration block into your Claude Desktop or Cline configuration file:

{ "mcpServers": { "placid": { "command": "npx", "args": ["@felores/placid-mcp-server"], "env": { "PLACID_API_TOKEN": "your-secret-access-key" } } } }

Acquiring Your Placid Access Credential

  1. Authenticate within your Placid.app environment.
  2. Navigate to the Configuration Panel > API Section.
  3. Select the option to "Generate New API Key".
  4. Assign a descriptive label (e.g., "Media Engine Access").
  5. Carefully copy the resulting token.
  6. Integrate the token into your configuration as demonstrated previously.

Development Workflow

bash

Execute in development mode with live code reloading

npm run dev

Execute verification routines

npm test

Provided Utilities

placid_retrieve_blueprints

Retrieves the catalog of accessible Placid schematics, optionally narrowing results based on specified filters. Each blueprint record contains its identifier, descriptive title, a low-resolution preview link, defined input layers, and associated metadata tags.

Arguments

  • collection_id (optional): Identifier to restrict results to a specific grouping.
  • custom_data (optional): Criteria for filtering based on associated reference attributes.
  • tags (optional): A sequence of labels used to refine the blueprint selection set.

Output Schema

Returns an array of blueprint objects, where each object encompasses: - uuid: The unique system identifier for the blueprint. - title: The human-readable name. - thumbnail: URL pointing to the preview visual asset (if provided). - layers: An enumeration of required input slots, listing their names and expected data types. - tags: Associated classification labels.

placid_render_motion_asset

Orchestrates the production of video content by mapping supplied dynamic inputs (video clips, static pictures, textual elements) onto a specified Placid design schematic. For lengthy rendering tasks (exceeding 60 seconds), the response will contain a job identifier for asynchronous status polling via the Placid portal.

Arguments

  • template_id (mandatory): The UUID referencing the chosen design schematic.
  • layers (mandatory): A dictionary detailing the variable content for each layer slot:
  • For video layer substitution: { "layerName": { "video": "https://source.mp4" } }
  • For image layer substitution: { "layerName": { "image": "https://source.jpg" } }
  • For text layer substitution: { "layerName": { "text": "Your specific inscription" } }
  • audio (optional): A Uniform Resource Locator pointing to an MP3 audio track.
  • audio_duration (optional): Setting this to 'auto' forces the audio stream to synchronize with the final video duration.
  • audio_trim_start (optional): Specifies the starting point for audio cropping (e.g., '00:00:45' or '00:00:45.25').
  • audio_trim_end (optional): Specifies the ending point for audio cropping (e.g., '00:00:55' or '00:00:55.25').

Output Schema

Yields an object detailing the rendering outcome: - status: The current state ("finished", "queued", or "error"). - video_url: The accessible endpoint for downloading the final video (present when status is "finished"). - job_id: The tracking number for monitoring lengthy operations in the Placid system.

Model Interaction Example

{ "template_id": "template-uuid", "layers": { "MAIN_VISUAL": { "video": "https://example.com/clip.mp4" }, "BRAND_ICON": { "image": "https://example.com/logo.png" }, "OVERLAY_TEXT": { "text": "Exclusive Offer Inside!" } }, "audio": "https://example.com/music.mp3", "audio_duration": "auto" }

placid_render_static_asset

Produces still graphical assets by merging Placid schematics with user-supplied elements such as text strings and image files.

Arguments

  • template_id (mandatory): The UUID of the blueprint to utilize.
  • layers (mandatory): A structured payload defining content for each input layer slot:
  • For text layers: { "layerName": { "text": "Your desired inscription" } }
  • For image layers: { "layerName": { "image": "https://asset-source.jpg" } }

Output Schema

Returns an object indicating completion: - status: Always reported as "finished" upon success. - image_url: The resulting download link for the rendered picture.

Model Interaction Example

{ "template_id": "template-uuid", "layers": { "title_field": { "text": "Welcome to The Service Platform" }, "background_asset": { "image": "https://example.com/background.jpg" } } }

Comprehensive References

For in-depth technical documentation regarding the Placid API endpoints, consult the official Placid API Documentation.

Licensing

Distributed under the MIT License.

WIKIPEDIA: XMLHttpRequest (XHR) represents an application programming interface embodied by a JavaScript object that facilitates the transmission of HTTP requests from a web browser application to a server entity. Its functions enable browser-based processes to dispatch queries to the server subsequent to the completion of page loading, and subsequently receive transmitted data. XMLHttpRequest forms a foundational element of the Ajax paradigm. Prior to Ajax's advent, standard mechanisms for server interaction relied primarily on navigational hyperlinks and form submissions, often necessitating a complete replacement of the currently displayed webpage.

== Provenance == The conceptual foundation underlying XMLHttpRequest was formulated in the year 2000 by the engineering team responsible for Microsoft Outlook development. This concept was subsequently integrated into the Internet Explorer 5 browser release (1999). Critically, the initial syntax did not employ the explicit identifier XMLHttpRequest. Instead, developers relied upon the instantiation syntax ActiveXObject("Msxml2.XMLHTTP") or ActiveXObject("Microsoft.XMLHTTP"). As of Internet Explorer 7 (released in 2006), universal support for the XMLHttpRequest identifier became standard across all major browser platforms. The XMLHttpRequest identifier has since solidified its position as the industry standard across all primary browsers, including Mozilla's Gecko rendering engine (since 2002), Safari version 1.2 (2004), and Opera version 8.0 (2005).

=== Standardization Trajectory === The World Wide Web Consortium (W3C) formally issued a Working Draft specification for the XMLHttpRequest object on April 5, 2006. On February 25, 2008, the W3C released the subsequent Working Draft specification, designated Level 2. The Level 2 revision introduced enhancements such as mechanisms to monitor data transfer progress, provisions for facilitating cross-site data exchange, and support for processing raw byte streams. By the conclusion of 2011, the specific features defined in the Level 2 specification were consolidated back into the original, unified specification document. At the end of 2012, maintenance and further evolution of the standard transitioned to the WHATWG group, which now sustains a living document utilizing Web IDL for its formal definition.

== Operational Procedures == Generally, dispatching a network query using XMLHttpRequest involves adhering to a sequence of defined programming stages.

  1. Instantiate an XMLHttpRequest object by invoking its constructor method:
  2. Invoke the "open" method to define the transmission modality (request type), specify the target resource endpoint, and determine whether the operation will proceed synchronously or asynchronously:
  3. For asynchronous operations, establish an event handler function designed to be invoked upon changes in the request's operational status:
  4. Initiate the transmission sequence by executing the "send" method:
  5. Handle state transitions within the assigned event listener. When the server successfully transmits response content, this data is, by default, aggregated within the "responseText" attribute. When the object completes processing the entire response, its state transitions to the final value of 4, known as the "done" state. Beyond these foundational stages, XMLHttpRequest offers numerous controls governing request transmission parameters and response ingestion methodology. Custom protocol headers can be appended to the request to guide server behavior, and data payloads can be routed to the server via the argument passed to the "send" call. The received data can be deserialized directly from JSON format into immediately usable JavaScript objects, or processed incrementally as data segments arrive, bypassing the need to await total text assembly. Furthermore, the ongoing request can be terminated prematurely or configured to automatically fail if completion is not achieved within a predefined time allowance.

See Also

`