MCP 2025-06-18

briefing_queue_append

Append an authorized target with listener consent. Acceptance does not approve narration costs or start playback.

Scopes

The agent key needs these scopes. The server also checks access to each record before returning data or changing it.

  • append:briefing_queue

Input schema

This schema is shared with tools/list, including the required fields and additionalProperties rules.

Synthetic example · JSON
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "accountId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "serviceTenancyId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "listenerPrincipalId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "target": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": {
              "const": "ready_episode"
            },
            "episodeId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "renderId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          "required": [
            "kind",
            "episodeId",
            "renderId"
          ]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": {
              "const": "narration_request"
            },
            "briefingRevisionId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "options": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "version": {
                  "const": 1
                },
                "outputKind": {
                  "type": "string",
                  "enum": [
                    "narration",
                    "episode"
                  ]
                },
                "editorialFormat": {
                  "type": "string",
                  "enum": [
                    "verbatim",
                    "two_host",
                    "monologue",
                    "panel",
                    "debate",
                    "agent_interview"
                  ]
                },
                "cast": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "speakerId": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "role": {
                        "type": "string",
                        "enum": [
                          "narrator",
                          "host",
                          "analyst",
                          "moderator",
                          "perspective",
                          "debater",
                          "agent"
                        ]
                      },
                      "catalogVoiceId": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "personaName": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 80
                      }
                    },
                    "required": [
                      "speakerId",
                      "role",
                      "catalogVoiceId",
                      "personaName"
                    ]
                  },
                  "minItems": 1,
                  "maxItems": 8
                },
                "quality": {
                  "type": "string",
                  "enum": [
                    "standard",
                    "premium"
                  ]
                },
                "targetMinutes": {
                  "type": "integer",
                  "minimum": 3,
                  "maximum": 20,
                  "default": 10
                },
                "language": {
                  "const": "en"
                },
                "focusPrompt": {
                  "type": "string",
                  "maxLength": 2000
                },
                "catalogVersion": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 9007199254740991
                },
                "codec": {
                  "type": "string",
                  "enum": [
                    "mp3",
                    "wav"
                  ]
                }
              },
              "required": [
                "version",
                "outputKind",
                "editorialFormat",
                "cast",
                "quality",
                "targetMinutes",
                "language",
                "catalogVersion",
                "codec"
              ],
              "description": "Stored formats include gated panel/debate/agent_interview; parseEpisodeOptions admits launch formats only. Explicit defaults: targetMinutes 10 and codec mp3; strict parser never rewrites canonical input."
            }
          },
          "required": [
            "kind",
            "briefingRevisionId",
            "options"
          ]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": {
              "const": "scheduled_occurrence"
            },
            "scheduleId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "scheduleVersion": {
              "type": "integer",
              "minimum": 0
            },
            "scheduledAt": {
              "type": "integer",
              "minimum": 0
            }
          },
          "required": [
            "kind",
            "scheduleId",
            "scheduleVersion",
            "scheduledAt"
          ]
        }
      ]
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "clientContext": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "externalRunId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "externalRunId"
      ]
    }
  },
  "required": [
    "accountId",
    "serviceTenancyId",
    "target",
    "idempotencyKey",
    "listenerPrincipalId"
  ]
}

Call this tool

Send it as POST https://www.specifywork.com/api/mcp. Authorization: Bearer <agent key>, a key that starts with sw_agent. Replace the example values with records your key can reach.

Synthetic example · JSON
{
  "jsonrpc": "2.0",
  "id": "example_briefing_queue_append",
  "method": "tools/call",
  "params": {
    "name": "briefing_queue_append",
    "arguments": {
      "accountId": "<accountId>",
      "serviceTenancyId": "<serviceTenancyId>",
      "target": {
        "kind": "ready_episode",
        "episodeId": "<episodeId>",
        "renderId": "<renderId>"
      },
      "idempotencyKey": "retry-1",
      "listenerPrincipalId": "<listenerPrincipalId>"
    }
  }
}

Read the result before continuing

The queue submission and its status.

A call returns content[0].text with the JSON result and structuredContent.result with the same value. A refused call returns isError: true and the error code in content[0].text.

A request being accepted is not proof of an external action completing. Keep correlation IDs and mutation idempotency keys unchanged across safe retries.