How to use PolyDrobe.
Set up a workspace, model your assets and variants, invite the team, and fix the errors that come up most often.
Up and running in four steps
Project, taxonomy, assets, team. In that order.
Create a project
Create your first project and set a clear project slug.
Configure taxonomy
Configure core settings: categories, rarities, tags, currencies, statuses, and releases.
Add assets & variants
Add assets, then create variants with images, price data, and optional metadata.
Invite your team
Invite teammates and assign Owner, Editor, or Viewer roles based on responsibility.
Everything you can do
Open a workflow to see the details.
Project SetupStart with structure before content.
- Create project details and icon.
- Define reusable taxonomy in Project Settings.
Asset and Variant ManagementUse assets for items and variants for versions.
- Add asset-level metadata and assign category/rarity.
- Attach variant textures, images, and pricing.
Review and SearchKeep the catalog easy to scan and maintain.
- Use filtering, status and tags to find the work in front of you.
- Use activity history to review changes.
Import and ExportExchange data safely with your pipeline.
- Export project data to JSON or Excel, or tick Include media files to get a ZIP package with the images, textures and meshes.
- Import JSON, Excel or ZIP packages. Every import runs a preview first, so you review the row-level changes and errors before anything is committed.
Google Sheets ImportImport assets, variants, and project settings from a native Google Spreadsheet.
- Create a native Google Spreadsheet (not an uploaded .xlsx) with one worksheet per entity type: Currencies, Rarities, Releases, Tags, Categories, Assets, Variants.
- Add exact column headers as the first row of each worksheet (case-sensitive). For example, the Variants sheet needs: slug, name, asset_slug, rarity, release, currency, price, description, tags.
- Entities are imported in dependency order: Currencies, Rarities, Releases, Tags, Categories, Assets, and finally Variants. Anything a row references must already exist in the project or appear earlier in the same run.
- In your project, open the Data Exchange page (Import / Export in the project menu), pick Google Sheet as the import source, and connect your Google account. PolyDrobe asks for Google's drive.file scope, so it can only read the files you hand it.
- Under Create a profile, give the profile a label, click Browse to choose your spreadsheet in the Google Picker, adjust the worksheet names if your tabs are named differently, and click Save profile.
- Run Preview on the saved profile first. It is a dry run that reports validation errors without writing anything; Import applies the same run for real.
- For tags on Assets or Variants, use semicolon-separated values: starter;seasonal=winter;limited-edition.
- Prices accept both dot and comma decimal separators (9.99 or 9,99). Rarity is matched by name, currency by code, and release by version string.
Developer guides
Connect your tools, agents, and pipelines to PolyDrobe.
REST API SetupIntegrate with PolyDrobe using the standard REST API. Available on the Pro plan.
1. Generate an access token
Go to Workspace Settings > API Tokens and create a new personal access token. Give it a descriptive name (e.g. 'CI Pipeline' or 'Local Script'), select read and write scopes, and choose an expiration period. Copy the token when it appears, because it is shown only once.
# Your token will look like this: pdtk_a8f3b2c1d4e5f6a7b8c9d0e1f2a3b4c5... # Keep it safe. You cannot retrieve it later. # If lost, revoke it and create a new one.
2. Authenticate requests
Include the token as a Bearer token in the Authorization header on every request.
curl -H "Authorization: Bearer pdtk_abc123..." \
https://polydrobe.app/api/v1/projects/
3. List your projects
Returns all projects where you are a member. Response uses the standard envelope format with data and meta keys.
GET /api/v1/projects/
# Response:
{
"data": [
{
"id": "...",
"name": "Cyber Skins",
"slug": "cyber-skins",
"asset_count": 42,
"my_role": "owner"
}
],
"meta": { "total": 1, "page": 1, "page_size": 25 }
}
4. Create an asset
Create an asset inside a project. Requires editor or owner role. The slug is auto-generated from the name.
curl -X POST \
-H "Authorization: Bearer pdtk_abc123..." \
-H "Content-Type: application/json" \
-d '{"name": "Plasma Rifle", "description": "Sci-fi weapon", "category_slug": "weapons"}' \
https://polydrobe.app/api/v1/projects/cyber-skins/assets/
5. Create a variant
Add a variant to an asset with pricing, rarity, and status. All foreign key references use slugs.
curl -X POST \
-H "Authorization: Bearer pdtk_abc123..." \
-H "Content-Type: application/json" \
-d '{"name": "Gold Edition", "rarity_slug": "legendary", "price": "29.99", "currency_code": "USD"}' \
https://polydrobe.app/api/v1/projects/cyber-skins/assets/plasma-rifle/variants/
6. Search assets
Full-text search across assets and variants using PostgreSQL search. Supports phrases, OR, and negation.
GET /api/v1/projects/cyber-skins/search/?q=gold+legendary&type=variant&limit=10
7. Bulk operations
Update or delete multiple variants at once. Requires the Bulk Operations capability, on the Pro plan.
curl -X POST \
-H "Authorization: Bearer pdtk_abc123..." \
-H "Content-Type: application/json" \
-d '{"slugs": ["v1", "v2", "v3"], "updates": {"status_slug": "released"}}' \
https://polydrobe.app/api/v1/projects/cyber-skins/bulk/variants/update/
Available endpoints
The REST API reaches every project resource PolyDrobe stores, from the catalog itself through to media, bulk edits, activity and webhooks. The groups below are the full set. Every resource uses slug-based URLs.
Projects: GET|POST /v1/projects/
GET|PATCH|DELETE /v1/projects/{slug}/
Assets: GET|POST /v1/projects/{slug}/assets/
GET|PATCH|DELETE /v1/projects/{slug}/assets/{slug}/
Variants: GET|POST /v1/projects/{slug}/assets/{slug}/variants/
GET|PATCH|DELETE .../assets/{slug}/variants/{slug}/
GET /v1/projects/{slug}/variants/ (flat list)
Media: GET .../variants/{slug}/images/
PATCH|DELETE .../variants/{slug}/images/{uuid}/
GET .../variants/{slug}/textures/
DELETE .../variants/{slug}/textures/{uuid}/
Bundles: GET|POST /v1/projects/{slug}/bundles/
GET|PUT|PATCH|DELETE /v1/projects/{slug}/bundles/{slug}/
GET|POST /v1/projects/{slug}/bundles/{slug}/items/
DELETE .../bundles/{slug}/items/{variant_slug}/
Collections: GET|POST /v1/projects/{slug}/collections/
GET|PUT|PATCH|DELETE .../collections/{slug}/
GET .../collections/{slug}/items/
POST .../collections/{slug}/members/
DELETE .../collections/{slug}/members/{variant_slug}/
POST .../collections/{slug}/duplicate/
Classification: GET|POST /v1/projects/{slug}/{categories|tags|rarities|releases|currencies|statuses}/
PATCH|DELETE /v1/projects/{slug}/{entity}/{slug}/
Favorites: GET /v1/projects/{slug}/favorites/
POST|PUT|DELETE /v1/projects/{slug}/favorites/{kind}/{uuid}/
Team: GET|POST /v1/projects/{slug}/members/
PATCH|DELETE /v1/projects/{slug}/members/{user_id}/
Bulk: POST /v1/projects/{slug}/bulk/variants/update/
POST /v1/projects/{slug}/bulk/variants/delete/
Search: GET /v1/projects/{slug}/search/?q=term&type=all
Activity: GET /v1/projects/{slug}/activity/
Export: GET /v1/projects/{slug}/export/?format=json
Webhooks: GET|POST /v1/projects/{slug}/webhooks/
PATCH|DELETE /v1/projects/{slug}/webhooks/{uuid}/
MCP Server SetupConnect AI assistants (Claude, ChatGPT) to PolyDrobe using the Model Context Protocol. Available on the Pro plan.
1. Generate a personal access token
Go to Workspace Settings > API Tokens and create a new token. Name it after your AI client (e.g. 'Claude Desktop' or 'Claude Code'). Select read and write scopes, and choose a long expiration (1 year or no expiration). Copy the token when it appears, because it is shown only once.
# Your token will look like this: pdtk_a8f3b2c1d4e5f6a7b8c9d0e1f2a3b4c5... # Use this token in the configuration steps below. # The same token works for both REST API and MCP server.
2. Connect Claude Desktop
Add the PolyDrobe MCP server to your Claude Desktop configuration. Open claude_desktop_config.json and add this entry.
{
"mcpServers": {
"polydrobe": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://polydrobe.app/mcp"],
"env": {
"MCP_HEADERS": "Authorization: Bearer pdtk_abc123..."
}
}
}
}
3. Connect Claude Code
Add the MCP server from the terminal using the Claude Code CLI.
claude mcp add polydrobe \ --transport http \ --url https://polydrobe.app/mcp \ --header "Authorization: Bearer pdtk_abc123..."
4. Local development (stdio mode)
For local development, run the MCP server directly over stdio without HTTP. This pre-authenticates as the specified user.
python manage.py mcp_stdio --user=your-username
# Claude Desktop config for local stdio:
{
"mcpServers": {
"polydrobe-local": {
"command": "python",
"args": ["manage.py", "mcp_stdio", "--user=your-username"],
"cwd": "/path/to/polydrobe"
}
}
}
5. Try it out
Once connected, ask your AI assistant natural-language questions about your project data.
# Example prompts for your AI assistant: "List all my projects" "Show me the assets in project 'cyber-skins'" "Create a new asset called 'Neon Jacket' in the 'outerwear' category" "Search for legendary variants with price above 20" "Set up categories: Headwear, Outerwear, Footwear, Accessories" "Tag all sword assets with 'melee' and 'weapon'" "Export the project data as JSON" "Give me a project overview with sample thumbnails"
Available MCP tools
Every read, write, search and export operation in PolyDrobe is exposed as a tool. An AI assistant discovers the whole set on connection, grouped by category, with nothing to configure.
Projects: list_projects, get_project, create_project,
update_project, delete_project
Assets: list_assets, get_asset, create_asset,
update_asset, delete_asset
Variants: list_variants, create_variant,
update_variant, delete_variant
Bundles: list_bundles, get_bundle, create_bundle,
update_bundle, delete_bundle, list_bundle_items,
add_bundle_item, remove_bundle_item,
find_bundles_containing_variant
Collections: collections_list, collections_get,
collections_create, collections_update,
collections_delete, collections_add_member,
collections_remove_member, collections_duplicate
Classification: list_categories, create_category, update_category,
delete_category, list_tags, create_tag, delete_tag,
list_rarities, create_rarity, list_releases,
create_release, list_currencies, create_currency,
list_statuses, create_status
Tags: add_asset_tags, remove_asset_tags,
add_variant_tags, remove_variant_tags
Favorites: list_favorites, add_favorite,
remove_favorite, toggle_favorite
Team: list_members, update_member_role, remove_member
Search: search (full-text across assets & variants)
Activity: get_activity_log
Images: fetch_variant_thumbnail, fetch_variant_image,
fetch_variant_texture, set_variant_thumbnail
Bulk: bulk_create_variants, bulk_update_variants,
bulk_delete_variants
Data: export_project, import_project_data
OAuth 2.1 for production (advanced)
For CI/CD pipelines and server-to-server integrations, you can use OAuth 2.1 client credentials flow instead of personal tokens. Contact support for OAuth application setup.
# Exchange client credentials for an access token: curl -X POST https://polydrobe.app/o/token/ \ -d "grant_type=client_credentials" \ -d "client_id=your-client-id" \ -d "client_secret=your-client-secret" \ -d "scope=read write" # For most use cases, personal access tokens from # Workspace Settings > API Tokens are simpler and sufficient.
Who can do what
Three roles, drawn along what each person needs to change. Viewers stay free.
Owner
Manages project settings, billing-plan limits, and team access.
- Project settings
- Billing
- Team management
- Create or edit assets
- Import & Export
- Read-only browsing
Editor
Creates and updates assets, variants, and operational data.
- Project settings
- Billing
- Team management
- Create or edit assets
- Import & Export
- Read-only browsing
Viewer
Reads project data for review, QA, or stakeholder visibility.
- Project settings
- Billing
- Team management
- Create or edit assets
- Import & Export
- Read-only browsing
Frequently asked questions
What is PolyDrobe?
What types of assets does PolyDrobe manage?
Does PolyDrobe support 3D model preview?
How does PolyDrobe compare to Google Sheets for game asset tracking?
How is PolyDrobe different from Notion or Airtable?
What game engines is PolyDrobe compatible with?
Can AI agents interact with PolyDrobe?
What is the difference between the REST API and the MCP server?
How do I get an API access token?
Does PolyDrobe support team collaboration?
Should I model each skin as an asset or variant?
How do I keep naming consistent?
What does the Free plan include?
Do Viewer seats count toward billing?
Is PolyDrobe a SaaS product?
Can I import existing asset data into PolyDrobe?
What columns does the Google Sheets import template need?
Why does my Google Sheets import say 'Spreadsheet metadata could not be loaded'?
Do I need to connect Google separately for each project?
Common issues
Quick fixes for the most frequent problems.
Missing permissions
If an action is unavailable, check your project role and ask an Owner for access updates.
Import validation errors
Review required fields, category slugs, and enum values before retrying import.
Media upload issues
Verify file type, file size, and current storage usage against your active plan limits.
Google Sheets: 'Spreadsheet metadata could not be loaded'
The file is probably an uploaded .xlsx rather than a native Google Spreadsheet. Open it, choose File > Save as Google Sheets, then click Browse in your sync profile and pick the converted file. Check as well that the connected Google account can open the spreadsheet.
Google Sheets: Assets or Variants fail with 'Tag not found' or 'Category not found'
Referenced entities must exist before anything can point at them. The importer walks the worksheets in order (Currencies > Rarities > Releases > Tags > Categories > Assets > Variants), so a category that failed to import takes its assets down with it. Read the dry-run preview from the top and fix the earliest entity type first.
Google Sheets: Variant price shows 'invalid price'
The importer accepts both dot (9.99) and comma (9,99) decimal separators. If the error persists, look for stray characters, currency symbols or spaces in the price cell.