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.

1

Create a project

Create your first project and set a clear project slug.

2

Configure taxonomy

Configure core settings: categories, rarities, tags, currencies, statuses, and releases.

3

Add assets & variants

Add assets, then create variants with images, price data, and optional metadata.

4

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.
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
Billable seat

Editor

Creates and updates assets, variants, and operational data.

  • Project settings
  • Billing
  • Team management
  • Create or edit assets
  • Import & Export
  • Read-only browsing
Billable seat

Viewer

Reads project data for review, QA, or stakeholder visibility.

  • Project settings
  • Billing
  • Team management
  • Create or edit assets
  • Import & Export
  • Read-only browsing
Free seat

Frequently asked questions

What is PolyDrobe?
PolyDrobe is a game asset management platform for documenting, versioning and collaborating on apparel assets: skins, cosmetics and accessories across a game project. It gives you a structured, searchable database in place of the spreadsheets most teams start with.
What types of assets does PolyDrobe manage?
PolyDrobe is designed for game apparel and cosmetic items: character skins, outfits, accessories, weapons, and any item that has multiple visual variants. Each asset can have multiple variants representing different colorways, quality tiers, or seasonal versions.
Does PolyDrobe support 3D model preview?
Yes. PolyDrobe includes a built-in 3D model viewer that renders .glb and .gltf files directly in the browser. You can attach mesh files to assets and texture files to variants and preview them without leaving the app.
How does PolyDrobe compare to Google Sheets for game asset tracking?
Google Sheets has no structured data types, version tracking, role controls or media handling. PolyDrobe gives you dedicated fields for rarity, status, price, release version and tags, stores thumbnails and 3D models on the record, and enforces role-based access.
How is PolyDrobe different from Notion or Airtable?
Notion and Airtable are general database tools, and you build the game-asset schema yourself. PolyDrobe ships that schema: asset-variant hierarchy, 3D model viewer, texture management, pipeline statuses, rarity levels and release versioning.
What game engines is PolyDrobe compatible with?
PolyDrobe is engine-agnostic. It documents and coordinates the catalogue while your engine runs the game, so teams on Unity, Unreal Engine, Godot or a custom engine all use it the same way. JSON and Excel export and the MCP server carry the data into your pipeline.
Can AI agents interact with PolyDrobe?
Yes. PolyDrobe has a Model Context Protocol (MCP) server at https://polydrobe.app/mcp. Every read, write, search and export operation is exposed as a tool. AI assistants such as Claude and ChatGPT can connect using a Bearer token, then list projects, manage assets, variants, bundles and collections, configure classifications, assign tags, bulk-update entries, and search the database using natural language. See the Developer Guides section for setup instructions.
What is the difference between the REST API and the MCP server?
Both reach the same data through the same service layer. The REST API uses standard HTTP methods (GET, POST, PATCH, DELETE) with JSON envelopes, which suits scripts, CI/CD pipelines and custom integrations. The MCP server speaks the Model Context Protocol, so AI assistants such as Claude and ChatGPT can work with your data in plain language. Both need a Pro plan and OAuth2 authentication.
How do I get an API access token?
Go to Workspace Settings > API Tokens and click Create token. Give it a name, select scopes (read, write) and choose an expiration period. Copy the token when it appears, because it is shown once. The same token works for the REST API and the MCP server, and both need a Pro plan.
Does PolyDrobe support team collaboration?
Yes. Projects support multiple team members with three roles: Owner (full control including settings and billing), Editor (can create and update assets and variants), and Viewer (read-only access for QA or stakeholder review). Invite teammates by email from Project Settings.
Should I model each skin as an asset or variant?
Use one asset for the core item and variants for each skin or version. For example, a Hoodie asset might have variants named Hoodie Blue, Hoodie Red, and Hoodie Gold. The asset holds shared properties like mesh file and category; variants hold per-version properties like texture, price, and rarity.
How do I keep naming consistent?
Use clear naming conventions and rely on slug-based URLs for stable references. PolyDrobe auto-generates URL slugs from names, so a consistent naming convention produces consistent, human-readable URLs that remain stable even if the display name changes.
Can I share project data externally?
Yes, on plans that include Data Exchange. Use the Data Exchange page to export the full project to JSON or Excel, or to a ZIP package that carries the media files too, and share it with downstream tools, publishers, or external contractors.
What does the Free plan include?
The Free plan includes 1 owned project, up to 3 members, 1 GB of workspace storage, unlimited assets, 100 variants per project, and 30 days of activity retention.
Do Viewer seats count toward billing?
No. Only Owner and Editor roles are billable seats. Viewers stay free regardless of how many you add.
Is PolyDrobe a SaaS product?
Yes. PolyDrobe is a web-based SaaS application hosted at polydrobe.app. There is no software to install. Sign up, create a project, and start adding assets immediately.
Can I import existing asset data into PolyDrobe?
Yes. PolyDrobe imports JSON, Excel (.xlsx), ZIP packages that carry media alongside the data file, and Google Sheets. Export your existing spreadsheet in the expected format and import it from the Data Exchange page. Every import is previewed first: you see the per-row create, update and error counts before committing changes.
What columns does the Google Sheets import template need?
Each worksheet uses specific columns. Categories need: slug, name, description, parent_slug. Tags need: slug, name, value. Rarities need: name, color (#RRGGBB hex), priority. Currencies need: code, name, symbol. Releases need: version, name, description, release_date (YYYY-MM-DD). Assets need: slug, name, description, category_slug, tags. Variants need: slug, name, asset_slug, rarity, release, currency, price, description, tags. Column headers are case-sensitive and must appear in the first row. The Google Sheets sync covers those seven entity types; Bundles and Collections are imported through Excel or JSON upload instead.
Why does my Google Sheets import say 'Spreadsheet metadata could not be loaded'?
The file is probably an uploaded .xlsx opened in Google Sheets rather than a native Google Spreadsheet. A URL carrying 'rtpof=true' marks an uploaded file. To fix it, open the file in Google Sheets, 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.
Do I need to connect Google separately for each project?
Yes. Each project requires its own Google connection for multi-tenancy isolation. Different projects may have different owners and access controls. The same Google account can be used across all projects.

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.

Ask us directly.

Email us and a human answers.