Project Myriad

SS 2026 · Utopian Escape

Command Center

Connection schemas and ABAC shapes

Dark-first control plane

Sign in to Command Center

Action Shapes

Connection action schemas

Review the actual input schema for each implemented connection capability. These shapes compile into ABAC classifications, review items, and generated rule drafts before Claw Patrol or the broker can allow a call.

17 actions
Connections4 built-in
Capabilities17 implemented
Generated rule drafts17 draft rules

Plain English

Translate intent into action rules

Send the request plus the strict built-in capability catalog to Anthropic or OpenAI. The server validates the model output and drops any connector/capability pair outside Myriad’s known subset.

The key is sent only to this local server route for this request and is not stored. Prefer local/dev keys.

No draft yet

Run the expander to see the generated action rule shape, HCL preview, and test token.

linear

Linear

Version 2026-06-11 · SDK/IDL shape pack

4 actions
Read issues and project datalinear.issue.read13 gaps

Read Linear issues and project metadata inside an allowed workspace/team scope.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "teamKey"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for the Linear workspace"
    },
    "workspace": {
      "type": "string",
      "description": "Linear workspace or organization slug"
    },
    "teamKey": {
      "type": "string",
      "maxLength": 16,
      "description": "Linear team key such as MYR"
    },
    "issueId": {
      "type": "string",
      "description": "Optional Linear issue UUID or issue identifier"
    },
    "query": {
      "type": "string",
      "maxLength": 180,
      "description": "Optional bounded issue search query"
    }
  }
}
Post comments on issueslinear.comment.create10 gaps

Create a comment on an in-scope Linear issue.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "issueId",
    "body"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for the Linear workspace"
    },
    "workspace": {
      "type": "string",
      "description": "Linear workspace or organization slug"
    },
    "issueId": {
      "type": "string",
      "description": "Linear issue UUID or issue identifier"
    },
    "body": {
      "type": "string",
      "maxLength": 4000,
      "description": "Comment body supplied by the agent"
    }
  }
}
Update issue statuslinear.issue.updateStatus0 gaps

Move an in-scope Linear issue to an approved workflow status.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "issueId",
    "statusName"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for the Linear workspace"
    },
    "workspace": {
      "type": "string",
      "description": "Linear workspace or organization slug"
    },
    "issueId": {
      "type": "string",
      "description": "Linear issue UUID or issue identifier"
    },
    "statusName": {
      "type": "string",
      "enum": [
        "Ready for Agent",
        "Agent Working",
        "Human Review",
        "Needs Agent Followup",
        "Blocked",
        "Done"
      ],
      "description": "Allowed Symphony workflow status"
    },
    "reason": {
      "type": "string",
      "maxLength": 500,
      "description": "Human-readable status-transition rationale"
    }
  }
}
Create new issueslinear.issue.create17 gaps

Create a Linear issue in an approved team/project scope.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "teamKey",
    "title"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for the Linear workspace"
    },
    "workspace": {
      "type": "string",
      "description": "Linear workspace or organization slug"
    },
    "teamKey": {
      "type": "string",
      "maxLength": 16,
      "description": "Linear team key such as MYR"
    },
    "projectId": {
      "type": "string",
      "description": "Optional Linear project UUID"
    },
    "assigneeId": {
      "type": "string",
      "description": "Optional Linear user UUID for assignee"
    },
    "title": {
      "type": "string",
      "maxLength": 160,
      "description": "Issue title"
    },
    "description": {
      "type": "string",
      "maxLength": 8000,
      "description": "Issue description"
    }
  }
}

google

Google Workspace

Version 2026-06-11 · SDK/IDL shape pack

5 actions
Read calendar eventsgoogle.calendar.read15 gaps

Read bounded Google Calendar event windows for an approved calendar.

{
  "type": "object",
  "required": [
    "tenantId",
    "calendarId",
    "timeMin",
    "timeMax"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Google Workspace"
    },
    "calendarId": {
      "type": "string",
      "description": "Google Calendar identifier"
    },
    "timeMin": {
      "type": "string",
      "format": "date-time",
      "description": "Inclusive event window start"
    },
    "timeMax": {
      "type": "string",
      "format": "date-time",
      "description": "Exclusive event window end"
    },
    "query": {
      "type": "string",
      "maxLength": 160,
      "description": "Optional bounded event search query"
    }
  }
}
Create calendar eventsgoogle.calendar.write19 gaps

Create or update a calendar event in an approved calendar.

{
  "type": "object",
  "required": [
    "tenantId",
    "calendarId",
    "title",
    "start",
    "end"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Google Workspace"
    },
    "calendarId": {
      "type": "string",
      "description": "Google Calendar identifier"
    },
    "title": {
      "type": "string",
      "maxLength": 160,
      "description": "Event title"
    },
    "start": {
      "type": "string",
      "format": "date-time",
      "description": "Event start time"
    },
    "end": {
      "type": "string",
      "format": "date-time",
      "description": "Event end time"
    },
    "attendees": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "email"
      },
      "description": "Optional attendee email list"
    },
    "description": {
      "type": "string",
      "maxLength": 4000,
      "description": "Optional event notes"
    }
  }
}
Read Drive filesgoogle.drive.file.read7 gaps

Read an approved Drive file by file id.

{
  "type": "object",
  "required": [
    "tenantId",
    "fileId"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Google Workspace"
    },
    "fileId": {
      "type": "string",
      "description": "Google Drive file identifier"
    },
    "mimeType": {
      "type": "string",
      "maxLength": 128,
      "description": "Expected MIME type guard"
    }
  }
}
Create Drive filesgoogle.drive.file.create9 gaps

