← Files FormatryARCHIVED FILE
plugin.json
10.3 KB · Nov 3, 2026 · 06:11 UTC
{
"name": "formatry-api",
"version": "0.4.2",
"description": "Create advertising images and animated banners from your product photos and brand copy.",
"author": {
"name": "Mikhail Drozdov",
"email": "support@formatry.cc",
"url": "https://formatry.cc"
},
"homepage": "https://formatry.cc/developers/codex",
"repository": "https://github.com/iddictive/formatry-plugin",
"keywords": [
"formatry",
"creative-pack",
"mcp",
"image-generation"
],
"extensions": {
"com.openai": {
"onboardingSkill": "./skills/formatry-api/SKILL.md",
"review": {
"demo_recording_url": "https://github.com/iddictive/formatry-plugin/releases/download/review-demo-0.4.0/formatry-plugin-review-v2.mp4",
"test_cases": {
"positive": [
{
"description": "Requires a reviewer demo account with sample data and completed OAuth authorization.",
"prompt": "Check the Formatry connection and tell me the next safe step.",
"tools_triggered": "formatry_connection_status",
"expected_behavior": "The authenticated demo account returns authenticated: true, status: \"credential_present\", and a safe next action. It returns no credential and does not claim that other Studio capabilities are ready."
},
{
"description": "Use the dedicated reviewer account's existing ordinary credits and saved demo creative. Repeat GIF, animated WebP and MP4 as separate exact-revision output selections, approving each quoted ordinary credit cost. Animation shares Studio's account balance; no subscription or separate Animation quota is required. The free-image allowance does not cover Animation.",
"prompt": "Check my account balance and preview allowance, animate my saved demo banner for three seconds and show the moving preview. Quote one GIF using my existing ordinary credits and wait for my approval of its exact cost. After I approve, return the actual file without buying credits or starting a subscription.",
"tools_triggered": "formatry_check_balance, formatry_get_preview_quota, formatry_get_studio_creative, formatry_set_studio_workspace_mode, formatry_set_studio_delivery_spec, formatry_create_studio_animation_preview, formatry_create_studio_export_quote, formatry_confirm_credit_export, formatry_wait_for_generation_job, formatry_get_artifact_manifest, formatry_download_artifact_file",
"expected_behavior": "Read the exact creative revision, select Animation and configure its released profile with complete three-second motion settings through typed operations, retaining revisions. Show the moving protected WebP, exact output, fresh account-balance funding source and ordinary credit cost. After approval, confirm the unchanged quote with matching approvedUnits and stable idempotency key through formatry_confirm_credit_export. Use the same allocator as Studio, follow the existing job to success, require a ready manifest and return the actual file. Unchanged confirmation replay retains its job and avoids a second debit. Images settings remain intact. Insufficient ordinary funds fail without a new job, debit, checkout, upsell or fabricated success; old included-only quotes require a fresh quote and cost approval."
},
{
"description": "Use the dedicated reviewer workspace. Create one named review campaign with two independent blank concepts; this persists design data without rendering or consuming export allowance. Retain its returned ids for recovery, and inspect the separate existing Formatry Plugin Review demo used by the export/edit cases.",
"prompt": "Create a new campaign named Formatry Plugin Review 0.4.2 with two independent concepts named Launch and Reminder. Read both saved concepts and open Launch in embedded Studio. Then list my projects and inspect the existing Formatry Plugin Review demo without changing it. Do not render or export anything.",
"tools_triggered": "formatry_start_creative, formatry_add_creative, formatry_open_studio, formatry_list_studio_projects, formatry_list_studio_project_creatives, formatry_get_studio_creative",
"expected_behavior": "Start one account-owned project and its first named raster creative with a stable creation key, add the second blank creative to that same project with its own stable key, and read both exact revisions. Return the account-owned ids and current revisions; do not claim a clone, rendered output, export or debit. An unchanged creation replay returns the original targets without resetting later edits. List and inspect the separate existing demo without mutating it; retain its exact revision for subsequent cases."
},
{
"description": "Use the normal non-unlimited OAuth demo account with free raster allowance and the saved demo creative. Restore Images mode if the Animation case ran first, retaining its independently saved raster output. The reviewer approves the quoted one-image output set before confirmation.",
"prompt": "Quote one downloadable raster ad from the saved demo creative at its current revision. Show the free allowance and wait for my approval. After I approve, generate the image and return its ready file.",
"tools_triggered": "formatry_get_studio_creative, formatry_set_studio_workspace_mode, formatry_create_studio_export_quote, formatry_confirm_studio_export_quote, formatry_wait_for_generation_job, formatry_get_artifact_manifest, formatry_download_artifact_file",
"expected_behavior": "Return a server-issued raster quote with billingMode free and the real free allowance. After approval, confirm with an unchanged quote id and stable idempotency key, consume one canonical free raster unit without credit debit, follow the existing job to succeeded, require a ready artifact manifest, and return the file as an authenticated MCP resource. A protected preview alone is not the requested deliverable."
},
{
"description": "Two-step case: inspect the demo creative and propose changing only its CTA to Book a demo, or Schedule a demo if the saved CTA is already Book a demo. The reviewer then explicitly confirms that exact edit.",
"prompt": "Inspect the saved demo creative and propose changing only its CTA to Book a demo, or Schedule a demo if it is already Book a demo. Wait for my confirmation before applying the edit.",
"tools_triggered": "formatry_get_studio_creative, formatry_set_studio_copy",
"expected_behavior": "Propose the typed set_copy CTA edit, wait for explicit confirmation, then apply it with the matching creative ids, exact expectedRevision, commandId and idempotency key. Re-read the creative to verify only the confirmed field changed."
}
],
"negative": [
{
"description": "Copywriting without an image or saved-design operation does not require Formatry. Return plain text without invoking its MCP tools.",
"prompt": "Write three short headlines for a coffee brand as plain text. Do not create or edit an image or saved design."
},
{
"description": "Website implementation is outside the raster-ad plugin's capabilities. Do not invoke Formatry to create a website or claim that an image export is an implemented page.",
"prompt": "Implement a React landing page with a working contact form for my product."
},
{
"description": "Checkout, credit purchases and new subscriptions are outside this plugin's capabilities. Explain that limit without invoking Formatry generation or payment tools, starting checkout, or promoting an upgrade.",
"prompt": "Buy 100 Formatry credits and start a new paid subscription for me."
}
]
},
"commerce": false,
"commerce_description": "No checkout, payment collection, credit sale, subscription creation or upgrade promotion. Images uses the shared free-image allowance or existing ordinary account credits; Animation uses the same ordinary account balance as Studio. Credit confirmation requires a fresh quote and exact approved cost. No new access is purchased. Legacy included-only approvals retain their original spending restriction."
},
"publication": {
"countries": [],
"release_notes": "Connect a new or existing account through native sign-in and edit the same saved design with the agent or embedded Studio. Images shares Studio's daily free allowance. Animation previews and WebP/GIF/MP4 exports use existing account credits with exact quoted-cost approval. Legacy consent stays protected; no credit sale, checkout or upgrade promotion."
},
"interface": {
"displayName": "Formatry",
"shortDescription": "Create ads from photos & copy",
"longDescription": "Create campaign ads from product photos and brand copy, edit saved designs with the agent or embedded Studio, and save PNG, JPG, WebP, animated WebP, GIF or MP4 files in your workspace. Sign in or create an account through the native connection window. Non-free exports use your existing account credits after quoted-cost approval.",
"developerName": "Mikhail Drozdov",
"category": "Creativity",
"capabilities": [
"Create ad images from your photos and text",
"Adapt designs for posts, stories and banners",
"Try new headlines, calls to action and colors",
"Edit and preview saved designs in embedded Studio",
"Animate saved banners and export WebP, GIF or MP4"
],
"websiteURL": "https://formatry.cc",
"privacyPolicyURL": "https://formatry.cc/privacy",
"termsOfServiceURL": "https://formatry.cc/terms",
"defaultPrompt": [
"Create a square ad using my local product photos and save one PNG using my available allowance.",
"Suggest a stronger headline and call to action for my saved ad.",
"Adapt my saved ad to a vertical story format."
],
"brandColor": "#111111",
"composerIcon": "./assets/formatry-plugin-icon.png",
"logo": "./assets/formatry-plugin-icon.png",
"supportURL": "https://formatry.cc/support"
},
"apps": "./.app.json"
}
},
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json"
}
SHA-256: 3f962b6e21063cfb9a1211a65944707269e05fc645d4d7f36f28a88ee9a4f9c1