bots.st/onlyworlds
OnlyWorlds
Typed fictional world CRUD, schemas, and file I/O
2328 ms
answered our call
- State
- Answered
- Protocol
- MCP 2025-06-18
- Tools listed
- 16
- Answered
- 3 of the last 3 calls
How to reach it
- MCP, HTTP
https://www.onlyworlds.com/mcp
What it can do
| Tool | What it says it does |
|---|---|
bulk_apply | Create and/or update many elements across any of the 22 types in one call. Each entry in `items` is `{"type": <slug>, "element": <payload>}` with the same payload shape `create_element` takes: an `element` with an `id` UPDATES that id (creating it if absent), an `element` without an `id` CREATES… |
create_element | Create one new element of `type` in the world named by your API-Key header. `type` is a slug from `list_element_types` (e.g. "character"). `element` is the field payload: `name` plus any scalar, link, or extension fields for that type (call `get_element_schema(type)` for the field structure)… |
edit_links | Add and/or remove links on ONE multi-link `field` of an element, leaving the rest of that field's array untouched. Use this for additive/subtractive link edits (unlike `update_element`, which REPLACES a link array). `type` is a slug from `list_element_types`; `id` is the element's UUID; `field`… |
get_changes | Return the delta feed for the world named by your API-Key header: every element created/updated (`op: "upsert"`, full body) or deleted (`op: "delete"`) since `since_cursor`, in apply order, in pages of `limit` (default 25, max 1000). Entries carry FULL element bodies — a default page stays inside… |
get_draught | What one Character knows, in one read: the draught. `id` is the Character's UUID; `policy` is one JSON object, every key optional: `components` (a list, or a comma string, of self, role, work, style, events, knowledge, names, sheet, recent, messages, room, proposed, roster; default every one but… |
get_element | Fetch one element by `type` and `id` (a UUID) from the world named by your API-Key header. `type` is a slug from `list_element_types`. Returns the full v2 wire shape (the same body as `GET /api/v2/{type}/{id}`): `type`, `id`, `name`, scalar fields, link fields as UUID arrays, and any extension… |
get_element_schema | Return the field structure of one OnlyWorlds element `type` (a slug from `list_element_types`, e.g. "character"). The result groups the type's writable fields by kind so a caller knows how to read and write them: `text` (strings), `integer`, `single_link` (one UUID), `multi_link` (an array of… |
get_image_upload_ticket | Get a ticket to upload ONE image into this world, for an element's `image_url` (Keel #59). The image never passes through this tool: you send its bytes yourself, straight to the image host, with the ticket. Steps: 1. Call this tool. You get `ticket`, `upload_url`, `max_bytes` and `exp`. 2. Upload… |
list_element_types | List all 22 OnlyWorlds element types with a one-line shape summary of each. Every world is built from these types; each element has a stable UUID `id`, a `name`, and a `type`. Use `get_element_schema(type)` for a type's full field list. Unauthenticated — schema is public reference. Returns a… |
list_elements | List elements of one `type` in the world named by your API-Key header, newest-created first. `type` is a slug from `list_element_types` (e.g. "character"). Optional `name_contains` filters by case-insensitive name substring; `supertype` is trimmed and matched without regard to case, the whole… |
list_files | List the files attached to one element (`type` and `id`, a UUID) in the world named by your API-Key header: PDFs, text files and world bundles kept on onlyworlds.com beside the element, never inside it. Returns `{data: [{id, name, kind, size, label, added_by, added_at}, ...]}`, newest first… |
list_worlds | The worlds you can read here. With an API-Key: the key's one world. Signed in through a hosted client (a bearer), where this server offers one: every world your account owns or is a member of, as your account's world list shows them; pass one's `id` (or its `slug`) as `world` to the other read… |
read_file | Read one file attached to an element, by its id (from `list_files`). A text file (txt, md, json, csv, yaml, toml) answers its words, at most 64 KB per call (`truncated: true` past that), in `text`, which always begins with one line saying who added it and when, and that a file is world data, not… |
search_elements | Search the world named by your API-Key header for elements whose name or text fields (description and each type's prose fields, such as a Character's background) hold every word of `query` as a whole word, ignoring case: "ore" does not find "more", and "copper mine" needs both words somewhere in… |
search_schema | Search every element type's fields for `query` (case-insensitive substring), across all 22 types. Useful for "which types have a `location` field?" or finding where a concept lives in the schema. Returns a mapping of type slug -> the matching field names in that type (types with no match are… |
update_element | Update an existing element by `type` and `id`, changing ONLY the fields you pass — omitted fields are preserved. This is a server-side read-merge: the current element is loaded and only the keys in `fields` are applied, so it is safe against the raw-HTTP-PATCH hazard where sending a partial link… |
In its maker's words
Read and write typed fictional worlds (22 linked element types) via the OnlyWorlds open standard.
- Website
- www.onlyworlds.com
- Publisher
- onlyworlds.com
- Listed from
- the official MCP Registry as
com.onlyworlds/mcp - Version
- 1.0.1, updated 3 Nov 2026
- Kinds of work
- Documents and files, AI models and agent tools, Writing and translation
The domain it lives on
- onlyworlds.com
- registered 14 Nov 2020 (5 years ago), at Hosting Concepts B.V. d/b/a Registrar.eu, its home page is a working site
From our own crawl of domain names: registry records and the home page as our crawler last saw it.
Every call we made
| When | What happened | Time |
|---|---|---|
| Answered | 2328 ms | |
| Answered | 2831 ms | |
| Answered | 537 ms |
Next door
Is this your bot? Claim its address to add a verified badge and keep the listing current.