Portamora

Discover atmospheric 3D worlds, read controls, and build and publish authorized environments.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
93%
Integridad del esquema
75%
Calidad de los nombres
100%
Riesgo de envenenamiento
80%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'list_comments' description contains placeholder texten list_comments
  • INFOTool description contains placeholder or incomplete texten list_comments

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,854Tokens (definiciones de herramientas)
~4.1 KBTamaño de respuesta típico
Impacto significativo en la atención (3.01% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "mcp": {
      "url": "https://portamora.app/mcp"
    }
  }
}

Puntos de conexión remotos

https://portamora.app/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (8)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢search_worlds(q, sort, days, tag, creator, ...)

Browse and search published worlds. Sort by newest, liked, or trending. The days filter accepts 1, 7 (API default), or 30 UTC calendar days including today, or all for any sort. Newest filters publication date unless days=all or creator is specified. Liked ranks period likes, or lifetime likes when days=all. Trending ranks period activity, or lifetime plays and likes when days=all, with publication-age decay in both cases. Older worlds may appear in activity rankings. The Explore website defaults to liked/all; API defaults remain newest/7. Search text can include exact #tags; 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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "default": ""
    },
    "sort": {
      "type": "string",
      "enum": [
        "newest",
        "liked",
        "trending"
      ],
      "default": "newest"
    },
    "days": {
      "type": [
        "integer",
        "string"
      ],
      "enum": [
        1,
        7,
        30,
        "all"
      ],
      "default": 7
    },
    "tag": {
      "type": "string",
      "pattern": "^\\s*#?[A-Za-z0-9][A-Za-z0-9_-]{0,31}\\s*$",
      "description": "One to 32 tag characters; optional leading #, surrounding whitespace, and uppercase letters are normalized."
    },
    "creator": {
      "type": "string",
      "minLength": 3,
      "maxLength": 30,
      "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])$",
      "description": "An existing creator handle; lookup ignores case."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "default": 24
    },
    "cursor": {
      "type": "string",
      "maxLength": 1024
    }
  },
  "required": [],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "data": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 16,
                "maxLength": 16,
                "pattern": "^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
                "description": "Case-sensitive world identifier with 10 safe-alphabet characters after the prefix."
              },
              "title": {
                "type": "string"
              },
              "tagline": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 32,
                  "pattern": "^[a-z0-9][a-z0-9_-]*$"
                }
              },
              "currentVersionId": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 18,
                    "maxLength": 18,
                    "pattern": "^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
                    "description": "Case-sensitive version identifier with 10 safe-alphabet characters after the prefix."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "publishedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "playsTotal": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "likesTotal": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "dislikesTotal": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "links": {
                "type": "object",
                "properties": {
                  "self": {
                    "type": "string",
                    "format": "uri"
                  },
                  "details": {
                    "type": "string",
                    "format": "uri"
                  },
                  "play": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uri"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "thumbnail": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uri"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "self",
                  "details",
                  "play",
                  "thumbnail"
                ],
                "additionalProperties": false
              },
              "creator": {
                "type": "object",
                "properties": {
                  "handle": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 30,
                    "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])$"
                  },
                  "displayName": {
                    "type": "string"
                  },
                  "links": {
                    "type": "object",
                    "properties": {
                      "profile": {
                        "type": "string",
                        "format": "uri"
                      }
                    },
                    "required": [
                      "profile"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "handle",
                  "displayName",
                  "links"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "id",
              "title",
              "tagline",
              "description",
              "tags",
              "currentVersionId",
              "publishedAt",
              "playsTotal",
              "likesTotal",
              "dislikesTotal",
              "links",
              "creator"
            ],
            "additionalProperties": false
          }
        },
        "nextCursor": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "items",
        "nextCursor"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_world(worldId)

Read a public world page. Offline and removed worlds retain a notice; drafts are not exposed.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "worldId": {
      "type": "string",
      "minLength": 16,
      "maxLength": 16,
      "pattern": "^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
      "description": "Case-sensitive world identifier with 10 safe-alphabet characters after the prefix."
    }
  },
  "required": [
    "worldId"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 16,
          "maxLength": 16,
          "pattern": "^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
          "description": "Case-sensitive world identifier with 10 safe-alphabet characters after the prefix."
        },
        "title": {
          "type": "string"
        },
        "tagline": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "thumbnailKey": {
          "type": [
            "string",
            "null"
          ]
        },
        "status": {
          "type": "string",
          "enum": [
            "published",
            "offline",
            "removed"
          ]
        },
        "currentVersionId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 18,
              "maxLength": 18,
              "pattern": "^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
              "description": "Case-sensitive version identifier with 10 safe-alphabet characters after the prefix."
            },
            {
              "type": "null"
            }
          ]
        },
        "publishedAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "playsTotal": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "likesTotal": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "dislikesTotal": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "bytesUnpacked": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32,
            "pattern": "^[a-z0-9][a-z0-9_-]*$"
          }
        },
        "creator": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 15,
              "maxLength": 15,
              "pattern": "^user_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
              "description": "Case-sensitive user identifier with 10 safe-alphabet characters after the prefix."
            },
            "handle": {
              "type": "string",
              "minLength": 3,
              "maxLength": 30,
              "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])$"
            },
            "displayName": {
              "type": "string"
            },
            "bio": {
              "type": "string"
            },
            "avatarKey": {
              "type": [
                "string",
                "null"
              ]
            },
            "links": {
              "type": "object",
              "properties": {
                "self": {
                  "type": "string",
                  "format": "uri"
                },
                "profile": {
                  "type": "string",
                  "format": "uri"
                },
                "avatar": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uri"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "self",
                "profile",
                "avatar"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "id",
            "handle",
            "displayName",
            "bio",
            "avatarKey",
            "links"
          ],
          "additionalProperties": false
        },
        "links": {
          "type": "object",
          "properties": {
            "self": {
              "type": "string",
              "format": "uri"
            },
            "details": {
              "type": "string",
              "format": "uri"
            },
            "play": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri"
                },
                {
                  "type": "null"
                }
              ]
            },
            "thumbnail": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "self",
            "details",
            "play",
            "thumbnail"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "id",
        "title",
        "tagline",
        "description",
        "thumbnailKey",
        "status",
        "currentVersionId",
        "publishedAt",
        "playsTotal",
        "likesTotal",
        "dislikesTotal",
        "bytesUnpacked",
        "tags",
        "creator",
        "links"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_version(versionId)

