← Receivers

world:create-group

world family

mcp

Create a group — a D1 campaign/collection row, or (with groupSlug+parent) a substrate group under a parent the caller controls

Effect
ask
Awaits an outcome — the call returns the response below.
Caller
manage_groups
The class of authority the caller must already hold, decided from the attested context with no round trip.
Reversible
yes
The effect can be undone by a later call.

Send it with your agent

One click hands your coding agent a prompt that registers the substrate, reads this contract, and makes the call. Launch opens the app; the others copy the prompt.

Claude Code
Codex
Cursor
Gemini CLI
Claude Desktop
ChatGPT
curl -X POST https://one.ie/api/ask/world:create-group \
  -H "Authorization: Bearer $ONE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data": { "name": <string> }}'

The key is never in a link. npx -y @oneie/cli login writes it to ~/.config/oneie/key on your machine.

Request

Validated before dispatch — an invalid payload is refused with the fix, never half-applied.

  • name string required
  • type company | community | dao | … | "group" optional One of the nine group-type values in schema/one.tql, or the D1-only "group". The substrate path (groupSlug+parent) accepts ONLY the nine — TypeDB's @values constraint refuses anything else and that write would fail silently.
  • groupSlug string optional Bare slug for a SUBSTRATE group; the gid is always `group:<groupSlug>`. Requires `parent` — a slug with no parent would mint an unparented root workspace and is refused. NOT named `slug`: on the service lane `/api/ask` reads `payload.slug ?? payload.workspace` as the workspace the caller NOMINATES for itself, so a field called `slug` here would silently re-identify the caller as the group it is trying to create.
  • parent string optional gid of the parent group, e.g. "group:one". Requires `groupSlug`. It NAMES a target and never authorizes one: the caller must control the parent workspace or the call is refused.
  • tags string[] optional

Response

What comes back from the call.

  • gid string `group:<groupSlug>` on the substrate path; a random trace id on the bare D1 path

Traffic

Every call to world:create-group, counted where it is dispatched — over HTTP or in-process alike. Aggregate only — no actor, no payload, no workspace.

Counting…

Wiring

Every place in the open source that names world:create-group, and the file that answers it. Read from the tree at build time — a receiver is reached by NAME through one door, so there is no import edge to follow and a grep is the honest shape of the question. Structure, not volume — the count is in Traffic above.

Called from

UI 1
  • one.ie/web/src/components/in/NewCampaignSheet.tsx:111
API route 3
  • one.ie/web/src/lib/ads-summary.ts:15
  • one.ie/web/src/lib/record-dispatch.ts:17
  • one.ie/web/src/lib/world-receivers.ts:869
Agent runtime 1
  • channels/src/campaign-swarm.ts:7
MCP 1
  • own_me · packages/mcp/src/tools/from-registry.ts:15
SDK 1
  • packages/sdk/src/templates.ts:28
Docs 2
  • one.ie/web/src/content/docs/mcp.md:214
  • one.ie/web/src/content/docs/sdk.md:302
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "type": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "company",
            "community",
            "dao",
            "friends",
            "org",
            "personal",
            "team",
            "workspace",
            "world"
          ]
        },
        {
          "type": "string",
          "const": "group"
        }
      ],
      "description": "One of the nine group-type values in schema/one.tql, or the D1-only \"group\". The substrate path (groupSlug+parent) accepts ONLY the nine — TypeDB's @values constraint refuses anything else and that write would fail silently."
    },
    "groupSlug": {
      "description": "Bare slug for a SUBSTRATE group; the gid is always `group:<groupSlug>`. Requires `parent` — a slug with no parent would mint an unparented root workspace and is refused. NOT named `slug`: on the service lane `/api/ask` reads `payload.slug ?? payload.workspace` as the workspace the caller NOMINATES for itself, so a field called `slug` here would silently re-identify the caller as the group it is trying to create.",
      "type": "string"
    },
    "parent": {
      "description": "gid of the parent group, e.g. \"group:one\". Requires `groupSlug`. It NAMES a target and never authorizes one: the caller must control the parent workspace or the call is refused.",
      "type": "string"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "name"
  ]
}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "gid": {
      "type": "string",
      "description": "`group:<groupSlug>` on the substrate path; a random trace id on the bare D1 path"
    }
  },
  "required": [
    "gid"
  ]
}