Agents: start here
Integrating Filestack as an AI agent? Start here. These steps take you from setup to your first upload, transformation, and delivery, with links to the full reference at every stage.
1. Install the Filestack plugin
The Filestack plugin runs in Claude Code and Cursor. Both editors run the same local MCP server, skills, and slash command from one repository.
Add the Filestack marketplace, then install the plugin:
/plugin marketplace add https://github.com/filestack/filestack-claude-plugin.git
/plugin install filestack-claude-plugin@filestack-plugin
Restart Claude Code. Skills and the MCP server load at session start.
Install Filestack from the Cursor plugin marketplace. Cursor reads .cursor-plugin/plugin.json from the same repository and runs the same MCP server, skills, and slash command for the Agent.
# Plugin repository
https://github.com/filestack/filestack-claude-pluginManual install
The MCP server runs on Node.js:
git clone https://github.com/filestack/filestack-claude-plugin.git
cd filestack-claude-plugin/mcp && npm install && npm run build If your runtime does not load plugins, call the REST APIs directly and use the machine-readable docs.
2. Get credentials
The plugin runs on a built-in demo API key until FILESTACK_API_KEY is set. The demo key has limited functionality and is for building and testing only.
- If the user has a Filestack account, ask for their API key. It is in the Developer Portal. Ask for the app secret only if the task needs policy signing or signed URLs.
- If they don’t, send them to filestack.com/signup-free to create a free account.
Set the variables before starting the editor, then restart it:
export FILESTACK_API_KEY=your_api_key
export FILESTACK_APP_SECRET=your_app_secret # only needed for security tools| Variable | Required | Used by |
|---|---|---|
FILESTACK_API_KEY |
No (demo key used if unset) | All file operation and transformation tools |
FILESTACK_APP_SECRET |
Security tools only | filestack_sign_policy, filestack_generate_signed_url |
3. Handle credentials safely
- Store the app secret in a local
.envfile or the server environment. Do not print it in chat. - Confirm that version control ignores
.env. - Never put the app secret in browser or native-app code. The API key is public and appears in client code; read it from an environment variable (for example
import.meta.env.VITE_FILESTACK_API_KEY) instead of hardcoding it. - The MCP server signs policies on the local machine. The app secret is not sent to Filestack.
- When the app has security enabled, every request needs a policy and signature. Generate them on the server. Intelligence tasks need
convertin the policy’scalllist; workflows needconvertandrunWorkflow.
Reference: Security Policies.
4. Pick the tool for the job
| Task | MCP tool | Reference |
|---|---|---|
| Upload a local file or remote URL | filestack_upload |
Uploading |
| Ingest a remote URL into storage | filestack_store_url |
File API |
| Read file metadata | filestack_retrieve |
File API |
| Delete a file | filestack_delete |
File API |
| Build a transformation URL (no API call) | filestack_transform_url |
Processing API |
| Apply a transformation and store the result | filestack_transform_apply |
Processing API |
| List supported transformations | filestack_list_transforms |
Processing Engine |
| Tag, moderate, caption, OCR, or detect documents | filestack_analyze |
Intelligence |
| Convert documents (DOCX, PPTX, XLSX, PDF, and more) | filestack_convert_document |
Processing API |
| Transcode video (async) | filestack_convert_videofilestack_video_status |
Video and Audio Processing API |
| Bundle up to 100 files as a ZIP | filestack_zip_files |
Processing API |
| Screenshot a web page | filestack_screenshot_url |
Processing API |
| Create and sign a policy, or a signed URL |
filestack_generate_policyfilestack_sign_policyfilestack_generate_signed_url
|
Security Policies |
| Virus scan, phishing detection, video intelligence | filestack_run_workflow |
Workflows |
| Verify an incoming webhook, or sign a test payload | filestack_verify_webhook_signaturefilestack_sign_webhook_payload |
Webhooks |
Transformations chain left to right in the CDN URL. Put processing tasks (resize, crop, enhance) before output:
https://cdn.filestackcontent.com/resize=width:800,height:600/output=format:webp/abc123XYZSkills
Skills load automatically when the conversation or code matches their triggers.
| Skill | Loads when |
|---|---|
filestack-sdk-integration |
Code imports filestack-js or filestack, or calls client.upload( orclient.picker( |
filestack-error-diagnosis |
A Filestack endpoint returns 401, 403, 404, or 429, or an error body appears |
filestack-webhook-setup |
Code handles FS-Signature, FS-Timestamp, or events such as fp.upload
|
filestack-intelligence |
The task involves tagging, moderation, OCR, captioning, or sentiment |
filestack-workflow-design |
The task involves a multi-step pipeline, a workflow UUID, or fs.workflow |
Slash command
/filestack-transform abc123XYZ resize to 800x600 and convert to webp5. Use the machine-readable docs
- llms.txt: every documentation page with a one-line description. Read it first.
- Root llms.txt: the wider Filestack product line, pricing, and case studies.
- Use Copy page or View as Markdown at the top of this page to get it as Markdown.
6. Build
- Add the File Picker to a web app: Quick Start, Picker for web, React SDK.
- Upload from a server: JavaScript SDK, Python SDK, File API.
- Transform and deliver: Processing API, CDN.
- Secure uploads and delivery: Security Policies.
- Automate: Workflows, Webhooks.
- Full plugin reference: Claude Code Plugin.
Troubleshooting
| Problem | Fix |
|---|---|
| Tools return “API key not configured” | Set FILESTACK_API_KEY and restart the editor |
| Security tools return “App secret not configured” | Set FILESTACK_APP_SECRET and restart the editor |
| Skills do not appear after install | Restart the editor. Skills load at session start |
filestack_upload fails for a local file |
Use an absolute path or one relative to the working directory |
filestack_transform_apply returns 403 |
Check that the API key has processing permissions in the Developer Portal |
| Signed URLs return 403 | Confirm the policy has not expired and its call list covers the operation |