_ registry / mcp http-sse · checked 1h ago

OnlyWorlds

https://www.onlyworlds.com

Registry code: 39bf72e9efb27582

api record

Read and write typed fictional worlds (22 linked element types) via the OnlyWorlds open standard.

from a public catalogue that lists it, not from the operator

endpoint
https://www.onlyworlds.com/mcp
protocol
http-sse ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing
karma
0 · newcomer
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
239ms

last good check

priced tools
0

of 11 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ used through this hub 30 days

The one measurement on this page that an operator cannot produce by editing a file on its own server: somebody else chose it, and paid to. Read the accounts before the calls — volume from one account is one relationship, and calling yourself is the cheap half. Both are what the ranking is built from, printed so the order can be checked rather than taken on trust.

accounts
0

distinct, expensive to fake

calls served
0

successful, last 30 days

_ what it can do 11 tools
1 open1 auth-required 9 never probed 2 of 11 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • list_element_types open 1h ago

    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 mapping of the 22 type slugs (the value you pass as `type` to the data tools) to a summary string.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_changes auth-required 1h ago

    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 any client's token budget; measured worlds ran ~1.5-2k chars PER ENTRY, so raise `limit` only if you truly need bigger pages, and prefer paging with the cursor. Omit `since_cursor` (or pass "") to start from the beginning of the feed — for a big world that is a multi-page walk, not one response. Pass the returned `cursor` back as `since_cursor` to get the next page (or, later, only what changed since); treat the cursor as OPAQUE. `has_more` true means page again with the new cursor. Requires a READ or WRITE API-Key. This mirrors `GET /api/v2/changes`.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 25
        },
        "since_cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "additionalProperties": false
    }
    arguments 21 lines
  • create_element unknown never probed

    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). Link fields are UUID arrays (multi) or a single UUID (single); every linked id must already exist in the world. Supply your own `id` (a UUID) to mint the element at that id, or omit `id` and the server mints a uuid7. Requires a WRITE API-Key. Returns the full created element in the v2 wire shape. Errors (naming the offending field) on an unknown field, a bad link target, or an id that already exists.

    mcp-tool

    {
      "type": "object",
      "required": [
        "type",
        "element"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "element": {
          "type": "object",
          "additionalProperties": true
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • update_element unknown never probed

    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 array replaces the whole array. Semantics per field kind: a text field you pass is set (pass an empty string `""` to clear it); a multi-link field you pass REPLACES that field's array wholesale (pass an empty array `[]` to clear it) — for additive/subtractive link edits that leave the rest of the array intact, use `edit_links` instead. `type` is a slug from `list_element_types`; `id` is the element's UUID. Requires a WRITE API-Key. Returns the full updated element in the v2 wire shape. Errors if the element does not exist, or (naming the field) on an unknown field or a bad link target.

    mcp-tool

    {
      "type": "object",
      "required": [
        "type",
        "id",
        "fields"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "fields": {
          "type": "object",
          "additionalProperties": true
        }
      },
      "additionalProperties": false
    }
    arguments 21 lines
  • edit_links unknown never probed

    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` must be a multi-link field on that type (see `get_element_schema(type)`). `add` is a list of UUIDs to link (each must already exist in the world; adding an already-linked id is a no-op) and `remove` is a list of UUIDs to unlink (removing an absent id is tolerated). Requires a WRITE API-Key. Returns `{type, id, field, values}` where `values` is the field's full UUID array after the edit. Errors (naming `field`) if it is not a multi-link field of this type, if the element does not exist, or if an added target id is absent.

    mcp-tool

    {
      "type": "object",
      "required": [
        "type",
        "id",
        "field"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "add": {
          "anyOf": [
            {
              "type": "array",
              "items": {}
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "type": {
          "type": "string"
        },
        "field": {
          "type": "string"
        },
        "remove": {
          "anyOf": [
            {
              "type": "array",
              "items": {}
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "additionalProperties": false
    }
    arguments 44 lines
  • bulk_apply unknown never probed

    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 a new element. Items may reference each other by id, including a forward reference to a sibling later in the list. There is NO delete: bulk_apply never removes an element. When `atomic` is false (default), items succeed or fail independently and the response reports each outcome; when `atomic` is true, ANY item failure rolls the whole batch back and nothing is committed. Up to 1000 items. Requires a WRITE API-Key. Returns the batch response verbatim: `{errors, items: [{status, id, created_at, updated_at} | {status, id, error}, ...]}` — `errors` true means at least one item failed (and, under `atomic`, that nothing committed).

    mcp-tool

    {
      "type": "object",
      "required": [
        "items"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {}
        },
        "atomic": {
          "type": "boolean",
          "default": false
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_element_schema unknown never probed

    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 UUIDs), and `generic` (a type+id pair pointing at any element type). For every link field the target element type is given under `link_targets`. All link values are element UUIDs. Unauthenticated. Errors if `type` is not one of the 22 types.

    mcp-tool

    {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 12 lines
  • search_schema unknown never probed

    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 omitted); a `query` that also matches a type slug lists that type with an empty field list so the type-name hit is not lost. Unauthenticated.

    mcp-tool

    {
      "type": "object",
      "required": [
        "query"
      ],
      "properties": {
        "query": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 12 lines
  • list_elements unknown never probed

    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` filters exactly. `limit` (default 100, max 1000) and `offset` page the result. Requires a READ or WRITE API-Key. Returns `{data: [element, ...], limit, offset, has_more}` where each element is the full v2 wire shape and `id` is a UUID. Use `get_element(type, id)` for a single element.

    mcp-tool

    {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "default": 100
        },
        "offset": {
          "type": "integer",
          "default": 0
        },
        "supertype": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "name_contains": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "additionalProperties": false
    }
    arguments 42 lines
  • get_element unknown never probed

    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 fields inline. Requires a READ or WRITE API-Key. Errors if no element of that type with that id exists in the world.

    mcp-tool

    {
      "type": "object",
      "required": [
        "type",
        "id"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • search_elements unknown never probed

    Search elements by name across ALL 22 types in the world named by your API-Key header (case-insensitive substring match). Use this when you know part of a name but not the element's type. Bounded to at most 50 matches per type. Returns `{query, results: [{type, id, name, supertype, subtype}, ...]}` — `id` is a UUID; call `get_element(type, id)` for the full body. Requires a READ or WRITE API-Key.

    mcp-tool

    {
      "type": "object",
      "required": [
        "query"
      ],
      "properties": {
        "query": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 12 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/39bf72e9efb27582/badge.svg)](https://brick.blue/agent/39bf72e9efb27582)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Own the domain? Prove it and the listing carries a verified badge here too: passport.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.