ArtifactDeploy
Deploy what Claude builds to a live link in seconds: rich previews, personal links that show who opened it, stats, forms, live data and custom domains.
Server MCP Terhosting
npx add-mcp 'https://mcp.artifactdeploy.com/mcp'Terpasang ke Claude Code, Codex, Cursor, dan lainnya
Dokumentasi
Quick start
First create a free account and confirm your email. Then connect Claude using whichever app you use — it takes about two minutes.
- MCP server URL:
https://mcp.artifactdeploy.com/mcp - Transport: Streamable HTTP
- Authentication: OAuth 2.1 sign-in (Claude.ai, Desktop, mobile, Claude Code), or a Bearer API key starting with
sk-ad
1. Claude.ai, Claude Desktop & Claude mobile
Add ArtifactDeploy as a custom connector. You sign in with your ArtifactDeploy account — there is no key to copy.
- In Claude, open Settings → Connectors and choose Add custom connector.
- Name it ArtifactDeploy and paste the URL
https://mcp.artifactdeploy.com/mcp. Leave the advanced OAuth fields empty. - Click Add, then Connect. A window opens on artifactdeploy.com — sign in and click Allow.
- In a chat, make sure ArtifactDeploy is enabled in the tools menu, then ask Claude to deploy something.
Connectors you add on claude.ai are also available in Claude Desktop and the Claude mobile apps. Custom connectors depend on your Claude plan; on Team and Enterprise workspaces an owner may need to add the connector for the organisation first.
2. Claude Code
Option A — sign in (recommended). Add the server, then authenticate from inside Claude Code:
claude mcp add --transport http --scope user artifactdeploy https://mcp.artifactdeploy.com/mcp
Start Claude Code, run /mcp, select artifactdeploy and choose Authenticate. Your browser opens the ArtifactDeploy sign-in and consent screen.
Option B — API key. Useful on servers and CI where a browser isn't available. Create a key on Dashboard → Connections → API keys, then:
claude mcp add --transport http --scope user artifactdeploy \
https://mcp.artifactdeploy.com/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
Either way, /mcp should show artifactdeploy as connected with three tools.
3. API keys & other MCP clients
Any MCP client that supports Streamable HTTP can connect — either through OAuth discovery (point it at https://mcp.artifactdeploy.com/mcp and it will find the sign-in flow automatically) or by sending Authorization: Bearer YOUR_API_KEY.
For clients that only launch local servers, such as older Claude Desktop setups, use the mcp-remote bridge (needs Node.js 18+). In Claude Desktop open Settings → Developer → Edit Config, add this and restart the app:
{
"mcpServers": {
"artifactdeploy": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://mcp.artifactdeploy.com/mcp",
"--header", "Authorization:${AUTH_HEADER}"
],
"env": { "AUTH_HEADER": "Bearer YOUR_API_KEY" }
}
}
}
API keys are shown once when created. Treat them like passwords, and revoke any key you no longer use.
Deploying from Claude
Once connected, just ask. Mentioning “deploy” makes it explicit. Prompts that work well:
- “Build me a one-page pricing calculator in HTML and deploy it.”
- “Turn these notes into a 6-slide Reveal.js deck and deploy this.”
- “Deploy this dashboard as “Q3 revenue” with the password tulip-42.”
- “List my deployments.”
- “Delete the deployment called q3-revenue-4f2a1c.”
Claude replies with the URL, for example https://q3-revenue-4f2a1c.artifactdeploy.com, and the deployment appears in your dashboard instantly. Claude asks for permission before calling a tool the first time; you can allow it for the whole chat.
MCP tools reference
deploy_artifact
Uploads an artifact and returns its public URL.
| Parameter | Type | Description |
|---|---|---|
title | string, required | Human-readable name (1–100 chars). Also used to build the URL slug. |
content | string, required | The artifact source — or base64 file data for image and pptx. |
artifact_type | enum, required | One of html, react, revealjs, md, image, svg, pptx, csv, json, code. |
is_private | boolean, optional | Defaults to false. When true, the URL does not serve publicly (Pro). |
password | string, optional | Visitors must enter this password before the page loads (Pro). 4–128 characters. |
homepage | string, optional | One of your custom domains (e.g. yourcompany.com). The deployment becomes that domain’s homepage. |
instructions | string, optional | Standing rules saved with the deployment for future edits — data sources, required format (max 8,000 characters). |
get_deployment
Fetches a deployment’s current source so Claude can review or edit it — even in a new chat — plus its saved instructions, which Claude follows. Images and PowerPoint files up to 1 MB come back as base64.
| Parameter | Type | Description |
|---|---|---|
deployment | string, required | The slug, or any of its links: slug address, prefix link, custom-domain link or a domain’s homepage URL. |
update_deployment
Changes a deployment and keeps its URL — and any domain homepage it serves. Send the whole new file, or just find-and-replace edits for small changes.
| Parameter | Type | Description |
|---|---|---|
slug | string, required | The slug or any of its links. |
content | string, optional | The complete new content (base64 for image and pptx). Use this or edits. |
edits | array, optional | Find-and-replace pairs { old_text, new_text } applied to the current source (text types). Each old_text must appear exactly once; if any edit fails, nothing changes. |
instructions | string, optional | Save or replace the standing rules ("" removes them). Can be sent on its own, without changing the content. |
title | string, optional | A new title. The URL doesn’t change. |
artifact_type | enum, optional | A new type; defaults to the current one. |
deploy_site
Publishes a multi-page website — HTML pages, CSS, JavaScript, images, fonts — to its own address (or a custom domain). Starter and above.
| Parameter | Type | Description |
|---|---|---|
title | string, required | Site name; also used to build its address. |
files | array, required | Every file as { path, content, encoding? }. Text files as plain text, binary files (images, fonts) as base64. Must include index.html. Up to 500 files / 50 MB. |
spa | boolean, optional | Single-page app: unknown page paths serve index.html (client-side routing). |
homepage | string, optional | A custom domain the site should be the website of, e.g. yourcompany.com. |
is_private, password, instructions | optional | As for deploy_artifact. |
get_site
Lists a site’s files and restorable versions, or returns one file’s content.
| Parameter | Type | Description |
|---|---|---|
deployment | string, required | The slug or any of its links. |
path | string, optional | A file to read, e.g. about.html. |
update_site
Changes a site and keeps its address. Everything in one call is published together as a new version; if anything fails, nothing changes.
| Parameter | Type | Description |
|---|---|---|
deployment | string, required | The slug or any of its links. |
files | array, optional | Files to add or replace (complete content). |
edits | array, optional | Find-and-replace edits { path, old_text, new_text } inside text files. |
delete | array, optional | Paths of files to remove. |
spa, title, instructions | optional | Change those settings. |
rollback_site
Restores an earlier version (kept: the last 10). The restore is itself a new version, so it can be undone.
| Parameter | Type | Description |
|---|---|---|
deployment | string, required | The slug or any of its links. |
version | integer, required | The version to restore (get_site lists them). |
list_form_submissions
Reads submissions collected by forms on your hosted pages: an overview of every form, or one page’s submissions.
| Parameter | Type | Description |
|---|---|---|
deployment | string, optional | A page or site (slug or any of its links). Omit for the overview. |
form | string, optional | A form name, e.g. contact. |
limit | integer, optional | How many to return, 1–100. Defaults to 20. |
since | string, optional | ISO date/time — only submissions after it. |
search_templates
Searches the public template gallery by words, category, artifact type, tag or author.
| Parameter | Type | Description |
|---|---|---|
query | string, optional | Words to look for in titles and descriptions. |
category | string, optional | e.g. dashboards, landing-pages, websites, presentations. |
artifact_type | string, optional | e.g. html, react, site. |
tag / author | string, optional | A tag, or an author handle without @. |
sort | string, optional | popular (default), used or new. |
get_template
Shows one template: description, author, live preview link, and its source (single-file templates) or file list (sites).
| Parameter | Type | Description |
|---|---|---|
template | string, required | The template slug. |
use_template
Copies a template into your account (or the connection’s workspace) as a new deployment with its own link.
| Parameter | Type | Description |
|---|---|---|
template | string, required | The template slug. |
title | string, optional | Title for your copy. |
publish_template
Publishes one of your public deployments to the gallery, or updates a template you published from it.
| Parameter | Type | Description |
|---|---|---|
deployment | string, required | The slug or any of its links. |
category | string, required for new | One of the gallery categories. |
title / description / tags | optional | Listing details. Tags: up to 10. |
republish | boolean, optional | Replace the template’s content with the deployment’s current version. |
delete_template
Permanently deletes one of your templates (listing and stored copy). Your deployment and copies others made are unaffected.
| Parameter | Type | Description |
|---|---|---|
template | string, required | The template slug or its page link. |
update_share_settings
Sets how a link looks when shared (preview title, description, image), turns remixing on or off, pins it to your profile page, and returns tracked post links per platform.
| Parameter | Type | Description |
|---|---|---|
deployment | string, required | The slug or any of its links. |
share_title / share_description | string, optional | Link-preview text ("" restores the default). |
image_base64 / clear_image | optional | Custom preview image (PNG/JPEG/WebP/GIF ≤ 2 MB), or back to the default card. |
allow_remix / pin_to_profile | boolean, optional | Let others remix it; show it on artifactdeploy.com/@you. |
personal_links_for | string[], optional | Names to make personal (?to=Name) links for; get_stats then shows who opened it. |
update_profile_page
Updates your public page at artifactdeploy.com/@handle: name, handle, bio, links and photo.
| Parameter | Type | Description |
|---|---|---|
display_name / handle / bio | string, optional | Only what you want to change. |
links | array, optional | Replaces your links: [{ label, url }], up to 10. |
avatar_base64 / remove_avatar | optional | Profile photo (≤ 1 MB). |
remix_deployment
Copies someone’s remix-enabled public deployment into your account, credited to them.
| Parameter | Type | Description |
|---|---|---|
link | string, required | The deployment’s link or slug. |
title | string, optional | Title for your copy. |
get_stats
Views per day, sources (LinkedIn, X, WhatsApp, Instagram, Google…), countries and pages — for one deployment or all of them.
| Parameter | Type | Description |
|---|---|---|
deployment | string, optional | Omit for an overview. |
days | integer, optional | Up to your plan’s history (7 / 30 / 90 days). |
set_data_source
Gives a page live data: saves a JSON API, CSV or web-page source that the page loads from /_data/<name>. Test-fetched before saving.
| Parameter | Type | Description |
|---|---|---|
deployment, name | string, required | The page, and the name used in /_data/<name>. |
type, url | string, required | json, csv or html, and the https URL. |
extract | object, optional | rows / fields (JSON paths or CSS selectors), columns / filter (CSV), numbers, limit. |
cache_minutes, schedule | optional | How long data stays fresh; background refresh (off, hourly, 15min). |
secret_headers | object, optional | API keys as headers — stored encrypted, never shown again. |
list_data_sources · refresh_data_source · delete_data_source
See status and sample rows, fetch now, or remove a source (and its stored keys and cache).
| Parameter | Type | Description |
|---|---|---|
deployment | string, required | The page. |
name | string | The source (refresh and delete). |
list_deployments
Lists your deployments, newest first, including which domain each one is the homepage of.
| Parameter | Type | Description |
|---|---|---|
limit | integer, optional | How many to return, 1–50. Defaults to 20. |
list_domains
Lists your custom domains, their status and the deployment each shows at its root.
set_link
Chooses a deployment’s main link: default, plain (its own address), prefix, or one of your custom domains. deploy_artifact also takes link.
| Parameter | Type | Description |
|---|---|---|
deployment | string, required | The slug or any of its links. |
link | string, required | default, plain, prefix, or a domain such as clienta.com. |
set_homepage
Shows an existing deployment at the root of one of your custom domains, or clears it.
| Parameter | Type | Description |
|---|---|---|
domain | string, required | One of your custom domains, e.g. yourcompany.com. |
slug | string or null, required | The deployment to show at the root, or null to show nothing. |
delete_deployment
Permanently deletes a deployment and takes its URL offline.
| Parameter | Type | Description |
|---|---|---|
slug | string, required | The deployment slug, from list_deployments or the URL. |
Artifact types
The artifact_type decides which viewer the URL opens in. HTML is served as-is; everything else is wrapped in a purpose-built viewer.
| Type | Value | Viewer |
|---|---|---|
| 🌐 HTML pages | html | Landing pages, dashboards, mini-apps |
| ⚛️ React components | react | npm imports and Tailwind supported |
| 🗂️ Multi-page websites | site | Pages, CSS, scripts and images on your own domain |
| 📽️ Slide decks | revealjs | Presentable Reveal.js decks |
| 📄 Markdown | md | Docs and reports, typeset GitHub-style |
| 📊 PowerPoint | pptx | In-browser preview + download |
| 📋 CSV | csv | Searchable, sortable data tables |
| ✏️ SVG | svg | Diagrams, charts and icons |
| 🖼️ Images | image | PNG, JPEG, GIF and WebP |
| 🧾 JSON | json | Collapsible tree viewer |
| 💻 Code | code | Syntax-highlighted source files |
Notes on specific types
- React: send a single component file and default-export the component.
importfrom npm works — packages such aslucide-react,recharts,framer-motionandlodashload automatically from the esm.sh CDN — and Tailwind classes are styled. TypeScript is fine. Imports of local files or shadcn/ui (@/components/ui/…) only exist inside Claude's own preview; ask Claude to inline those components before deploying. - Slides: send the
<section>elements of a Reveal.js deck; the theme, controls and keyboard navigation are added for you. - Images: send PNG, JPEG, GIF or WebP data as base64 (a
data:URL is fine). Usesvgfor SVG markup. - PowerPoint: send the.pptx file as base64. The URL shows an in-browser preview (powered by Microsoft Office Online) and a Download button. In Claude Code, Claude can read and encode a local file for you — ask it to “deploy slides.pptx”.
- Size: each artifact can be up to 20 MB.
URLs, prefixes, passwords & privacy
By default each deployment gets its own subdomain built from the title plus a short random suffix: https://crypto-dash-7f3a1c.artifactdeploy.com.
On Pro and Team you can claim a custom prefix in Settings. New deployments then live under it: https://yourname.artifactdeploy.com/crypto-dash-7f3a1c.
Password-protected links (Pro): ask Claude to “deploy this with the password tulip-42”, or open Deployments and click Password. Visitors see a password screen first and stay unlocked for 7 days in that browser. Passwords are stored only as salted hashes. PowerPoint previews can’t load behind a password (Microsoft’s viewer can’t sign in), but the Download button still works.
Private deployments (Pro): deploy with is_private: true (or ask Claude to “make it private”) and the URL returns a “private” page instead of the content, for everyone.
Badge: artifacts on the Free plan show a small “Deployed with ArtifactDeploy” link in the corner. Any paid plan removes it immediately.
Custom domains
On Pro (1 domain) and Team (5 domains) your artifacts can live on your own domain, such as https://yourcompany.com/crypto-dash-7f3a1c or https://links.yourcompany.com/crypto-dash-7f3a1c.
Root domains (yourcompany.com) need a DNS provider that allows a CNAME at the root: Cloudflare does it automatically (“CNAME flattening”), Namecheap calls it an ALIAS record, others ANAME. If yours can't, use www.yourcompany.com and forward the root to it at your registrar.
- Open Settings → Custom domains and add the domain (in a team, admins do this).
- At your DNS provider, add the CNAME record shown — for example
links→domains.artifactdeploy.com. If your DNS is on Cloudflare, set it to DNS only (grey cloud). An optional TXT record speeds up verification. - Wait a few minutes. We verify the domain and issue an HTTPS certificate automatically; the dashboard shows Active when it's done.
Once active, new deployments — including ones Claude makes — get links on your domain, and existing links switch over too. Every artifact's original address keeps working. If you remove the domain or your plan no longer includes it, links on that domain stop working and your artifacts stay available at their other addresses.
Choosing the main link
Every deployment opens at several addresses — its own (<slug>.artifactdeploy.com), your prefix, and each of your domains. Its main link is the one shown in the dashboard, returned by Claude and used for sharing.
- Default for the account: Settings → Main link — automatic (your first domain, else your prefix), a specific domain, your prefix, or each deployment's own address.
- Per deployment: Deployments → Link, or tell Claude “deploy this on clientA.com” / “move the Acme proposal to clientb.com” (
set_link). - Keep clients apart: turn on Only its own deployments for a domain and it shows only deployments whose main link is on it (plus its homepage) —
clientA.comwon't open Client B's work. - Multi-page sites always use their own address, or a domain's homepage.
Host your website on the domain
Pick a deployment as the domain's homepage (Settings → Custom domains) and it shows at https://yourcompany.com/; your other artifacts stay at /<slug>. Then manage the site from Claude:
- “Build a one-page website for my company and deploy it as the homepage of yourcompany.com.”
- “Update my yourcompany.com homepage: change the headline and add a pricing section.” — Claude fetches the live page with
get_deployment, edits it and saves it withupdate_deployment, so the address stays the same and the change is live in seconds. This works in a brand-new chat too.
A deployment is a single file, so this works for one-page sites (HTML, or React with Tailwind and npm packages). Multi-page sites with their own assets aren't supported yet.
Instructions for Claude
Save standing instructions with any deployment — where Claude may take data from and where not, the layout it must keep, what must never change. Whenever Claude edits that deployment, in any chat and for anyone in your team, it fetches the instructions along with the file and follows them. Instructions are never shown to visitors.
- From Claude: “Save these rules with the dashboard: …”, or include them when deploying.
- From the dashboard: Deployments → Instructions (📋 marks deployments that have them). Only the person who deployed it, or a team admin, can change them; teammates can read them.
Example for a stock dashboard:
Data: use only official exchange data (NSE/BSE) or my LSEG connector.
Never use forums, social media or unsourced blogs.
Format: header → summary cards (price, change %, 52-week range) →
candlestick chart → news table. Keep this order, colours and INR formatting.
Always show a "Data as of" timestamp and the sources used.
Never remove the "Not investment advice" note.
Tip for dashboards: keep the data in one block the page draws from, e.g. <script type="application/json" id="dashboard-data">…</script>. A refresh then only replaces that block (an update_deployment edit), so the layout can't drift and updates are quick.
Claude follows instructions closely, but they guide it rather than technically enforce anything — and they never give Claude permission to delete things or override what you ask in the chat. Have the page show its sources and timestamp so each refresh is easy to check.
Multi-page websites
Besides single artifacts, Claude can publish a whole website — several pages plus CSS, JavaScript, images and fonts — with deploy_site (Starter and above). Each site gets its own address, https://your-site-7f3a1c.artifactdeploy.com, and can be a custom domain's homepage, so yourcompany.com, /about and /careers all come from it.
- Clean URLs:
/aboutservesabout.html(orabout/index.html); add a404.htmlfor your own not-found page. - Single-page apps: deploy with
spa: trueso client-side routes like/dashboard/settingsloadindex.html. - Changing it: ask Claude — “add a careers page to my site and link it in the menu”. Claude reads the files it needs (
get_site) and publishes the change (update_site) as a new version. Every version is kept (the last 10), and you can restore one from Claude or Dashboard → Deployments → Files. - Limits: 500 files and 50 MB per site, 20 MB per file; sites count towards your plan's storage.
Claude in claude.ai writes sites as plain HTML, CSS and JavaScript (Tailwind and other libraries work from a CDN) — it can't run build tools like npm run build. Forms on your pages can collect submissions too — see Forms.
Forms
Any form on a page or site you host here can collect submissions — point it at /_forms/<name>. Ask Claude to “add a contact form” and it sets this up for you.
<form action="/_forms/contact" method="post">
<input name="name" required>
<input name="email" type="email" required>
<textarea name="message"></textarea>
<input name="_gotcha" style="display:none" tabindex="-1" autocomplete="off">
<input type="hidden" name="_redirect" value="/thanks.html">
<button>Send</button>
</form>
- Where submissions go: they're stored in your ArtifactDeploy account. See them in Dashboard → Forms (with CSV export), or ask Claude — “summarise this week's enquiries” (
list_form_submissions). In a team workspace, the whole team can read them. - After sending: visitors see a thank-you page, or the page in
_redirect(same site only). Forms sent withfetch()andAccept: application/jsonget{"ok": true}. - Spam: leave the hidden
_gotchafield empty — bots that fill it are silently ignored. Each visitor can send 5 submissions per 10 minutes per page. - Limits: 50 / 500 / 5,000 / 20,000 submissions a month on Free / Starter / Pro / Team; 50 fields and 5,000 characters per field. File uploads aren't supported yet.
- Not allowed: fields for passwords, one-time codes or card numbers are rejected, and forms on private pages don't accept submissions (password-protected pages accept them once the visitor has unlocked the page).
Form data is your visitors' personal data: tell them what you collect and why. Email notifications for new submissions are coming later.
Templates
The template gallery holds dashboards, websites, decks and tools shared by other users. Filter by category or artifact type, open a live preview, then Use this template to copy it into your account — or just ask Claude: “find a pricing page template on ArtifactDeploy and make it mine”.
- Review: every new or changed template is reviewed by our team before it appears in the gallery, usually within 1–2 days. Follow the status (and any note from the reviewer) in Dashboard → Templates.
- Publishing: Dashboard → Deployments → Template, or tell Claude “publish this as a template in the dashboards category”. Only public deployments without a password can be published. Templates show your public name and @handle (set them in Settings → Public profile), never your email.
- Snapshots: a template is a copy taken when you publish. Editing your deployment doesn't change the template until you republish it (Dashboard → Templates → Edit, or
publish_templatewithrepublish). - Copies are independent: using a template creates a normal deployment in your account that counts towards your plan. Deleting a template doesn't affect copies people already made.
- Previews run on their own
tpl-….artifactdeploy.comaddress, aren't indexed by search engines, and don't accept form submissions. - Safety: templates are made by other users. Claude treats their content as untrusted and you should review a copy before relying on it. Report anything harmful from the template's page — templates with several reports are hidden pending review.
Sharing on social media
Every public link shows a rich preview card when you post it on WhatsApp, LinkedIn, X, Facebook, Slack or iMessage — title, description and image — instead of a bare URL. Open Deployments → Share, or just tell Claude: “make this LinkedIn-ready and give me the post link”.
- Preview cards: by default each link gets a branded card for its type; images use the image itself. Set your own title and description, upload an image, or click Generate image from title. Sites that set their own
og:tags keep them. - Profile page:
artifactdeploy.com/@yourhandleis a link-in-bio page with your photo, bio, links, the deployments you pin and your templates. Put it in your Instagram or LinkedIn bio. Edit it in Settings → Public profile, or ask Claude. - Remix: turn on Allow remixing and visitors see a small Remix button: one click copies it into their account, with a “Remixed from @you” credit on their copy. Private and password-protected links can't be remixed.
- Know who opened it: in Share → People, create a personal link for each person you send it to (or ask Claude “make personal links for Rahul and Priya”). Each adds
?to=Name; Stats shows who opened it, how often and when — and who hasn't yet. A forwarded link still counts as the person it was made for. Works with password-protected links too. - Stats: views by day, where they came from (LinkedIn, X, WhatsApp, Instagram, Google, email, direct…), countries and pages. Post the tracked link for each platform (it adds
?via=linkedin), because apps like Instagram and WhatsApp hide where visitors came from. Link-preview bots aren't counted. History: 7 days on Free, 30 on Starter, 90 on Pro and Team. Ask Claude “how did my carousel do this week?” (get_stats).
Live data & Update buttons
Dashboards can show fresh data from an API, a spreadsheet or a web page, with an Update button. Ask Claude: “build a dashboard of these 5 stocks from <API> with an Update button, refreshing hourly”. Claude saves a data source on the deployment and writes the page to load it from its own address:
const res = await fetch('/_data/prices'); // instant: the saved copy
const { data, updated_at, stale, error } = await res.json();
// Update button:
await fetch('/_data/prices?refresh=1'); // fetches now if older than the cache time
- Our server does the fetching, so sites that block browsers (CORS) work and API keys stay secret — they're stored encrypted and never sent to the page, the dashboard or Claude after saving.
- Sources: JSON APIs (pick the list and fields), CSV files and published Google Sheets (pick and rename columns, filter rows), and server-rendered web pages (CSS selectors for rows and fields). Values like “₹1,04,210” or “+1.2%” become numbers.
- Caching: data stays fresh for the time you choose; many visitors pressing Update inside that window cause one upstream fetch. Pages load the saved copy instantly and refresh in the background when it's old.
- Failures: if a source is down or a page changes, visitors keep the last good data with
stale: trueand anerror; the Data panel shows what went wrong, and Claude can fix it (list_data_sources,refresh_data_source). - Scraping: we follow each site's robots.txt and identify ourselves as ArtifactDeployBot. Pages that build their data with JavaScript, or need a login, can't be scraped — use their API or a feed instead. You're responsible for having the right to use the data.
- Limits: Free 1 source (15-minute cache, no schedules or stored keys); Starter 5 (5-minute cache, hourly refresh, stored keys); Pro and Team 25 (1-minute cache, every 15 minutes). Manage sources in Dashboard → Deployments → Data.
Plan limits
Free accounts can have 3 active deployments (HTML, Markdown and images), Starter 75 (every type), and Pro unlimited — delete an old deployment any time to free a slot. See pricing for storage and other limits.
Teams & workspaces
A team workspace is a shared space with its own deployments, URL prefix and Claude connections. Your personal account stays separate — switch between them with the workspace menu at the top of the dashboard sidebar.
Create a team
- Open Dashboard → Team and choose Create a team.
- Name it, pick monthly or yearly billing and the number of seats (minimum 3), then pay. Team is $12 per seat per month, or $120 per seat per year.
- The workspace activates a few seconds after payment.
Invite people
Admins enter a teammate’s email on the Team page to create an invite link, then copy it or click Email invite. The link works once, only for that email address, and expires after 7 days. The invitee signs in (or signs up) with that email and clicks Accept. Each member and pending invite uses a seat.
Roles
| Role | Can |
|---|---|
| Owner | Everything below, plus billing, seats and deleting the workspace. There is one owner — the person who created it. |
| Admin | Invite and remove people, change roles, set the team URL prefix and custom domains, and change or delete any deployment. |
| Member | Deploy, see every team deployment, and change or delete the ones they made. |
Deploying to a team from Claude
When you click Connect for the ArtifactDeploy connector, the sign-in screen asks where to connect — choose the team. Everything Claude deploys through that connection goes to the team workspace. You can connect the same Claude account to your personal account and a team separately. API keys created while the team is selected in the dashboard also deploy to the team.
Seats, leaving and removing
The owner can add or remove seats on the Team page at any time; changes are prorated. Removing someone — or them leaving — cuts off their access and their Claude connections to that workspace immediately; the deployments they made stay with the team.
Security & revoking access
Every app you connect with sign-in appears on the Connections page under Connected apps, and any API keys you created are listed below it. Disconnecting an app or revoking a key takes effect immediately. Keys and tokens are stored only as SHA-256 hashes, and sign-in uses OAuth 2.1 with PKCE, so a leaked authorization code can't be redeemed by anyone else.
Troubleshooting
The connector says it couldn't connect or authorize
Check the URL is exactly https://mcp.artifactdeploy.com/mcp (ending in /mcp). Remove the connector and add it again to restart sign-in. Make sure you clicked Allow on the ArtifactDeploy screen and that pop-ups aren't blocked.
“Invalid or missing API key” (401)
With an API key, the header must be exactly Authorization: Bearer sk-ad…, and the key must not have been revoked. Keys created before 28 September 2026 were retired during a security upgrade — create a new one.
Claude doesn't show the tools
In Claude.ai, enable ArtifactDeploy in the chat's tools menu. In Claude Code run /mcp to see the status. In Claude Desktop with mcp-remote, check the JSON is valid, Node.js is installed and you restarted the app completely.
A React deployment shows an error box
The message says what went wrong — usually an import that only exists in Claude's preview, or a runtime error in the component. Paste the message back to Claude and ask it to fix and redeploy.
“Plan limit reached” or “needs Starter / Pro”
You’ve hit your plan’s deployment count, storage, or a feature it doesn’t include. Ask Claude to list and delete an old deployment, delete one from the dashboard, or upgrade.