Create a Drive file in an approved folder.

{
  "type": "object",
  "required": [
    "tenantId",
    "parentFolderId",
    "name",
    "mimeType"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Google Workspace"
    },
    "parentFolderId": {
      "type": "string",
      "description": "Approved Drive folder identifier"
    },
    "name": {
      "type": "string",
      "maxLength": 180,
      "description": "Drive file name"
    },
    "mimeType": {
      "type": "string",
      "maxLength": 128,
      "description": "Google Drive MIME type"
    },
    "body": {
      "type": "string",
      "maxLength": 20000,
      "description": "Initial file text content"
    }
  }
}
Write Docs contentgoogle.docs.write7 gaps

Apply bounded text edits to an approved Google Doc.

{
  "type": "object",
  "required": [
    "tenantId",
    "documentId",
    "body"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Google Workspace"
    },
    "documentId": {
      "type": "string",
      "description": "Google Docs document identifier"
    },
    "mode": {
      "type": "string",
      "enum": [
        "append",
        "replace-section",
        "comment"
      ],
      "description": "Allowed document write mode"
    },
    "body": {
      "type": "string",
      "maxLength": 20000,
      "description": "Text to write into the document"
    }
  }
}

slack

Slack

Version 2026-06-11 · SDK/IDL shape pack

4 actions
Read channel messagesslack.channel.read16 gaps

Read a bounded Slack channel history window.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "channelId"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Slack"
    },
    "workspace": {
      "type": "string",
      "description": "Slack workspace identifier"
    },
    "channelId": {
      "type": "string",
      "description": "Slack channel identifier"
    },
    "oldest": {
      "type": "string",
      "description": "Optional lower timestamp bound"
    },
    "latest": {
      "type": "string",
      "description": "Optional upper timestamp bound"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Maximum messages to read"
    }
  }
}
Send messagesslack.message.send10 gaps

Send a Slack message to an approved channel.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "channelId",
    "text"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Slack"
    },
    "workspace": {
      "type": "string",
      "description": "Slack workspace identifier"
    },
    "channelId": {
      "type": "string",
      "description": "Slack channel identifier"
    },
    "text": {
      "type": "string",
      "maxLength": 4000,
      "description": "Message text"
    }
  }
}
Reply to threadsslack.thread.reply11 gaps

Reply to an approved Slack thread.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "channelId",
    "threadTs",
    "text"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Slack"
    },
    "workspace": {
      "type": "string",
      "description": "Slack workspace identifier"
    },
    "channelId": {
      "type": "string",
      "description": "Slack channel identifier"
    },
    "threadTs": {
      "type": "string",
      "pattern": "^[0-9]+\\.[0-9]+$",
      "description": "Slack parent thread timestamp"
    },
    "text": {
      "type": "string",
      "maxLength": 4000,
      "description": "Reply text"
    }
  }
}
Upload filesslack.file.upload13 gaps

Upload a file to an approved Slack channel.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "channelId",
    "filename",
    "content"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Slack"
    },
    "workspace": {
      "type": "string",
      "description": "Slack workspace identifier"
    },
    "channelId": {
      "type": "string",
      "description": "Slack channel identifier"
    },
    "filename": {
      "type": "string",
      "maxLength": 180,
      "description": "Uploaded filename"
    },
    "content": {
      "type": "string",
      "maxLength": 20000,
      "description": "File content or broker-side content reference"
    }
  }
}

notion

Notion

Version 2026-06-11 · SDK/IDL shape pack

4 actions
Read pagesnotion.page.read9 gaps

Read an approved Notion page.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "pageId"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Notion"
    },
    "workspace": {
      "type": "string",
      "description": "Notion workspace identifier"
    },
    "pageId": {
      "type": "string",
      "description": "Notion page identifier"
    }
  }
}
Create pagesnotion.page.create11 gaps

Create a Notion page under an approved parent page or database.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "parentId",
    "title"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Notion"
    },
    "workspace": {
      "type": "string",
      "description": "Notion workspace identifier"
    },
    "parentId": {
      "type": "string",
      "description": "Approved Notion parent page or database identifier"
    },
    "title": {
      "type": "string",
      "maxLength": 180,
      "description": "Page title"
    },
    "body": {
      "type": "string",
      "maxLength": 12000,
      "description": "Initial page content"
    }
  }
}
Update page contentnotion.page.update10 gaps

Update an approved Notion page with bounded content changes.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "pageId",
    "body"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Notion"
    },
    "workspace": {
      "type": "string",
      "description": "Notion workspace identifier"
    },
    "pageId": {
      "type": "string",
      "description": "Notion page identifier"
    },
    "mode": {
      "type": "string",
      "enum": [
        "append",
        "replace-properties",
        "archive"
      ],
      "description": "Allowed page update mode"
    },
    "body": {
      "type": "string",
      "maxLength": 12000,
      "description": "Updated page content or property summary"
    }
  }
}
Query databasesnotion.database.query13 gaps

Query an approved Notion database with bounded filters.

{
  "type": "object",
  "required": [
    "tenantId",
    "workspace",
    "databaseId"
  ],
  "properties": {
    "tenantId": {
      "type": "string",
      "description": "Myriad tenant boundary for Notion"
    },
    "workspace": {
      "type": "string",
      "description": "Notion workspace identifier"
    },
    "databaseId": {
      "type": "string",
      "description": "Notion database identifier"
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Bounded database filter JSON summary"
    },
    "pageSize": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Maximum results to return"
    }
  }
}