Propose or save an offer

Create an offer (omit offerId) or change one (only the fields you send change). Only describe what the client really sells; never invent prices or links. Free assets are separate: use freeasset_upsert. From an agent this becomes a proposal a person accepts.

offer_upsertOtherRead and write

Behavior

Read-only hint
Not declared
Destructive hint
Not declared
Idempotent hint
Not declared
Open-world hint
Not declared

Parameters

NameTypeRequirementDescription
workspaceIdstringRequiredThe workspace id or slug (from workspace_list).
offerIdstringOptionalNo additional description.
namestringOptionalNo additional description.
audienceIdsarrayOptionalNo additional description.
promisestringOptionalNo additional description.
mechanismstringOptionalNo additional description.
deliverablesarrayOptionalWhat the buyer gets.
pricestringOptionalNo additional description.
proofarrayOptionalResults and cases.
destinationstringOptionalNo additional description.
statusstringOptionalNo additional description.
reasonstringRequiredWhy this change helps, in one or two sentences. Shown to the person who accepts it.

Input JSON Schema

Generated from the registered input schema
{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "description": "The workspace id or slug (from workspace_list)."
    },
    "offerId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "audienceIds": {
      "maxItems": 8,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "promise": {
      "type": "string",
      "maxLength": 600
    },
    "mechanism": {
      "type": "string",
      "maxLength": 1000
    },
    "deliverables": {
      "description": "What the buyer gets.",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 300
      }
    },
    "price": {
      "type": "string",
      "maxLength": 200
    },
    "proof": {
      "description": "Results and cases.",
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 600
      }
    },
    "destination": {
      "type": "string",
      "maxLength": 1000
    },
    "status": {
      "type": "string",
      "enum": [
        "active",
        "paused",
        "retired"
      ]
    },
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "Why this change helps, in one or two sentences. Shown to the person who accepts it."
    }
  },
  "required": [
    "workspaceId",
    "reason"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Call shape

Use an MCP client rather than sending this JSON directly. The client handles protocol negotiation, sessions, and authentication.

Protocol request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "offer_upsert",
    "arguments": {}
  }
}