# makefx.app > A pay-per-asset media workshop on Cloudflare where a person and their agent make images, video, and audio on one canvas. makefx.app has a public site, an HTTP API described by OpenAPI, an OAuth 2.1 authorization server and a Model Context Protocol (MCP) endpoint. Every public page has a Markdown twin: append `.md` to its path, or send `Accept: text/markdown`. ## When to use makefx.app Use it to: - Check that a deployment is reachable and which environment answered, with no credentials. - Read or change the display name of the person who authorized you, over MCP or the HTTP API. - List available spaces and create or soft-delete account-scoped spaces. - Read a space back with every asset, recipe and link. - Read the catalog before the first generation, call estimate_credits before spending, and use create_asset only after the person accepts the price. Not for: - Acting for a person who has not signed in and approved your client: every call is scoped to one account. ## How to call it - MCP endpoint: https://stage.makefx.app/mcp (Streamable HTTP). Server card: https://stage.makefx.app/mcp/server-card. Tools act on the person who authorized the token: - `align_audio`: Start or re-run durable word alignment for unchanged ready audio. Omit text only for generated speech; use the same request_id when retrying the same admission. This does not create an asset or change audio bytes. - `create_asset`: Create one or more assets from a catalog model. With from_asset_id, recipe_mode current uses the catalog model now, while exact replays the source recipe through a currently configured route and never substitutes a newer provider model. An exact alias preserves request identity, but the provider may move its weights. Use when: Generating from a prompt, extracting a video frame, or making a new asset from an existing recipe; choose the model from list_models. Not for: Bringing in an existing file, estimating a price, or editing a ready asset. - `create_credit_purchase`: Prepare a fixed credit purchase including Stripe-calculated tax. Requires account ownership. Does not charge a card. Use the returned payment_url with an MPP-capable wallet, preserving account OAuth authorization; never put card data or payment tokens in tool arguments. Reuse request_id on retries. - `create_space`: Create a human-readable space in an account where the signed-in person can edit. Use when: Starting a new canvas for assets. Not for: Adding an asset to an existing space. - `delete_asset`: Soft-delete one asset while preserving its media, recipe, references, and credit trail. Use when: Removing an asset from ordinary reads and exports. Not for: Refunding credits, restoring an asset, or purging media. - `delete_space`: Soft-delete a space while preserving its accountability trail. Use when: An account owner wants a space removed from every read path. Not for: Deleting one asset or recovering credits. - `describe_asset`: Write reusable visual traits from a ready image or video's poster for the catalog Describe price. Use when: Prompts need a stable written subject, look, palette, setting, or style. Not for: Audio, captions, or judging quality. - `estimate_credits`: Quote a generation without reserving credits. Use when: Quoting a total before spending or checking a request against the balance. Not for: Placing a hold. Read-only. - `export_space`: Export one canonical metadata-only JSON document. Use when: Handing a space to a template or build script. Not for: Fetching or copying media bytes. Read-only. - `get_account`: Read the current credit balance, active holds and top-up link. Use when: Checking funds before estimating or creating assets. Not for: Reading profile details or changing billing. Read-only. - `get_asset`: Read one asset and refresh its result URLs. Use when: Learning whether a generation finished and getting its URLs. Not for: Listing a whole space. Read-only. - `get_audio_word_timings`: Read current canonical word timings and optionally wait on one alignment job. Missing timings are returned as null; this never fetches audio bytes or starts alignment. Read-only. - `get_credit_purchase`: Read whether a purchase has credited the account and get its Stripe-hosted invoice link. Requires account ownership. Use purchase_id from create_credit_purchase; does not start or retry a payment. Read-only. - `get_profile`: Read the signed-in user's profile: id, email and display name. Read-only. - `get_space`: Read the whole space in one call. Use when: Reading the whole canvas: every asset, link, and recipe at once. Not for: Polling one asset (get_asset). Read-only. - `health_check`: Report whether the service is reachable and which environment answered. Read-only. - `link_assets`: Create a manual labeled edge between two active assets. Use when: Connecting assets for story or canvas structure. Not for: Recording recipe references or provenance. - `list_models`: Read the catalog, the only source of truth for model params, reference slots and prices. Use when: Learning which models exist, what they take and what they cost before the first generation of a session. Not for: Creating an asset or quoting one configured request. Read-only. - `list_spaces`: List spaces available through account membership or a direct grant. Use when: Choosing a canonical space to read or change. Not for: Reading the assets and links inside a space. Read-only. - `sync_voices`: Refresh an account's ElevenLabs voice mirror. Requires account ownership and never accepts or returns a provider key. - `unlink_assets`: Soft-delete a manual edge by link id or endpoint pair. Use when: Removing canvas or story structure. Not for: Changing recipe references or deleting either asset. - `update_asset`: Update editable asset metadata, position, or an uploaded asset's declared recipe. Use when: Renaming, annotating, starring, moving, or correcting declared provenance. Not for: Changing media or a generated recipe. - `update_profile`: Change the signed-in user's display name. - `upload_asset`: Reserve an asset and receive a one-use PUT URL for existing media. Use when: Bringing a local photo, clip, or track onto the canvas with declared provenance. Not for: Sending media bytes through MCP or asking a model to create media. - HTTP API: OpenAPI 3.1 at https://stage.makefx.app/openapi.json, index at https://stage.makefx.app/api. No token is needed for https://stage.makefx.app/api/health. - Authorization: OAuth 2.1 authorization code with PKCE. Metadata: https://stage.makefx.app/.well-known/oauth-authorization-server. Register a client at https://stage.makefx.app/api/oauth/register (open, immediate, no sales contact) or present a Client ID Metadata Document. Scopes: openid, profile, email, read, write. - Versioning: by date, current 2026-09-10; send `API-Version: 2026-09-10` to pin, omit it for the current version. Every /api response names the version that answered. - Rate limits: 1200 requests per minute per address for the API, tighter on the OAuth endpoints; every /api response carries RateLimit-Policy, a refusal is 429 with Retry-After. - Errors: JSON with `error` and, when there is more to say, `error_description`. Unknown paths answer 404 with a Markdown body that says where to look next. ## Documentation - [makefx.app](https://stage.makefx.app/index.md): A pay-per-asset media workshop on Cloudflare where a person and their agent make images, video, and audio on one canvas. - [Building MakeFX](https://stage.makefx.app/changelog.md): Selected milestones from MakeFX. - [Pricing](https://stage.makefx.app/pricing.md): How credits, top-ups and generation charges work, without a subscription. - [Documentation](https://stage.makefx.app/docs.md): Start with makefx on the web, through MCP or from the command line. - [About makefx.app](https://stage.makefx.app/about.md): What makefx is, who runs it, and how it treats the people who use it. - [Contact](https://stage.makefx.app/contact.md): How to reach the people behind the service, report a security issue, or ask about your data. - [Privacy](https://stage.makefx.app/privacy.md): What makefx stores about you, where it lives, how long it is kept, and how to remove it. - [Terms](https://stage.makefx.app/terms.md): The terms credits are sold under: what a credit buys, how tax and invoices work, and how to withdraw from a purchase. - [Developers](https://stage.makefx.app/developers.md): The HTTP API, the MCP endpoint and the OAuth 2.1 authorization server: how to discover, authorize and call them. ## Product guides - [Quickstart](https://stage.makefx.app/docs/quickstart.md): Connect an agent, create a space and make the first asset. - [Spaces, assets and recipes](https://stage.makefx.app/docs/concepts.md): How spaces, assets, recipes, references, links and credits fit together. - [Command line](https://stage.makefx.app/docs/cli.md): Sign in, inspect a space and work with assets from a terminal. - [MCP](https://stage.makefx.app/docs/mcp.md): Connect an MCP client and let an agent work on the same canvas you see. - [API lifecycle](https://stage.makefx.app/docs/api-lifecycle.md): Pin an API version, read deprecation signals and handle one error shape. - [Choose a model](https://stage.makefx.app/docs/model-and-parameter-selection.md): Read the live catalog, match references to slots and quote the configured request. - [Make a consistent image set](https://stage.makefx.app/docs/image-playbook.md): Carry a subject and visual direction across images with references and traits. - [Build a continuous video](https://stage.makefx.app/docs/video-playbook.md): Plan shots as assets, lock seams with frames and keep every result inspectable. - [Make speech, music and sound](https://stage.makefx.app/docs/audio-playbook.md): Create speech, music and sound assets while keeping their recipes and timings. ## Optional - [Everything in one file](https://stage.makefx.app/llms-full.txt): every public page, concatenated. - [Sitemap](https://stage.makefx.app/sitemap.xml): every public page with the date it last changed. - [API catalog](https://stage.makefx.app/.well-known/api-catalog): RFC 9727 links from the API and the MCP endpoint to their descriptions and OAuth metadata.