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

# Bulk save recommended actions to My Plan

> Saves multiple recommended actions to My Plan in a single request. Items that are currently new are moved to confirmed and brief generation is triggered for each. Items already confirmed or dismissed are reported in skipped with the appropriate reason — the rest of the batch proceeds normally (partial-success semantics, not all-or-nothing). IDs not found in the current org/workspace scope are reported in skipped with reason not_found.



## OpenAPI

````yaml https://openapi.shareofmodel.ai/swagger.json post /v1/organizations/{organization_id}/workspaces/{workspace_id}/recommended-actions/bulk-save-to-plan
openapi: 3.0.3
info:
  title: Share Of Model API
  version: v1
  description: >-
    ## Model Context Protocol (MCP)


    In addition to this REST API, Share of Model exposes a **Model Context
    Protocol** server that lets AI assistants (Claude Desktop, Claude Code, MCP
    Inspector, custom agents…) call our endpoints directly as tools. Any
    MCP-compatible client can interact with Share of Model without writing
    custom integration code — connect once with your usual login and start
    asking the assistant to query the data for you.


    ### Connecting from Claude Desktop


    Open **Settings → Connectors**, scroll to the bottom and click **Add custom
    connector**, then paste `https://mcp.shareofmodel.ai/mcp/`. A browser window
    opens for you to log in with your Share of Model account (same login as the
    web app), and the assistant gains access to the tools.


    ### Connecting from Claude Code


    ```bash

    claude mcp add --transport http share-of-model
    https://mcp.shareofmodel.ai/mcp/

    ```


    The first time you call a tool, Claude Code opens your browser to complete
    the login.


    ### Connecting from MCP Inspector


    ```bash

    npx @modelcontextprotocol/inspector

    ```


    In the Inspector UI, pick **Streamable HTTP** as transport, paste
    `https://mcp.shareofmodel.ai/mcp/`, and click **Connect**. The first
    connection prompts you to log in.


    ### Available tools


    Only endpoints tagged `mcp` in this OpenAPI spec are exposed as MCP tools,
    and only read-only (`GET`) routes are exposed. Everything tagged `mcp` below
    is callable from any compliant MCP client.


    ### Example prompts


    Once connected, try asking your assistant things like:


    - _"List the workspaces I have access to."_

    - _"Show me the latest searches in workspace X."_

    - _"Compare the share of model between brand A and brand B over the last 30
    days."_


    For more details on the protocol itself, see the [Model Context Protocol
    specification](https://modelcontextprotocol.io/).
servers:
  - description: Production API
    url: https://api.shareofmodel.ai/
  - description: Development API
    url: https://api.dev.shareofmodel.ai/
security: []
tags:
  - name: Auth
    description: Endpoints needed for API authentication.
  - name: Organizations
    description: Endpoints related to organizations, to list all available organizations.
  - name: Workspaces
    description: Endpoints related to workspaces, to list all available workspaces.
  - name: Analyses
    description: Endpoints related to analyses and analyses management.
  - name: Asset Evaluations
    description: Endpoints related to assets and asset evaluations.
  - name: Brand Catalog
    description: Endpoints related to general brand information.
  - name: Content Briefs
    description: Endpoints related to content briefs generation and optimisation.
  - name: Metrics
    description: >+
      Endpoints related to brand metrics.


      **LEXICON**



      **Brand Awareness**: What opinion the LLMs have concerning specific
      brands, related to certain categories.



      **Brand Perception**: The general sentiment of the LLMs towards a brand,

      based on the pros and cons they mention.

paths:
  /v1/organizations/{organization_id}/workspaces/{workspace_id}/recommended-actions/bulk-save-to-plan:
    post:
      tags:
        - Recommended Action
      summary: Bulk save recommended actions to My Plan
      description: >-
        Saves multiple recommended actions to My Plan in a single request. Items
        that are currently new are moved to confirmed and brief generation is
        triggered for each. Items already confirmed or dismissed are reported in
        skipped with the appropriate reason — the rest of the batch proceeds
        normally (partial-success semantics, not all-or-nothing). IDs not found
        in the current org/workspace scope are reported in skipped with reason
        not_found.
      operationId: bulk_save_recommended_actions_to_plan
      parameters:
        - in: path
          name: organization_id
          schema:
            type: string
            format: uuid
          description: Organization identifier
          required: true
        - in: path
          name: workspace_id
          schema:
            type: string
            format: uuid
          description: Workspace identifier
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkSaveToPlanRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BulkSaveToPlanRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BulkSaveToPlanRequest'
          '*/*':
            schema:
              $ref: '#/components/schemas/BulkSaveToPlanRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkSaveToPlanResponse'
          description: >-
            Partial-success result. succeeded lists IDs moved to My Plan;
            skipped lists IDs that were ineligible (already_confirmed,
            already_dismissed) or not_found.
        '400':
          description: ids is missing, empty, or contains invalid UUIDs
        '401':
          description: Authentication credentials were not provided or are invalid
        '403':
          description: Permission denied
        '500':
          description: Server error
      security:
        - Bearer: []
components:
  schemas:
    BulkSaveToPlanRequest:
      type: object
      properties:
        ids:
          type: array
          items:
            type: string
            format: uuid
          description: List of recommended action UUIDs to save to My Plan
      required:
        - ids
    BulkSaveToPlanResponse:
      type: object
      properties:
        succeeded:
          type: array
          items:
            type: string
            format: uuid
          description: >-
            IDs that were successfully moved to My Plan (workflow_status set to
            confirmed)
        skipped:
          type: array
          items:
            $ref: '#/components/schemas/BulkSaveToPlanSkippedItem'
          description: IDs that were not processed and the reason why
      required:
        - skipped
        - succeeded
    BulkSaveToPlanSkippedItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Recommended action ID
        reason:
          enum:
            - already_confirmed
            - already_dismissed
            - not_found
          type: string
          x-spec-enum-id: ce32dfc2847dd354
          description: |-
            Why this item was not processed

            * `already_confirmed` - already_confirmed
            * `already_dismissed` - already_dismissed
            * `not_found` - not_found
      required:
        - id
        - reason
  securitySchemes:
    Bearer:
      type: apiKey
      in: header
      name: Authorization

````