> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plungeai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# plungeai_companies

> Your companies (campuses compiled from saved campus + building + office documents), the same as the One API /v1/companies: action list|apply|layout|snapshot|events|ingest|slice; items item_create|item_pause|item_resume|item_retry|item_cancel|item_steer (item_id, text); the gates at the door…


Your companies (campuses compiled from saved campus + building + office documents), the same as the One API /v1/companies: action list|apply|layout|snapshot|events|ingest|slice; items item_create|item_pause|item_resume|item_retry|item_cancel|item_steer (item_id, text); the gates at the door approvals|decide (approval_id, decision approve|reject — only after the user decided; approving a tool permission continues the paused run once); mode (supervised|tiered|autonomous), start|stop (the clock), delete (refused with conflict while running — stop it first). Every action but list takes campus. Refusals name not_found, conflict, invalid or unavailable.

Your companies, action for action the One API's `/v1/companies`: a campus compiled from your saved campus, building and office documents (`kind: campus` / `building` workflows), its items, the gates at its door, its mode and its clock. Every rule lives in company-service; the tool calls it as you. A campus you do not own is the same `not_found` as one that does not exist.

**Returns.** A heading line and the One API's response body as a JSON block, the same body as `structuredContent`. A refusal is `isError: true` text `<word>: <message> (<code>)` with `structuredContent.error = {status, code, message}`, the word standing for the REST status: `invalid` (400/422), `forbidden` (401/403), `not_found` (404), `conflict` (409), `unavailable` (5xx). `delete` of a running campus is `conflict` (stop it first). Details: [Companies](https://mcp.plungeai.com/docs#16-companies).

```bash
# verify
# expect: Companies
curl -s https://mcp.plungeai.com/v1 \
  -H "Authorization: Bearer $PLUNGE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"plungeai_companies","arguments":{"user_request":"which companies do I have?","action":"list"}}}'
```

<Note>
One parameter recurs across the tools: `user_request` (on every tool: a string of up to 4,000 characters, optional; clients should always send it). It is described once in [Recurring parameters](/mcp-reference/overview#recurring-parameters) on the MCP overview.
</Note>

## Input schema

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user_request": {
      "description": "The user's original request, verbatim and in their own words, before you translated it into this call. Always include it — the platform uses it for request context, routing and support diagnostics.",
      "type": "string",
      "maxLength": 4000
    },
    "action": {
      "type": "string",
      "enum": [
        "list",
        "apply",
        "layout",
        "snapshot",
        "events",
        "ingest",
        "slice",
        "item_create",
        "item_pause",
        "item_resume",
        "item_retry",
        "item_cancel",
        "item_steer",
        "approvals",
        "decide",
        "mode",
        "start",
        "stop",
        "delete"
      ]
    },
    "campus": {
      "type": "string",
      "maxLength": 64
    },
    "building": {
      "type": "string",
      "maxLength": 64
    },
    "since": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "events": {
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "building": {
            "type": "string",
            "maxLength": 128
          },
          "type": {
            "type": "string",
            "maxLength": 64
          },
          "item_id": {
            "type": "string",
            "maxLength": 128
          },
          "office": {
            "type": "string",
            "maxLength": 128
          },
          "data": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "maxLength": 128
            },
            "additionalProperties": {}
          },
          "at": {
            "type": "string",
            "maxLength": 64
          }
        },
        "required": [
          "building",
          "type"
        ]
      }
    },
    "item_id": {
      "type": "string",
      "maxLength": 256
    },
    "title": {
      "type": "string",
      "maxLength": 300
    },
    "body": {
      "type": "string",
      "maxLength": 65536
    },
    "kind": {
      "type": "string",
      "enum": [
        "feature",
        "bugfix",
        "docs",
        "research",
        "content",
        "task"
      ]
    },
    "priority": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "tier": {
      "type": "string",
      "maxLength": 32
    },
    "text": {
      "type": "string",
      "maxLength": 65536
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "approved",
        "rejected",
        "expired"
      ]
    },
    "approval_id": {
      "type": "string",
      "maxLength": 256
    },
    "decision": {
      "type": "string",
      "enum": [
        "approve",
        "reject"
      ]
    },
    "note": {
      "type": "string",
      "maxLength": 65536
    },
    "mode": {
      "type": "string",
      "enum": [
        "supervised",
        "tiered",
        "autonomous"
      ]
    }
  },
  "required": [
    "action"
  ]
}
```
