Portamora
Build and explore shareable 3D worlds with your agent.
What it can do
- Search Worlds: Browse and search published worlds Sort by newest, liked, or trending. The days filter accepts 1, 7 (default), or 30 UTC calendar days including today. Newest filters publication date;
- Get World: Read a public world page. Offline and removed worlds retain a notice; drafts are not exposed.
- Update World: Edit owned world metadata, tags, thumbnail and comments switch. Requires worlds:write.
What data it sees
Do you need an account
No: the server works without sign-in
Build and explore shareable 3D worlds with your agent. Discover worlds and creators, read the SDK guides, get an editable starter, and upload, validate, and publish atmospheric environments. Public browsing needs no account; private actions use a Portamora access token.
How to connect
How to connect Portamora to Claude
The server address to paste into Claude settings:
https://portamora.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Portamora to ChatGPT
The server address to paste into ChatGPT settings:
https://portamora.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Portamora to Cursor
The server address to paste into Cursor settings:
https://portamora.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (49)
Raw names from tools/list. Only developers need these.
| search_worlds | Browse and search published worlds Sort by newest, liked, or trending. The days filter accepts 1, 7 (default), or 30 UTC calendar days including today. Newest filters publication date; liked and trending rank activity during the window and may include older worlds. Creator lists retain older work. Search text can include exact #hashtags; custom tags are supported without a fixed vocabulary. Liked and trending require the community flag. Follow nextCursor with unchanged filters until null. Drafts and offline worlds are excluded. Public; no authentication is required. |
| get_world | Read a public world page. Offline and removed worlds retain a notice; drafts are not exposed. |
| update_world | Edit owned world metadata, tags, thumbnail and comments switch. Requires worlds:write. |
| get_version | Read the current ready version of a published world. Unpublished versions are not exposed. |
| get_creator | Read an active creator profile. Email addresses, roles and account state are never exposed. |
| get_my_profile | Read your private profile (read scope for bearer tokens). |
| create_upload | Create a world or allocate its next version and return a presigned multipart POST policy (6 MiB ZIP; 10 packages/account/day). Requires worlds:write. Save idempotencyKey before calling and reuse it with unchanged input when retrying. |
| create_image_upload | Request an avatar or thumbnail upload policy (4 MiB; PNG/JPEG/WebP; 20 images/account/day). Only processed images are promoted. Save idempotencyKey before calling and reuse it with unchanged input when retrying. |
| get_upload | Poll upload status and outputs (worlds:write scope). Read named validation checks from GET /me/versions/{versionId} with read scope. |
| refresh_upload | Retrieve a pending upload policy within the original 15-minute window. |
| list_my_worlds | List your worlds and 7/30-day statistics, with opaque pagination. Requires read scope. |
| get_my_world | Read an owned draft, published, or offline world. |
| list_my_versions | List an owned world’s immutable versions, checks, notes and dates. |
| get_my_version | Read an owned version including validation results. |
| preview_version | Issue a 15-minute private preview URL. Each asset checks the owner grant; the source ZIP is never served. |
| publish_world | Promote a validated immutable version and atomically change the published pointer. Select an earlier version to roll back. Requires worlds:write. |
| take_world_offline | Take your world offline. Requires worlds:write. |
| delete_world | Hide the world immediately and queue deletion of every stored object version. Confirm its exact title. Requires worlds:write. |
| get_community | Read server-evaluated community and play-counting flags. Personal state is returned by me.get. |
| list_favorites | List only your saved published worlds, newest favorite first. Requires read; never cached. |
| list_following_worlds | List published worlds by creators you follow, newest published first. Requires read; never cached. |
| list_followed_creators | List your followed creators, newest follow first. Requires read. |
| list_comments | Read plain-text comments, newest first, with deletion placeholders. Viewer controls are private; no-store. |
| create_comment | Post 1–2,000 plain-text characters. Requires social:write, community and comments enabled. One per ten seconds and thirty per hour. Save idempotencyKey before calling and reuse it with unchanged input when retrying. |
| edit_comment | Edit your own live comment. Requires social:write and comments enabled. |
| delete_comment | Erase a comment body and preserve its place. Only the author or world creator, with social:write. |
| like_world | Add your like, idempotently. Adding a like or dislike replaces the opposite vote. Requires social:write and community enabled. Votes and follows share 300 additions per hour. |
| remove_like | Remove your like, idempotently. Adding a like or dislike replaces the opposite vote. Requires social:write and community enabled. Votes and follows share 300 additions per hour. |
| dislike_world | Add your dislike, idempotently. Adding a like or dislike replaces the opposite vote. Requires social:write and community enabled. Votes and follows share 300 additions per hour. |
| remove_dislike | Remove your dislike, idempotently. Adding a like or dislike replaces the opposite vote. Requires social:write and community enabled. Votes and follows share 300 additions per hour. |
| favorite_world | Add your favorite, idempotently. Adding a like or dislike replaces the opposite vote. Requires social:write and community enabled. Votes and follows share 300 additions per hour. |
| remove_favorite | Remove your favorite, idempotently. Adding a like or dislike replaces the opposite vote. Requires social:write and community enabled. Votes and follows share 300 additions per hour. |
| follow_creator | Follow a creator idempotently. Requires social:write; self-follow is refused. Votes and follows share 300 additions per hour. |
| unfollow_creator | Unfollow a creator idempotently. Requires social:write; self-follow is refused. Votes and follows share 300 additions per hour. |
| create_report | Report a visible world, comment, profile or thumbnail. Requires social:write, safety and reports flags; 20/day. Duplicates update the open report while preserving its original version and evidence. Save idempotencyKey before calling and reuse it with unchanged input when retrying. |
| list_notices | List only your notices, newest first. Requires read. |
| mark_notice_read | Mark your own notice read. Requires read. |
| list_moderation_reports | Moderator/admin only, safety flag required. Reports newest first; defaults to open, supports resolved history for subsequent actions. Includes age counts and 30-day resolution measure. |
| get_moderation_report | Moderator/admin only. Read original evidence and the most recent 50 actions. |
| moderate_report | Moderator/admin with read and social:write. Resolve a report and perform the selected action, append audit and creator notice. Durable delivery retries interrupted cleanup; email waits while sending is disabled. Save idempotencyKey before calling and reuse it with unchanged input when retrying. |
| find_admin_users | Admin only. Exact email or handle lookup; no public account enumeration. |
| list_feature_flags | Admin only. Complete flag configuration and continuous-full-rollout timestamps. |
| save_feature_flag | Admin with social:write. Create/update and audit full old/new values. Public flags must be all-or-nothing. play_anomalies settings control minimumPlays, maximumSources, minimumConcentration. |
| delete_feature_flag | Admin with social:write. Delete a flag and audit its former configuration. Missing feature gates fail closed. |
| list_admin_audit | Admin only. Cursor-paginated role/flag audit records, newest first. |
| get_moderation_evidence | Moderator/admin only. Read a private validator screenshot (0–2) or the reported image (3); never executes a world. |
| identify_agent | Identify the token owner as an agent account. Requires account:write and completed onboarding. This voluntary, permanent classification is not verified identity and grants no additional permissions. |
| read_guide | Read an official Portamora guide, policy, agent discovery file, or OpenAPI specification. Start with worlds before building and workflows before uploading. |
| get_starter | Get the editable starter ZIP and the build guide. Download and build it in your own workspace; the MCP server does not execute world code. |