Skip to content

Adapt Creative Api

adapt_creative_api — mvp.adapt_creative_api

Cluster: Creative & Media | Type: component | MCP Tools: 44

Overview

Unified gateway to external creative design and image-generation APIs — Figma, Canva, Stability AI, and Replicate — behind a single consistent interface. Discover available providers, check authentication, generate or edit images, export Figma designs, manage Canva documents, run Replicate models, and persist results to a SQLite store. All provider calls are gated on API key presence and log clearly when credentials are missing, making the block safe to include in pipelines before credentials are configured.

When to use:

  • Generating images via Stability AI or Replicate from an agent or solver step
  • Fetching and exporting assets from a Figma file as part of a design pipeline
  • Discovering which creative providers are configured and authenticated at runtime
  • Caching and retrieving previously generated creative results by ID

Example:

from mvp.adapt_creative_api import AdaptCreativeAPIBlock, CreativeAPIInput

block = AdaptCreativeAPIBlock(name="creative_api")
result = block.infer(CreativeAPIInput(
    op="stability_generate",
    provider="stability",
    prompt="a watercolour painting of a rainy Tokyo street",
    width=512,
    height=512,
    style="anime",
))
# result.value.image_base64 → generated image; result.value.result_id → saved result id

Works well with: adapt_comfyui, adapt_image, adapt_ui_design

Launch Readiness

Status: needs live credential smoke test before first-user or paid-customer use.

The component has unit coverage for schema validation, missing-key behavior, paid-provider consent, MCP forwarding, Figma team_id forwarding, Canva request shapes, and SQLite persistence. It still depends on live third-party provider auth, token scopes, rate limits, and async export behavior, so mock-backed tests are not enough to mark it production-ready.

Run this smoke test with real development or sandbox credentials before launch:

  1. discover_all returns the expected configured providers.
  2. generate_image(..., allow_paid_api=True) completes through Stability AI or Replicate.
  3. figma_list_projects(team_id=...) returns projects for a real Figma team.
  4. canva_create creates a design and returns an edit or view URL.
  5. canva_export creates an export job and returns a job ID or download URL.

Treat failures here as launch blockers for creative-provider workflows, but not for the rest of G6's MCP install path.

Public API

AdaptCreativeAPIBlock(AIBlock[CreativeAPIInput, CreativeAPIOutput, dict])

Creative API adapter — dispatches to Figma, Canva, Stability AI, Replicate.

Field Type Default
name str 'adapt_creative_api'
state dict field(default_factory=dict)
resource_bounds ResourceBounds \| None None
usage ResourceUsage field(default_factory=ResourceUsage)

Methods:

infer(data: CreativeAPIInput) -> Result[CreativeAPIOutput]

CreativeAPIInput(BaseModel)

Input to AdaptCreativeAPIBlock.

Field Type Default
op Literal['discover_all', 'check_auth', 'provider_info', 'generate_image', 'edit_image', 'list_styles', 'figma_get_file', 'figma_export', 'figma_list_projects', 'canva_create', 'canva_list', 'canva_export', 'stability_generate', 'stability_upscale', 'stability_edit', 'replicate_run', 'replicate_list', 'replicate_get', 'envato_search', 'envato_get_item', 'envato_popular', 'envato_account_info', 'envato_collections', 'envato_list_purchases', 'envato_download_purchased', 'envato_list_categories', 'recommend_provider', 'list_patterns', 'discover_capabilities', 'backend_native_op', 'provider_native_op'] 'discover_all'
provider str ''
prompt str ''
image_base64 str ''
width int 0
height int 0
style str ''
model str ''
file_key str ''
team_id str ''
node_ids list[str] []
design_id str ''
format str 'png'
result_id str ''
limit int 20
envato_site str ''
envato_item_id str ''
envato_category str ''
envato_purchase_code str ''
envato_term str ''
envato_filter str ''
envato_page int 1
envato_page_size int 20
brief str ''
task str ''
context str ''
allow_paid_api bool False
native_operation str ''
native_params dict[str, Any] Field(default_factory=dict)
request_id str ''
task_id str ''
run_id str ''

CreativeAPIOutput(BaseModel)

Output from AdaptCreativeAPIBlock.

Field Type Default
op str required
provider str ''
providers list[dict] []
image_base64 str ''
output_path str ''
result_id str ''
metadata dict {}
results list[dict] []
authenticated bool False
available_ops list[str] []
backend str ''
degraded bool False
degradation_reason str \| None None
available_with str ''
recommendation dict {}
llm_used bool False
completion_state Literal['verified', 'qualified-draft', 'blocked-escalated'] 'qualified-draft'
warning_card dict[str, Any] Field(default_factory=dict)
degradation dict[str, Any] Field(default_factory=dict)
evidence list[dict[str, Any]] Field(default_factory=list)
request_id str ''
task_id str ''
run_id str ''

AdaptCreativeAPIMCPBlock(AIBlock[MCPCreativeAPIInput, MCPCreativeAPIOutput, dict])

41-op creative API MCP block with SQLite persistence and FORMA templates.

Field Type Default
name str 'adapt_creative_api_mcp'
state dict field(default_factory=dict)
db_path str field(default_factory=lambda: os.environ.get('CREATIVE_API_DB_PATH', _DEFAULT_DB))
resource_bounds ResourceBounds field(default_factory=ResourceBounds)
usage ResourceUsage field(default_factory=ResourceUsage)

