3dassets.dev

MCP server

Streamable-HTTP MCP endpoint at /mcp. Search and fetch without auth; add a Bearer API key to submit on a user’s behalf.

Connect

One command per client. The API key is only needed to submit models; searching and fetching work without it.

Claude Code
claude mcp add --transport http 3dassets https://3dassets.dev/mcp
Claude Code, with an API key
claude mcp add --transport http 3dassets https://3dassets.dev/mcp --header "Authorization: Bearer <apiKey>"
Codex CLI
codex mcp add 3dassets --url https://3dassets.dev/mcp
Codex CLI, with an API key
THREEDASSETS_KEY=<apiKey> codex mcp add 3dassets --url https://3dassets.dev/mcp --bearer-token-env-var THREEJSASSETS_KEY
VS Code
code --add-mcp '{"name":"3dassets","type":"http","url":"https://3dassets.dev/mcp"}'
Cursor, Windsurf or any mcp.json
{
  "mcpServers": {
    "3dassets": {
      "url": "https://3dassets.dev/mcp",
      "headers": { "Authorization": "Bearer <apiKey>" }
    }
  }
}

In ChatGPT itself, remote MCP tools arrive through plugins rather than a URL you paste; use the prompt route there. Any other client that reads a link and calls an API can use skill.md without MCP at all.

Tools

ToolAuthDoes
search_assetsnoneSearch by text, category, theme, style and tags
search_packs · get_packPublicFind cohesive game kits and fetch complete file manifests, budgets and starter scenes
get_assetnoneFull details incl. CDN URL, licence + attribution text, stats, snippets
get_asset_usagenoneLoader code or import steps for three.js, R3F, model-viewer, Blender, Godot and Unity
list_categories · list_tags · list_licensesnoneSlugs the other tools accept
create_accountnoneCreate a contributor account; emails the user a 6-digit code
verify_accountnoneExchange the code for the user’s API key (shown once)
submit_asset_from_urlkeySubmit a .glb from a public https URL
get_upload_urlfinalize_uploadkeyDirect byte upload for clients that can PUT files
my_assets · update_assetkeyTrack and edit the user’s submissions
submit_pack · my_packskeyGroup the user’s uploads into a pack proposal and track it
report_assetnoneFlag an asset

Resource template asset://{slug} returns the Markdown rendition of an asset.

CC0 submissions

Uploads default to CC0 1.0 Universal. Omit license, or send cc0-1.0; other licences are rejected. Before setting attestation: true, the user must confirm their publishing rights and accept irrevocable CC0 dedication, allowing personal and commercial use without attribution. One confirmation can cover an identified batch. Do not ask the user to select a licence or tags.

list_licenses returns CC0 only. Licence and attribution fields remain in responses for compatibility and historical records.

Behaviour agents can rely on

Rate limits

Tool calls are counted the same way as REST calls, against your API key when the server is configured with one and against your IP address otherwise. Read tools share one bucket; submit_asset_from_url, get_upload_url, finalize_upload, update_asset, submit_pack and report_asset count as submissions; create_account and verify_account count as account calls.

WhatAnonymous (per IP)With an API key
Search & read
GET /api/v1/*, /assets/{slug}.md, MCP read tools
60/min · 1,000/hour120/min · 3,000/hour
Downloads
/download/{slug}
30/min · 300/hour · 1,000/day60/min · 600/hour · 3,000/day
Submissions & edits
POST /api/v1/assets, /assets/from-url, /uploads/presign, /packs/submissions, /reports, MCP write tools
5/min · 30/hour · 100/day20/min · 150/hour · 400/day
Accounts
POST /api/v1/accounts/verify, /accounts/session, key rotation
10/hour · 30/day10/hour · 30/day
Account emails
POST /api/v1/accounts, /accounts/login-code, /accounts/resend
6/hour · 20/day6/hour · 20/day

Over the limit the call comes back as a JSON-RPC error (-32029) over HTTP 429 with a Retry-After header, and the message says how long to wait. Relay that to the user and pause: do not retry in a loop, and never split one job across several keys. Pulling a whole pack for a scene is expected and fits well inside the limits; re-fetching the catalogue is not.

AI model attribution

Set aiGenerated: true if AI helped create geometry, generating code or textures, and optionally include aiModel (up to 160 characters). Use GET /api/v1/ai-models?q=... or MCP list_ai_models for OpenRouter suggestions refreshed hourly. Custom model and 3D-tool names are accepted. Leave unknown models unspecified; never guess. Using an agent only to upload does not count as AI creation.

The asset info panel, JSON and Markdown show this as contributor-reported attribution. A model catalogue outage does not block uploading. Switching AI use off clears the model name.