Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization required, Bearer, issuer https://portamora.app
Authorization required, Bearer, issuer https://portamora.app
Authorization required, Bearer, issuer https://portamora.app
Authorization required, Bearer, issuer https://portamora.app
Authorization required, Bearer, issuer https://portamora.app
Authorization not required → required, Bearer, issuer https://portamora.app
Changed the definition of "get_world"
⟨329 unchanged words⟩ ]},"title":{"type":"string"},"visibility":{"enum":["public","unlisted"],"type":"string"}},"required":["id","title"," ⟨27 unchanged words⟩
Removed "create_comment", "create_image_upload", "create_report" and 38 more; changed the definition of "get_creator", "get_version", "get_world" and 2 more (49 tools before, 8 now)
before
—after
{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"avatarKey":{"type":["string","null"]},"bio":{"type":"string"},"displayName":{"type":"string"},"handle":{"maxLength":30,"minLength":3,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])$","type":"string"},"id":{"description":"Case-sensitive user identifier with 10 safe-alphabet characters after the prefix.","maxLength":15,"minLength":15,"pattern":"^user_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$","type":"string"},"links":{"additionalProperties":false,"properties":{"avatar":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}]},"profile":{"format":"uri","type":"string"},"self":{"format":"uri","type":"string"}},"required":["self","profile","avatar"],"type":"object"}},"required":["id","handle","displayName","bio","avatarKey","links"],"type":"object"},"status":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["status","data"],"type":"object"}Certificate recorded, valid to 2027-03-25
Authorization not required
First tool surface recorded: 49 tools (server version 0.1.0)
Showing the latest 11 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
before
—after
{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"bytesUnpacked":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"controls":{"anyOf":[{"additionalProperties":{"maxLength":160,"minLength":1,"type":"string"},"propertyNames":{"pattern":"^(Key[A-Z]|Digit[0-9]|ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Space|ShiftLeft|ShiftRight|Mouse)$","type":"string"},"type":"object"},{"type":"null"}],"default":null},"createdAt":{"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":"string"},"id":{"description":"Case-sensitive version identifier with 10 safe-alphabet characters after the prefix.","maxLength":18,"minLength":18,"pattern":"^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$","type":"string"},"links":{"additionalProperties":false,"properties":{"entry":{"format":"uri","type":"string"},"play":{"format":"uri","type":"string"},"self":{"format":"uri","type":"string"},"world":{"format":"uri","type":"string"}},"required":["self","world","play","entry"],"type":"object"},"notes":{"type":["string","null"]},"packagePath":{"type":"string"},"sdkVersion":{"const":1,"type":"number"},"versionNumber":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"worldId":{"description":"Case-sensitive world identifier with 10 safe-alphabet characters after the prefix.","maxLength":16,"minLength":16,"pattern":"^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$","type":"string"}},"required":["id","worldId","versionNumber","sdkVersion","bytesUnpacked","notes","createdAt","packagePath","controls","links"],"type":"object"},"status":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["status","data"],"type":"object"}before
—after
{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"bytesUnpacked":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"creator":{"additionalProperties":false,"properties":{"avatarKey":{"type":["string","null"]},"bio":{"type":"string"},"displayName":{"type":"string"},"handle":{"maxLength":30,"minLength":3,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])$","type":"string"},"id":{"description":"Case-sensitive user identifier with 10 safe-alphabet characters after the prefix.","maxLength":15,"minLength":15,"pattern":"^user_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$","type":"string"},"links":{"additionalProperties":false,"properties":{"avatar":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}]},"profile":{"format":"uri","type":"string"},"self":{"format":"uri","type":"string"}},"required":["self","profile","avatar"],"type":"object"}},"required":["id","handle","displayName","bio","avatarKey","links"],"type":"object"},"currentVersionId":{"anyOf":[{"description":"Case-sensitive version identifier with 10 safe-alphabet characters after the prefix.","maxLength":18,"minLength":18,"pattern":"^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$","type":"string"},{"type":"null"}]},"description":{"type":"string"},"dislikesTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"id":{"description":"Case-sensitive world identifier with 10 safe-alphabet characters after the prefix.","maxLength":16,"minLength":16,"pattern":"^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$","type":"string"},"likesTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"links":{"additionalProperties":false,"properties":{"details":{"format":"uri","type":"string"},"play":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}]},"self":{"format":"uri","type":"string"},"thumbnail":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}]}},"required":["self","details","play","thumbnail"],"type":"object"},"playsTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"publishedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"status":{"enum":["published","offline","removed"],"type":"string"},"tagline":{"type":"string"},"tags":{"items":{"maxLength":32,"minLength":1,"pattern":"^[a-z0-9][a-z0-9_-]*$","type":"string"},"type":"array"},"thumbnailKey":{"type":["string","null"]},"title":{"type":"string"}},"required":["id","title","tagline","description","thumbnailKey","status","currentVersionId","publishedAt","playsTotal","likesTotal","dislikesTotal","bytesUnpacked","tags","creator","links"],"type":"object"},"status":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["status","data"],"type":"object"}{"additionalProperties":false,"properties":{"guide":{"enum":["agents","worlds","api","workflows","mcp"," ⟨10 unchanged words⟩
⟨10 unchanged words⟩ trending. The days filter accepts 1, 7 (API default), or 30 UTC calendar days includingtoday. Use days=all with sort=newest totoday,discoveror allpublishedforworlds.any sort. Newest filters publication date unless days=all or creator isspecified;specified.likedLikedandrankstrendingperiodranklikes, or lifetime likes when days=all. Trending ranks period activity,duringorthelifetimewindowplays and likes when days=all, with publication-age decay in both cases. Older worlds mayincludeappearolderinworlds.activity rankings. The Explore website defaults to liked/all; API defaults remain newest/7. Search text can include exact #tags; custom tags ⟨31 unchanged words⟩
before
—after
{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"creator":{"additionalProperties":false,"properties":{"displayName":{"type":"string"},"handle":{"maxLength":30,"minLength":3,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])$","type":"string"},"links":{"additionalProperties":false,"properties":{"profile":{"format":"uri","type":"string"}},"required":["profile"],"type":"object"}},"required":["handle","displayName","links"],"type":"object"},"currentVersionId":{"anyOf":[{"description":"Case-sensitive version identifier with 10 safe-alphabet characters after the prefix.","maxLength":18,"minLength":18,"pattern":"^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$","type":"string"},{"type":"null"}]},"description":{"type":"string"},"dislikesTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"id":{"description":"Case-sensitive world identifier with 10 safe-alphabet characters after the prefix.","maxLength":16,"minLength":16,"pattern":"^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$","type":"string"},"likesTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"links":{"additionalProperties":false,"properties":{"details":{"format":"uri","type":"string"},"play":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}]},"self":{"format":"uri","type":"string"},"thumbnail":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}]}},"required":["self","details","play","thumbnail"],"type":"object"},"playsTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"publishedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"tagline":{"type":"string"},"tags":{"items":{"maxLength":32,"minLength":1,"pattern":"^[a-z0-9][a-z0-9_-]*$","type":"string"},"type":"array"},"title":{"type":"string"}},"required":["id","title","tagline","description","tags","currentVersionId","publishedAt","playsTotal","likesTotal","dislikesTotal","links","creator"],"type":"object"},"type":"array"},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"type":"object"},"status":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["status","data"],"type":"object"}Create comment — Post 1–2,000 plain-text characters. Requires social:write, community and comments enabled. One per ten seconds and thirty per hour. Lists use cursor pagination. Reuse idempotencyKey on retries for 24 hours.
Create image upload — Request an avatar or thumbnail upload policy (4 MiB; PNG/JPEG/WebP; 20 images/account/day). Only processed images are promoted. Repeat the same idempotencyKey for retries; keys are retained for 24 hours.
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. Reuse idempotencyKey with the same body on retries.
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. Repeat the same idempotencyKey for retries; keys are retained for 24 hours.
Delete comment — Erase a comment body and preserve its place. Only the author or world creator, with social:write. Lists use cursor pagination.
Delete feature flag — Admin with social:write. Delete a flag and audit its former configuration. Missing feature gates fail closed.
Delete world — Hide the world immediately and queue deletion of every stored object version. Confirm its exact title. Requires worlds:write.
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. Lists use cursor pagination.
Edit comment — Edit your own live comment. Requires social:write and comments enabled. Lists use cursor pagination.
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. Lists use cursor pagination.
Find admin users — Admin only. Exact email or handle lookup; no public account enumeration.
Follow creator — Follow a creator idempotently. Requires social:write; self-follow is refused. Votes and follows share 300 additions per hour. Lists use cursor pagination.
Get moderation evidence — Moderator/admin only. Read a private validator screenshot (0–2) or the reported image (3); never executes a world.
Get moderation report — Moderator/admin only. Read original evidence and the most recent 50 actions.
Get my profile — Read your private profile (read scope for bearer tokens).
Get my version — Read an owned version including validation results.
Get my world — Read an owned draft, published, or offline world.
Get upload — Poll upload status and outputs (worlds:write scope). Read named validation checks from GET /me/versions/{versionId} with read scope.
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.
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. Lists use cursor pagination.
List admin audit — Admin only. Cursor-paginated role/flag audit records, newest first.
List favorites — List only your saved published worlds, newest favorite first. Requires read; never cached. Lists use cursor pagination.
List feature flags — Admin only. Complete flag configuration and continuous-full-rollout timestamps.
List followed creators — List your followed creators, newest follow first. Requires read. Lists use cursor pagination.
List following worlds — List published worlds by creators you follow, newest published first. Requires read; never cached. Lists use cursor pagination.
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.
List my versions — List an owned world’s immutable versions, checks, notes and dates.
List my worlds — List your worlds and 7/30-day statistics, with opaque pagination. Requires read scope.
List notices — List only your notices, newest first. Requires read.
Mark notice read — Mark your own notice read. Requires read.
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. Reuse idempotencyKey with the same body on retries.
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.
Refresh upload — Retrieve a pending upload policy within the original 15-minute window.
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. Lists use cursor pagination.
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. Lists use cursor pagination.
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. Lists use cursor pagination.
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.
Take world offline — Take your world offline. Requires worlds:write.
Unfollow creator — Unfollow a creator idempotently. Requires social:write; self-follow is refused. Votes and follows share 300 additions per hour. Lists use cursor pagination.
Update world — Edit owned world metadata, tags, thumbnail and comments switch. Requires worlds:write.