Skip to main content
Glama

Embers: Tabletop RPG Toolkit

Create a session

play_create_session

Create a new session for a campaign. Required: campaignId and date (dd/mm/yy format). Other fields (name, description, planned battlemaps) are optional and pass through to play. Caller must be the campaign's owner, a gamemaster or player with an accepted seat (watchers excluded), or an admin with Admin Mode on.

Input Schema

NameRequiredDescriptionDefault
dateYesPlanned or actual session date in `dd/mm/yy` format. Required.
nameNoSession name / title.
imageNo
statusNo
summaryNoShort session summary. Max 150 characters.
battlemapsNo
campaignIdYesCampaign the session belongs to. Required.
charactersNo
descriptionNoSession body / notes / recap. Markdown supported.
sessionImagesNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changed
    • addedInput schema / $schema
      Added value: +"http://json-schema.org/draft-07/schema#"
    • addedInput schema / additionalProperties
      Added value: +{}
    • addedInput schema / properties / battlemaps
      Added value: +{
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "_id": {
      +        "description": "Mongo `_id` reference (24-character hex string).",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "visibleToPlayers": {
      +        "type": "boolean"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / campaignId
      Added value: +{
      +  "description": "Campaign the session belongs to. Required.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / characters
      Added value: +{
      +  "items": {
      +    "description": "Mongo `_id` reference (24-character hex string).",
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / date
      Added value: +{
      +  "description": "Planned or actual session date in `dd/mm/yy` format. Required.",
      +  "pattern": "^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{2})$",
      +  "type": "string"
      +}
    • addedInput schema / properties / description
      Added value: +{
      +  "description": "Session body / notes / recap. Markdown supported.",
      +  "type": "string"
      +}
    • addedInput schema / properties / image
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / name
      Added value: +{
      +  "description": "Session name / title.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / sessionImages
      Added value: +{
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "name": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      },
      +      "visibleToPlayers": {
      +        "type": "boolean"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / status
      Added value: +{
      +  "enum": [
      +    "pending",
      +    "active",
      +    "completed",
      +    "cancelled"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / summary
      Added value: +{
      +  "description": "Short session summary. Max 150 characters.",
      +  "maxLength": 150,
      +  "type": "string"
      +}
    • addedInput schema / required
      Added value: +[
      +  "campaignId",
      +  "date"
      +]
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a mutation (readOnlyHint=false) that is neither idempotent nor destructive. The description adds genuinely useful behavioral context beyond that: the exact authorization profile required and which fields flow through to the play service. It does not explain the consequences of the non-idempotent hint (e.g., duplicate sessions on repeat calls), which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences: purpose first, then required/optional fields, then authorization. Every sentence carries information and there is no filler, though the auth sentence is dense and could be slightly easier to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and the description covers purpose, required inputs, and access control. It is nearly complete for a creation tool; the only shortfall is no note on the non-idempotent behavior or how duplicate/invalid sessions are handled.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, so this field must compensate. The description names the two required params (campaignId, date with format) and lists three optional fields (name, description, planned battlemaps), but leaves image, status, summary, characters, and sessionImages undocumented in both places. Partial compensation warrants a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Create a new session for a campaign'), which clearly distinguishes it from siblings like play_update_session, play_get_session, and play_create_campaign. An agent can identify the operation and its scope without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the eligibility conditions for calling (owner, gamemaster, accepted-seat player, or admin with Admin Mode on; watchers excluded), which is meaningful context for selecting the tool. It does not, however, contrast with alternatives such as play_update_session or play_create_campaign, so it stops short of explicit when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources