Glif enables AI agents to create images, videos, and audio using multiple generative AI models through a single creative workspace. Compose multi-step media projects from natural-language prompts, edit existing assets, generate variations, create custom reusable tools, and manage projects and generation jobs.
Try asking
Encrypted at rest, isolated from the model
Resolved from an AES-256-GCM vault at the moment of the call and attached to the request — the model never sees the secrets.
Read project state, active job, recent messages, and generated media for a Glif project.
Select existing images from an owned Glif project using a thumbnail form. Returns authorized image asset IDs, not a generation job. Selection never spends credits. Unsupported hosts receive an image list instead. A later reviewed compose_project request is separate.
Browse recent Glif projects owned by the authenticated user without generating media.
Lists the authenticated user's personal Glif skills as names and descriptions. Does not expose global Glif skills. To run one, name it in a `compose_project` prompt rather than fetching and copying its instructions.
Reads one of the authenticated user's personal Glif skills, including its instructions. Does not expose global Glif skills. To run a skill, name it in a `compose_project` prompt, e.g. "use my `alien-vistas` skill". Activation loads the instructions automatically, so copying them into the prompt is redundant.
Render existing Glif media in the interactive project viewer when the user asks to see, revisit, or pull up media that was already generated (e.g. "show me that capybara again", "open my last image"). It applies to completed or saved output, not to `working` polls, and generates nothing (`compose_project` does that). Don't call it right after a job finishes: the `compose_project` card already shows that media. Pass `project_id` to show a project's media, optionally narrowed to specific `asset_ids`. Clients that render media inline show it in the viewer panel, making pasted URLs redundant there; in clients that don't (e.g. CLI hosts), sharing the URLs is how the user gets the media (a sandboxed agent may need its CSP / allowed-domains settings adjusted to load them).
Create or continue a durable Glif project from natural language. Glif's server-side agent chooses models, tools, and multi-step media workflows. Optional `intelligence` picks the agent: lite, smart, or genius. Without a tier, new projects use your preferred model and existing ones keep theirs. Use `asset_ids` to reuse owned image, video or audio assets from media results or uploads; use `attachments` for external URLs or signed upload URLs. A request that iterates on, refines, animates, or otherwise references anything Glif previously made in this conversation needs the `project_id` from that earlier result — omitting it starts a blank project with no memory of prior media, so omitting `project_id` suits genuinely new, unrelated work. Glif handles batches itself: a series (multiple characters, scenes, variations) works best as one call describing the whole series, kept in one project. Returns immediately with a `jobId`. Generation often finishes within a minute but can take longer. Share the project link. Follow `get_job_status` until completion and report the result or failure. Saved public text and media are available while working. Media URLs work as plain links; Markdown image embeds of them show as broken placeholders in some hosts. Pass each returned `progressCursor` unchanged as `progress_cursor` on the next poll. End early only if the user explicitly requested background work. If polling cannot continue, say so and share the project link; do not promise an automatic chat update. `get_job_status` waits up to 15 seconds by default; `wait_seconds: 0` returns at once. Results include media URLs and `structuredContent`. Never automatically start another paid job: each `compose_project` call costs credits.
Check a Glif project job started by `compose_project`, using its `job_id`. Wait up to 15 seconds for new saved public text, generated media or a status change. Pass the previous `progressCursor` as `progress_cursor` to wait for a change instead of receiving the same output immediately. Without a cursor, already available text or media returns promptly. The optional `wait_seconds` value (0 to 30) overrides the wait; 0 returns at once. Working responses include saved public messages and media links, not token streaming. When nothing changed since the passed `progress_cursor`, the text says so and repeats no output. Finished responses return the full result. Keep checking while working, then report the completed result or failure. For input_required, ask for the required input instead. End early only for an explicit background request. Do not assume this chat will receive automatic updates. Job status records expire ~30 minutes after the job finishes. Saved results remain available through `get_project` when a client cannot keep polling. Do not call `compose_project` again while this job is working. The same project refuses it, and a new project starts a separate billable job that does not speed up this one.
Return the authenticated identity, the credential label (API key name or connected OAuth app name), current subscription/plan, available credit balance, credits spent over the last 24h / 7d / 30d, the typical credit cost of one image, video or audio output, and the agent tier `compose_project` uses when no `intelligence` is given. Cheap — no agent loop, no generation.
Default intelligence for new projects when no intelligence is supplied. This is your existing Glif account preference, shared with the Glif website. Existing projects keep their chosen model unless explicitly changed. Changing this setting does not start generation or spend credits.
Update only submitted settings. Default intelligence for new projects when no intelligence is supplied. This is your existing Glif account preference, shared with the Glif website. Existing projects keep their chosen model unless explicitly changed. Changing this setting does not start generation or spend credits.
Upload an image, video, or audio file for `compose_project`. Inline uploads return an `assetId` for `compose_project.asset_ids`; signed uploads return a file URL for `compose_project.attachments`. Documents use the signed local-file mode. Supported inputs: - `file` accepts an image, video, or audio attachment resolved by the host app. Supported hosts, including ChatGPT, can populate this field with a short-lived download URL. - `url` accepts a public image, video, or audio URL. Remote documents are not yet supported. - `filename` and/or `kind`, without `url` or `base64`, returns a signed curl PUT command as `command` in the result, with a `<YOUR_FILE_PATH>` placeholder, and an upfront stable file URL for a local file, including a document. This mode needs local shell and network access; Glif verifies the uploaded bytes and creates the owned asset server-side. - `base64` with `filename` accepts a small local image, video, or audio file when no shell is available. Glif rejects decoded files above 1 MiB, and host tool-call limits may be lower.
One endpoint, the same key, whichever client you use.
~/Library/Application Support/Claude/claude_desktop_config.json (Mac) · %APPDATA%\Claude\claude_desktop_config.json (Windows)
Replace API_KEY with your own key.
Already have an "mcpServers" section in your config? Just add the server entry inside it.
Discovery, routing, credentials, tool scoping and execution logs all happen at the gateway→connections stay ACTIVE with no work from you
Glif MCP runs through a gateway that holds the credentials, scopes the access and records every call.
Managed auth, hosted MCP servers, and every Glif MCP tool your agent needs.
Free to start.