Find and use Craftwork design assets through machine-readable APIs and the authenticated MCP server. Use when the user asks to search, browse, inspect, or download design assets; provides a craftwork.design/asset/* URL; or when an agent discovers craftwork.design and needs direct access without scraping HTML.
Use the Craftwork MCP server to search, browse, inspect, and download design assets from the Craftwork marketplace.
Note: in the product UI the MCP connection alias is currently craftwork. Do not assume there is a separate server literally named craftwork-assets.
When starting with only craftwork.design or a Craftwork URL:
https://craftwork.design/.well-known/api-catalog for public, read-only API discovery.service-desc and service-doc links instead of guessing API routes.https://craftwork.design/.well-known/mcp/server-card.jsonhttps://craftwork.design/api/mcphttps://craftwork.design.If the client cannot establish an authenticated MCP connection, remain within the public APIs. Do not attempt to bypass authentication or reconstruct private endpoints.
Before calling any tool, make sure the Craftwork MCP connection is already configured and authenticated for the current session.
If tool calls fail with auth errors, stop and tell the user that the MCP connection must be connected/authenticated first.
| Tool | Purpose |
|---|---|
craftwork_find_assets | Find assets: mode="search" (semantic AI), mode="browse" (catalog with filters), mode="categories" (list categories/subcategories) |
craftwork_get_asset | Get asset details by slug. Set includePreview=true to also get preview URL |
craftwork_discover | Discover related assets: mode="similar" (by AI embeddings), mode="group" (assets inside a pack/group) |
craftwork_download | Download & manage: action="download" (signed URL), action="history", action="limits" |
Preview images are low-res covers for evaluation only.
Recommended flow:
craftwork_find_assets.craftwork_get_asset if needed.format: "json" is safe and preferred for automationcraftwork_find_assets, craftwork_get_asset, and craftwork_discover return valid structured JSON-compatible payloads. Prefer format: "json" when the result will be parsed or iterated over programmatically.Use markdown only when a human-readable list is more useful.
Search and inspect first. Download an asset only when the user asks to obtain or use it, or after the user selects it from presented candidates.
craftwork_find_assetssearch and browse return items[] plus optional paginationcategories returns categories[] and subcategories[]craftwork_get_assetassetasset.fmtincludePreview=true may add asset.preview.urlcraftwork_discoversimilar returns items[] plus paginationgroup returns:
groupitems[]paginationImportant: group now returns full asset cards, not just assetIds.
craftwork_downloaddownload returns asset, downloadUrl, type, expiresInSecondshistory returns downloadedAssetIds, count, limit, offset, hasMorelimits returns hasSubscription, freeAssets, paidAssetstype: "asset"This is the original downloadable file. Typical flow:
craftwork_download(action: "download", assetId: 123, type: "asset")type: "figma" or type: "framer"Treat these as URL-based outputs, not guaranteed local files with <slug>.<ext>.
asset.extension = nulldownloadUrl should be handled as a link/open/import target<slug>.<ext> like a normal binary assetNever dump files into tmp-assets/.
Download real asset files into the target workspace/app that the user is actually modifying.
public/assets/static/assets/src/assets/assets/assets/ inside that workspace.Do not pick a random top-level public/ or assets/ from the monorepo root if the user is working in a specific app/package.
If the user gave an explicit path, always use that path.
For a URL like craftwork.design/asset/some-slug:
craftwork_get_asset(slug: "some-slug", format: "json")asset.id for download or related discoverycraftwork_find_assets(mode: "search", query: "...", format: "json")craftwork_find_assets(mode: "browse", ..., format: "json")craftwork_find_assets(mode: "categories", format: "json")craftwork_discover(mode: "similar", assetId: <id>, format: "json")craftwork_discover(mode: "group", groupSlug: "...", format: "json")Useful parameters:
sortBy: "popular" for most downloadedsortBy: "created_at", sortOrder: "desc" for newestisFree: true for free assets onlycraftwork_download(action: "limits") before bulk paid downloads