Read the current ready version of a published world. Unpublished versions are not exposed.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "versionId": {
      "type": "string",
      "minLength": 18,
      "maxLength": 18,
      "pattern": "^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
      "description": "Case-sensitive version identifier with 10 safe-alphabet characters after the prefix."
    }
  },
  "required": [
    "versionId"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 18,
          "maxLength": 18,
          "pattern": "^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
          "description": "Case-sensitive version identifier with 10 safe-alphabet characters after the prefix."
        },
        "worldId": {
          "type": "string",
          "minLength": 16,
          "maxLength": 16,
          "pattern": "^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
          "description": "Case-sensitive world identifier with 10 safe-alphabet characters after the prefix."
        },
        "versionNumber": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        "sdkVersion": {
          "type": "number",
          "const": 1
        },
        "bytesUnpacked": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "notes": {
          "type": [
            "string",
            "null"
          ]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
        },
        "packagePath": {
          "type": "string"
        },
        "controls": {
          "default": null,
          "anyOf": [
            {
              "type": "object",
              "propertyNames": {
                "type": "string",
                "pattern": "^(Key[A-Z]|Digit[0-9]|ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Space|ShiftLeft|ShiftRight|Mouse)$"
              },
              "additionalProperties": {
                "type": "string",
                "minLength": 1,
                "maxLength": 160
              }
            },
            {
              "type": "null"
            }
          ]
        },
        "links": {
          "type": "object",
          "properties": {
            "self": {
              "type": "string",
              "format": "uri"
            },
            "world": {
              "type": "string",
              "format": "uri"
            },
            "play": {
              "type": "string",
              "format": "uri"
            },
            "entry": {
              "type": "string",
              "format": "uri"
            }
          },
          "required": [
            "self",
            "world",
            "play",
            "entry"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "id",
        "worldId",
        "versionNumber",
        "sdkVersion",
        "bytesUnpacked",
        "notes",
        "createdAt",
        "packagePath",
        "controls",
        "links"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_creator(handle)

Read an active creator profile. Email addresses, roles and account state are never exposed.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "handle": {
      "type": "string",
      "minLength": 3,
      "maxLength": 30,
      "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])$",
      "description": "An existing creator handle; lookup ignores case."
    }
  },
  "required": [
    "handle"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 15,
          "maxLength": 15,
          "pattern": "^user_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
          "description": "Case-sensitive user identifier with 10 safe-alphabet characters after the prefix."
        },
        "handle": {
          "type": "string",
          "minLength": 3,
          "maxLength": 30,
          "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])$"
        },
        "displayName": {
          "type": "string"
        },
        "bio": {
          "type": "string"
        },
        "avatarKey": {
          "type": [
            "string",
            "null"
          ]
        },
        "links": {
          "type": "object",
          "properties": {
            "self": {
              "type": "string",
              "format": "uri"
            },
            "profile": {
              "type": "string",
              "format": "uri"
            },
            "avatar": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "self",
            "profile",
            "avatar"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "id",
        "handle",
        "displayName",
        "bio",
        "avatarKey",
        "links"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_community

Read server-evaluated community and play-counting flags. Personal state is returned by me.get. Lists use cursor pagination.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
🟢list_comments(worldId, limit, cursor)

Read plain-text comments, newest first, with deletion placeholders. Viewer controls are private; no-store. Lists use cursor pagination.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "worldId": {
      "type": "string",
      "minLength": 16,
      "maxLength": 16,
      "pattern": "^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
      "description": "Case-sensitive world identifier with 10 safe-alphabet characters after the prefix."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "default": 24
    },
    "cursor": {
      "type": "string",
      "maxLength": 1024
    }
  },
  "required": [
    "worldId"
  ],
  "additionalProperties": false
}
🟢read_guide(guide)

Read an official Portamora guide, policy, agent discovery file, or OpenAPI specification. Start with worlds before building and workflows before uploading.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "guide": {
      "type": "string",
      "enum": [
        "agents",
        "worlds",
        "api",
        "workflows",
        "mcp",
        "terms",
        "privacy",
        "discovery",
        "openapi"
      ]
    }
  },
  "required": [
    "guide"
  ],
  "additionalProperties": false
}
🟢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.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Prompts recomendados

search_research
Search for information about [topic] using Portamora
Herramientas esperadas: search_worlds
find_specific
Find [specific item] using Portamora
Herramientas esperadas: search_worlds
retrieve_data
Get details about [item] from Portamora
Herramientas esperadas: get_world
fetch_info
Fetch [information type] using Portamora
Herramientas esperadas: get_world
list_items
List all [items] available in Portamora
Herramientas esperadas: list_comments

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada8 herramientas