AI image + video generation for agents: --flag prompt DSL, async generate/poll, x402 pay-per-use.
| Endpoint | https://mcp.maginary.ai/mcp (streamable-http) |
|---|---|
| Registry version | 0.3.18 |
| Now | 16 tools · grade D (64) · pin ts_84f4f9aa74d3830cec1e1687454cb61e · protocol 2025-06-18 |
| First / last listed | 2026-10-27 07:55 UTC / 2026-10-27 07:55 UTC |
| Grade over time | 2026-10-27: D (64), 16 tools |
Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.
Tools: list_parameters search_parameters get_parameter generate get_generation wait_for_generation upload_image execute_action create_account create_wallet_account check_account_status manage_api_key configure_api_key get_products checkout get_balance
list_parameters | List Maginary prompt-DSL parameters.
Args:
category: Restrict to one category (e.g. ``composition``, ``video``,
``model``, ``outpaint``). Call with no filters once — the response's
``categories`` / ``statuses`` maps are the full taxonomy.
status: Restrict to one status (``live``, ``mostly-dead``,
``unimplemented``).
include_reserved: params: category, status, include_reserved |
search_parameters | Text-search over parameter names, aliases, descriptions, values, examples.
Args:
query: Substring match, case-insensitive.
category: Optional single-category restriction.
include_reserved: Whether to include ``unimplemented`` parameters.
Returns:
Dict with ``count``, ``source`` (``live`` vs. ``bundled-snapshot``),
and ``parameters`` (ordered as the params: query*, category, include_reserved |
get_parameter | Return the full record for a single parameter (canonical name or alias).
Args:
name: Parameter name with or without leading ``--`` (e.g. ``ar``,
``--ar``, ``aspect``). Case-insensitive.
Returns:
The parameter dict. Not-found is an ``isError`` result — surface it
rather than fabricating a param.
params: name* |
generate | Kick off a generation via POST /api/gens/.
Args:
prompt: The user's words, passed through as-is. Do NOT add flags the
user did not ask for — no ``--ar``, no ``--flagship``, no model
flags. Every extra flag costs credits; adding them unrequested is
wrong. Standard quality is the default and is cheap; ``--flagship``
is ~4× more expensive a params: prompt*, callback_url |
get_generation | Fetch a generation by UUID (GET /api/gens/{uuid}/).
Args:
uuid: The UUID returned by ``generate``.
Returns:
The full generation record. If terminal, ``image_urls[]`` holds the
finished outputs and ``processing_result.slots[]`` the per-slot detail.
NOTE: a generation that failed server-side is a SUCCESSFUL tool call
returning ``processing_state: "fa params: uuid* |
wait_for_generation | Poll ``get_generation`` on a backoff until it reaches done / failed.
Args:
uuid: The UUID returned by ``generate``.
timeout_s: Return after this many seconds even if still running.
Default 45 stays under the 60 s per-call limit most MCP clients
enforce; a ``timeout`` result just means "call again". Only raise
it (e.g. for video) on clients y params: uuid*, timeout_s |
upload_image | Upload a local image and get a CDN URL for img2img or ``--sref``.
Only available on local (stdio) connections. On hosted/remote
connections, place an existing image URL directly in the prompt.
Place the returned ``url`` in a ``generate`` prompt:
``generate("https://cdn.maginary.ai/…/photo.webp reimagine as oil painting")``
Args:
file_path: Path to an image file on d params: file_path*, filename |
execute_action | Run a follow-up action on a completed generation's image.
After ``generate`` → ``wait_for_generation``, the response's
``processing_result.available_actions`` lists what's possible per slot.
Call this tool with one of those action types.
Args:
generation_uuid: UUID of the parent generation (from ``generate``).
action_type: One of the values from ``available_action params: generation_uuid*, action_type*, parent_image_index, prompt, callback_url |
create_account | Create a new Maginary account for the given email address.
Returns the auto-generated password — display it to the user ONCE so they
can save it. A verification email is sent; the user must click the link
before the account can generate images.
After verification, use ``manage_api_key(action='create')`` with
``email`` + ``password`` to get an API key, then ``configure_api_key params: email* |
create_wallet_account | Create (or access) a Maginary account using a wallet signature.
Sign the message ``Maginary: authenticate <address> at <timestamp>.
This does not move funds.`` with EIP-191 ``personal_sign`` and pass all
three values. On success, an API key is returned immediately — no email
verification needed.
Use this when you have a wallet but no email. The returned ``api_key``
should params: address*, signature*, timestamp* |
check_account_status | Check account verification status, credit balance, and API key count.
Use this after ``create_account`` to poll whether the user has clicked the
verification link. Pass ``email`` + ``password`` (from ``create_account``)
for Basic auth, or omit both to use the configured API key.
Args:
email: Account email (for Basic auth).
password: Account password (for Basic aut params: email, password |
manage_api_key | Create, list, or revoke Maginary API keys (up to 10 per account).
Auth: pass ``email`` + ``password`` for Basic auth (onboarding), or omit
both to use the configured API key (normal operation).
Args:
action: One of ``create``, ``list``, ``revoke``.
name: Key name (required for ``create``).
key_prefix: 8-char prefix of the key to revoke (required for ``revoke`` params: action*, name, key_prefix, email, password |
configure_api_key | Activate an API key. Local (stdio) servers persist it; hosted does not.
Call this after ``manage_api_key(action='create')`` returns a ``raw_key``.
On a local server the key is saved to ``~/.config/maginary/api_key``
(chmod 600) and survives restarts. On the hosted server
(mcp.maginary.ai) nothing can be stored — auth is per-request: the
response will say ``persisted: false`` a params: api_key* |
get_products | List available Maginary products/plans with pricing.
No authentication required. Use this to present purchase options to the
user. The ``novice_pack`` ($10, 150 credits) is the recommended starting
point.
Returns:
Dict with ``count`` and ``products`` — each product carries ``id``,
``short_name``, ``title``, ``description``, ``price_cents``,
``credits``, `` params: none |
checkout | Create a Stripe checkout session for purchasing a product.
Returns a ``checkout_url`` — the user must open it in a browser to
complete payment. After payment, credits are provisioned automatically
via webhook. **Present the URL exactly as returned, including the
``#fragment`` — do not truncate, reformat, or strip any part of it.**
If the agent has a USDC wallet, skip this ent params: product_id*, email, password |
get_balance | Check remaining credits and uploads for the authenticated account.
Args:
email: Account email (for Basic auth).
password: Account password (for Basic auth).
Returns:
Dict with ``credits_remaining`` and ``uploads_remaining``.
params: email, password |
Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.