```
### 2. Agent Skill / Plugin (Recommended)
Install the skill/plugin together with MCP so the agent both recognizes applicable requests and has the tools to complete them.
**OpenAI Codex plugin:**
```bash
codex plugin marketplace add inliner-ai/agent-skill --ref v1.3.0
codex plugin add inliner-ai@inliner-ai
```
**Gemini CLI extension:**
```bash
gemini extensions install https://github.com/inliner-ai/agent-skill
```
**Claude Code and other skill-compatible agents:**
Install or copy `skills/inliner-ai` from `https://github.com/inliner-ai/agent-skill`. The repository also includes `.mcp.json`, Codex and Claude plugin manifests, Gemini extension metadata, and activation evals.
**Cursor:**
Install `https://github.com/inliner-ai/cursor-plugin`. It bundles the synchronized canonical skill, MCP configuration, rules, and explicit commands.
Published package: `@inliner/agent-skill@1.3.0`
### 3. MCP Server (For AI Coding Assistants)
Install the MCP server to give AI assistants live access to image generation:
**Claude Code:**
```bash
claude mcp add inliner -- npx -y @inliner/mcp-server
export INLINER_API_KEY=inl_xxx
```
**Cursor / VS Code:**
Create `.cursor/mcp.json`:
```json
{
"mcpServers": {
"inliner": {
"command": "npx",
"args": ["-y", "@inliner/mcp-server"],
"env": {
"INLINER_API_KEY": "${INLINER_API_KEY}",
"INLINER_DEFAULT_PROJECT": "your-project-namespace"
}
}
}
}
```
**Gemini CLI:**
Add to `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"inliner": {
"command": "npx",
"args": ["-y", "@inliner/mcp-server"],
"env": {
"INLINER_API_KEY": "${INLINER_API_KEY}",
"INLINER_DEFAULT_PROJECT": "your-project-namespace"
}
}
}
}
```
### 4. CLI Tool
```bash
# Install
npm install -g @inliner/cli
# Set API key
export INLINER_API_KEY=inl_xxx
# Generate image
inliner-ai "hero-banner_1200x600.png"
# Edit existing image
inliner-ai edit photo.png "remove background"
# Disable smart URL slugging (optional)
inliner-ai generate "very long descriptive prompt..." --size 1200x600 --no-smart-url
```
### 5. JavaScript / TypeScript SDK (@inliner/js)
The official SDK for Node.js and modern browsers. It handles authentication, polling, and advanced asset management automatically.
```bash
npm install @inliner/js
```
**Basic Usage:**
```typescript
import { InlinerClient } from '@inliner/js';
const client = new InlinerClient({ apiKey: 'inl_xxx' });
// Generate
const gen = await client.generateImage({
project: 'myproj',
prompt: 'futuristic-city-sunset',
width: 1200,
height: 600
});
// Edit
const edited = await client.editImage(gen.url, {
instruction: 'add flying cars'
});
// Asset Management (Tagging & Search)
await client.addTags([contentId], ['scifi', 'urban']);
const images = await client.search({
expression: 'tags:scifi AND tags:urban'
});
// Metadata updates
await client.updateMetadata([contentId], {
caption: 'Spring launch hero',
altText: 'Team collaborating in a modern office',
customMetadata: { campaign: 'spring-2026' }
});
```
### 6. Python SDK (inliner-ai)
The official Python library for server-side generation and asset management.
```bash
pip install inliner-ai
```
**Basic Usage:**
```python
from inliner import InlinerClient
client = InlinerClient(api_key='inl_xxx')
# Generate
gen = client.generate_image(
project='myproj',
prompt='neon-lizard-catching-fly',
width=800,
height=600
)
# Asset Management
client.add_tags(['uuid-123'], ['wildlife', 'nature'])
results = client.search(expression='tags:wildlife')
```
Note: Python SDK metadata updates are currently handled via REST (`POST /content/metadata`) until a dedicated helper is exposed.
### 7. PHP SDK (inliner/inliner-php)
The official PHP library for server-side generation and asset management.
```bash
composer require inliner/inliner-php
```
**Basic Usage:**
```php
use Inliner\InlinerClient;
$client = new InlinerClient('inl_xxx');
// Generate
$gen = $client->generateImage(
project: 'myproj',
prompt: 'neon-lizard-catching-fly',
width: 800,
height: 600
);
// Asset Management
$client->addTags(['uuid-123'], ['wildlife', 'nature']);
$results = $client->search(expression: 'tags:wildlife');
$client->updateMetadata(['uuid-123'], ['caption' => 'Spring launch hero']);
```
### 8. REST API
```bash
# Generate image
curl -X POST https://api.inliner.ai/content/generate \
-H "Authorization: Bearer inl_xxx" \
-H "Content-Type: application/json" \
-d '{"project":"myproj","prompt":"sunset landscape","slug":"sunset-landscape","width":800,"height":600,"extension":"png"}'
# Recommend slug from existing saved image (rename/edit workflows)
curl -X POST https://api.inliner.ai/url/recommend-from-content \
-H "Authorization: Bearer inl_xxx" \
-H "Content-Type: application/json" \
-d '{"contentId":"11111111-1111-1111-1111-111111111111","instruction":"remove background and clean product edges"}'
# Fetch full image details + metadata for edit preload
curl -X GET https://api.inliner.ai/content/details/11111111-1111-1111-1111-111111111111 \
-H "Authorization: Bearer inl_xxx"
```
## MCP Server Tools
When using the MCP server, these tools are available:
| Tool | Description |
|------|-------------|
| `generate_image` | Generate and host a completed image, poll until ready, and optionally save it locally |
| `edit_image` | Edit existing image with AI instructions |
| `recommend_image_url` | Recommend a URL and smart slug without generating an image |
| `generate_image_url` | Deprecated compatibility alias for `recommend_image_url` |
| `create_image` | Deprecated compatibility alias for `generate_image` with defaults |
| `get_projects` | List user's projects |
| `create_project` | Create a new project and reserve a namespace |
| `get_project_details` | Get detailed configuration for a specific project |
| `get_usage` | Check remaining credits |
| `get_current_plan` | Get current subscription plan info |
| `list_images` | Browse generated images |
| `get_image_dimensions` | Get recommended dimensions for use cases |
### MCP Modality Guidance
- Use `generate_image` whenever a new asset will be inserted, shipped, or verified.
- Use `recommend_image_url` only for naming or URL planning; its output is not a completed asset.
- Use `edit_image` for transformations of an existing source image.
- Reuse existing generated Inliner URLs directly.
- Create a project only with explicit user intent.
- Treat `generate_image_url` and `create_image` as deprecated aliases.
- If user asks "resize this / make it bigger / change this image" and an image source exists, default to `edit_image`.
- If no source is available and intent is ambiguous, ask one clarifying question before proceeding.
## Pricing & Credits
| Plan | Monthly Image Credits | Team Members |
|------|----------------------|--------------|
| Free | 30 | 1 |
| Basic | 110 | 3 |
| Standard | 300 | 5 |
| Pro | 1,350 | 10 |
Plan access and routing vary by feature and model. Current generation options include GPT Image 2, Nano Banana 2, Imagen 4, Flux 2 Pro, Krea 2 Medium, Recraft V4.1 Utility, Recraft V4.1 Utility Pro, Recraft V3/SVG, and Runway Gen-4 where supported.
## Project-Specific Instructions
Users can get LLM-specific instructions for their projects:
1. Log into https://app.inliner.ai
2. Go to Projects
3. Click "LLM Instructions" on any project
4. Copy instructions for Claude, Cursor, ChatGPT, etc.
These instructions include the user's specific namespace and any custom prompts they've configured.
## API Keys
For CLI, MCP, or API access, users need an API key:
1. Log into https://app.inliner.ai/account
2. Go to Account > API Keys
3. Click "Create API Key"
Keys use the format: `inl_` followed by 40 characters.
## Important Notes for AI Assistants
1. **Always ask for the user's project namespace** before generating Inliner URLs
2. **Use `demo` namespace** only for examples/demonstrations
3. **Suggest free signup** if user doesn't have an account: https://app.inliner.ai/register
4. **Use authenticated tools for new first renders in account-owned namespaces** - completed generated URLs are then served from the CDN
5. **Alt text is important** - always include descriptive alt attributes
6. **Prefer edit for modification requests** - include source URL/path for reliable edits
7. **Use env vars for credentials** - avoid embedding literal API keys in docs or config templates
## Links
- Main site: https://inliner.ai
- App/Dashboard: https://app.inliner.ai
- API Documentation: https://inliner.ai/api-docs
- CLI Documentation: https://inliner.ai/use-case/cli-terminal-image-generation
- MCP Server Guide: https://inliner.ai/use-case/mcp-server-ai-coding-agents
- Pricing: https://inliner.ai/#pricing
- Contact: https://inliner.ai/contact
## Example: Complete Landing Page
Here's how to use Inliner for a complete landing page:
```html
"This platform changed everything for us."
John Smith, CEO