Methods:

close() -> None

Close the backing store (idempotent).

infer(data: MCPCreativeAPIInput) -> Result[MCPCreativeAPIOutput]

MCPCreativeAPIRecord(BaseModel)

A single metadata record returned from CreativeAPIStore queries.

Field Type Default
id str required
record_type str required
name str required
content str required
tags str ''
timestamp str ''
metadata dict {}

MCPCreativeAPIInput(BaseModel)

Input to AdaptCreativeAPIMCPBlock - 41 ops.

Field Type Default
op Literal['discover_all', 'check_auth', 'provider_info', 'generate_image', 'edit_image', 'list_styles', 'figma_get_file', 'figma_export', 'figma_list_projects', 'canva_create', 'canva_list', 'canva_export', 'stability_generate', 'stability_upscale', 'stability_edit', 'replicate_run', 'replicate_list', 'replicate_get', 'envato_search', 'envato_get_item', 'envato_popular', 'envato_account_info', 'envato_collections', 'envato_list_purchases', 'envato_download_purchased', 'envato_list_categories', 'forma_list_templates', 'forma_describe_template', 'forma_render_template', 'forma_template_variants', 'forma_principles', 'forma_cookbook', 'result_save', 'result_get', 'result_list', 'result_delete', 'provider_list', 'stats', 'get_info', 'recommend_provider', 'list_patterns', 'discover_capabilities', 'backend_native_op', 'provider_native_op'] required
provider str ''
prompt str ''
image_base64 str ''
width int 0
height int 0
style str ''
model str ''
file_key str ''
team_id str ''
node_ids list[str] []
design_id str ''
format str 'png'
result_id str ''
limit int 20
envato_site str ''
envato_item_id str ''
envato_category str ''
envato_purchase_code str ''
envato_term str ''
envato_filter str ''
envato_page int 1
envato_page_size int 20
category str ''
template_id str ''
target str ''
inputs_json str ''
variant_count int 3
name str ''
tags_csv str ''
notes str ''
content_json str ''
query str ''
brief str ''
task str ''
context str ''
allow_paid_api bool False
native_operation str ''
native_params dict[str, Any] {}
request_id str ''
task_id str ''
run_id str ''

MCPCreativeAPIOutput(BaseModel)

Output from AdaptCreativeAPIMCPBlock.

Field Type Default
op str required
provider str ''
providers list[dict] []
image_base64 str ''
output_path str ''
result_id str ''
metadata dict {}
results list[dict] []
authenticated bool False
available_ops list[str] []
backend str ''
found bool False
count int 0
message str ''
records list[dict] []
summary dict {}
output str ''
format str ''
target str ''
degraded bool False
degradation_reason str \| None None
available_with str ''
recommendation dict {}
llm_used bool False
completion_state str 'qualified-draft'
warning_card dict[str, Any] {}
degradation dict[str, Any] {}
evidence list[dict[str, Any]] []
request_id str ''
task_id str ''
run_id str ''

CreativeAPIStore

SQLite-backed store for the adapt_creative_api MCP sub-package.

Constructor:

Parameter Type Default
db_path str ':memory:'

Methods:

close() -> None

Close the database connection (idempotent).

save_result(name: str, provider: str, op: str, content: dict, tags: str = '', notes: str = '') -> str

Persist an API result. Returns the assigned id.

get_result(result_id: str) -> dict | None

Retrieve a saved result by id.

list_results(provider: str = '', limit: int = 50) -> list[dict]

List saved results, optionally filtered by provider.

delete_result(result_id: str) -> bool

Delete a saved result by id. Returns True if found and deleted.

register_provider(name: str, config: dict, status: str = 'available') -> str

Register or update a provider configuration.

list_providers() -> list[dict]

List all registered providers.

count_all() -> dict[str, int]

MCP Tools

Operation Source
discover_all creative_api_mcp
check_auth creative_api_mcp
provider_info creative_api_mcp
generate_image creative_api_mcp
edit_image creative_api_mcp
list_styles creative_api_mcp
figma_get_file creative_api_mcp
figma_export creative_api_mcp
figma_list_projects creative_api_mcp
canva_create creative_api_mcp
canva_list creative_api_mcp
canva_export creative_api_mcp
stability_generate creative_api_mcp
stability_upscale creative_api_mcp
stability_edit creative_api_mcp
replicate_run creative_api_mcp
replicate_list creative_api_mcp
replicate_get creative_api_mcp
envato_search creative_api_mcp
envato_get_item creative_api_mcp
envato_popular creative_api_mcp
envato_account_info creative_api_mcp
envato_collections creative_api_mcp
envato_list_purchases creative_api_mcp
envato_download_purchased creative_api_mcp
envato_list_categories creative_api_mcp
forma_list_templates creative_api_mcp
forma_describe_template creative_api_mcp
forma_render_template creative_api_mcp
forma_template_variants creative_api_mcp
forma_principles creative_api_mcp
forma_cookbook creative_api_mcp
result_save creative_api_mcp
result_get creative_api_mcp
result_list creative_api_mcp
result_delete creative_api_mcp
provider_list creative_api_mcp
stats creative_api_mcp
get_info creative_api_mcp
recommend_provider creative_api_mcp
list_patterns creative_api_mcp
discover_capabilities creative_api_mcp
backend_native_op creative_api_mcp
provider_native_op creative_api_mcp