← Tool reference

create_transaction_product_draft

Generate an Ohvii system email

Generate one of Ohvii's own system emails for this transaction, with the product's wording and rules: listing_outreach (first contact asking for disclosures, seller preferences, and competing-offer notice; available from the moment the home is saved, before any offer exists), offer_follow_up (no reply yet), counter_follow_up (waiting on the seller's response), lender_update (tell the lender contact about the financing terms a counter changed; needs the lender's contactId; available only while such a change is unreported, so a plain email is the way to send a lender anything else), escrow_opening (ask the escrow contact to open escrow with the signed agreement documents attached; needs contactId, documentIds, and lenderId when more than one lender is saved), or walk_away (withdrawing before there is a contract: sending it also archives the transaction, so never use it as a receipt; once the offer is under contract it is refused, and walking away is the Cancellation of Contract ceremony). Returns the exact draft; where the product already sent that email, its record comes back with status 'sent' and nothing new is created. Nothing is delivered: the buyer reviews it, you may edit it with update_transaction_email_draft, and delivery goes through prepare_transaction_email_send and send_transaction_email_draft. Reuse idempotencyKey only for an exact retry The product writes and signs these as the Ohvii Offer Assistant on the buyer's behalf; keep that voice and signature when the buyer asks for edits, and change only what they ask to change.

Effect
Draft or workspace edit
Required scopes
workspace:write
Workflow stages
closing, transaction
Data classes
transaction
Operation cost
2 weighted units; additional domain limits may apply.
Configurations
Standard, Buyer UI v2
Muse proposal
Write. Creates or updates draft, document, or workspace data within the authorized workflow. Meta makes the final classification during review.

Buyer approval and signing controls apply in addition to the scopes above. Read error and retry guidance before implementing recovery.

Input and output contracts

Returns structured content and a JSON text content block. Live discovery may compact a large output schema; execution validates the full contract below.

Input fields

Required applies within the containing object. Optional fields can be omitted; null is accepted only where listed. Field descriptions and constraints come from the source schema. The raw schema remains the complete contract.

FieldRequiredMeaning and constraints
draftobjectYes

Must match exactly one alternative.

draft: nested contract
Alternative 1: intent = "listing_outreach"

Extra fields are not allowed.

FieldRequiredMeaning and constraints
intentstringYes

Must be "listing_outreach".

Alternative 2: intent = "offer_follow_up"

Extra fields are not allowed.

FieldRequiredMeaning and constraints
intentstringYes

Must be "offer_follow_up".

Alternative 3: intent = "counter_follow_up"

Extra fields are not allowed.

FieldRequiredMeaning and constraints
intentstringYes

Must be "counter_follow_up".

Alternative 4: intent = "lender_update"

Extra fields are not allowed.

FieldRequiredMeaning and constraints
contactIdstringYes

Pattern validation applies; see the raw schema.

intentstringYes

Must be "lender_update".

Alternative 5: intent = "escrow_opening"

Extra fields are not allowed.

FieldRequiredMeaning and constraints
contactIdstringYes

Pattern validation applies; see the raw schema.

documentIdsarray<string>Yes

Minimum items: 1.

Maximum items: 20.

documentIds: nested contract
Array item contract

Pattern validation applies; see the raw schema.

intentstringYes

Must be "escrow_opening".

lenderIdstringNo

Pattern validation applies; see the raw schema.

Alternative 6: intent = "walk_away"

Extra fields are not allowed.

FieldRequiredMeaning and constraints
intentstringYes

Must be "walk_away".

sourceMessageIdstring | nullNo

Must match at least one alternative.

sourceMessageId: nested contract
Alternative 1: string

Pattern validation applies; see the raw schema.

Alternative 2: null

idempotencyKeystringYes

A fresh random UUID (v4) you generate for this request. Send the same UUID only to retry the identical request; never a readable label.

Format: uuid.

Pattern validation applies; see the raw schema.

workspaceIdstringYes

Pattern validation applies; see the raw schema.

Output fields

Required applies within the containing object. Optional fields can be omitted; null is accepted only where listed. Field descriptions and constraints come from the source schema. The raw schema remains the complete contract.

FieldRequiredMeaning and constraints
draftIdstringYes

Pattern validation applies; see the raw schema.

emailDraftobjectYes

Extra fields are not allowed.

emailDraft: nested contract
FieldRequiredMeaning and constraints
approvalStatestringYes

Allowed: "not_requested", "pending", "approved", "rejected", "reset_required", "unknown".

attachmentDocumentIdsarray<string>Yes

Maximum items: 50.

attachmentDocumentIds: nested contract
Array item contract

Pattern validation applies; see the raw schema.

bodystring | nullYes

Must match at least one alternative.

body: nested contract
Alternative 1: string

Maximum characters: 32000.

Alternative 2: null

ccEmailsarray<string>Yes

Maximum items: 20.

ccEmails: nested contract
Array item contract

Maximum characters: 2000.

createdAtstring | nullYes

Must match at least one alternative.

createdAt: nested contract
Alternative 1: string

Format: date-time. Pattern validation applies; see the raw schema.

Alternative 2: null

draftIdstringYes

Pattern validation applies; see the raw schema.

draftRevisionIdstring | nullYes

Must match at least one alternative.

draftRevisionId: nested contract
Alternative 1: string

Pattern validation applies; see the raw schema.

Alternative 2: null

proposedStatusstring | nullYes

Must match at least one alternative.

proposedStatus: nested contract
Alternative 1: string

Maximum characters: 2000.

Alternative 2: null

recipientEmailstring | nullYes

Must match at least one alternative.

recipientEmail: nested contract
Alternative 1: string

Maximum characters: 2000.

Alternative 2: null

replyToEmailstring | nullYes

Must match at least one alternative.

replyToEmail: nested contract
Alternative 1: string

Maximum characters: 2000.

Alternative 2: null

sentAtstring | nullYes

Must match at least one alternative.

sentAt: nested contract
Alternative 1: string

Format: date-time. Pattern validation applies; see the raw schema.

Alternative 2: null

statusstringYes

Allowed: "generating", "draft", "approval_pending", "approved", "sent", "rejected", "unknown".

subjectstring | nullYes

Must match at least one alternative.

subject: nested contract
Alternative 1: string

Maximum characters: 2000.

Alternative 2: null

updatedAtstring | nullYes

Must match at least one alternative.

updatedAt: nested contract
Alternative 1: string

Format: date-time. Pattern validation applies; see the raw schema.

Alternative 2: null

wireFraudWarningPresentbooleanYesNo additional description in the contract.
idempotencyKeystringYes

Format: uuid.

Pattern validation applies; see the raw schema.

intentstringYes

Allowed: "listing_outreach", "offer_follow_up", "counter_follow_up", "lender_update", "escrow_opening", "walk_away".

schemaVersionstringYes

Must be "1".

statusstringYes

Allowed: "draft", "sent".

workspaceIdstringYes

Pattern validation applies; see the raw schema.

Raw input schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "draft": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "intent": {
              "type": "string",
              "const": "listing_outreach"
            }
          },
          "required": [
            "intent"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "intent": {
              "type": "string",
              "const": "offer_follow_up"
            }
          },
          "required": [
            "intent"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "intent": {
              "type": "string",
              "const": "counter_follow_up"
            }
          },
          "required": [
            "intent"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "contactId": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]{1,200}$"
            },
            "intent": {
              "type": "string",
              "const": "lender_update"
            }
          },
          "required": [
            "contactId",
            "intent"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "contactId": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]{1,200}$"
            },
            "documentIds": {
              "minItems": 1,
              "maxItems": 20,
              "type": "array",
              "items": {
                "type": "string",
                "pattern": "^[A-Za-z0-9_-]{1,200}$"
              }
            },
            "intent": {
              "type": "string",
              "const": "escrow_opening"
            },
            "lenderId": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]{1,200}$"
            }
          },
          "required": [
            "contactId",
            "documentIds",
            "intent"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "intent": {
              "type": "string",
              "const": "walk_away"
            },
            "sourceMessageId": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_-]{1,200}$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "intent"
          ],
          "additionalProperties": false
        }
      ]
    },
    "idempotencyKey": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "A fresh random UUID (v4) you generate for this request. Send the same UUID only to retry the identical request; never a readable label."
    },
    "workspaceId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,200}$"
    }
  },
  "required": [
    "draft",
    "idempotencyKey",
    "workspaceId"
  ],
  "additionalProperties": false
}
Full output schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "draftId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,200}$"
    },
    "emailDraft": {
      "type": "object",
      "properties": {
        "approvalState": {
          "type": "string",
          "enum": [
            "not_requested",
            "pending",
            "approved",
            "rejected",
            "reset_required",
            "unknown"
          ]
        },
        "attachmentDocumentIds": {
          "maxItems": 50,
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{1,200}$"
          }
        },
        "body": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 32000
            },
            {
              "type": "null"
            }
          ]
        },
        "ccEmails": {
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 2000
          }
        },
        "createdAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "draftId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,200}$"
        },
        "draftRevisionId": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,399}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "proposedStatus": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2000
            },
            {
              "type": "null"
            }
          ]
        },
        "recipientEmail": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2000
            },
            {
              "type": "null"
            }
          ]
        },
        "replyToEmail": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2000
            },
            {
              "type": "null"
            }
          ]
        },
        "sentAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "status": {
          "type": "string",
          "enum": [
            "generating",
            "draft",
            "approval_pending",
            "approved",
            "sent",
            "rejected",
            "unknown"
          ]
        },
        "subject": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2000
            },
            {
              "type": "null"
            }
          ]
        },
        "updatedAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "wireFraudWarningPresent": {
          "type": "boolean"
        }
      },
      "required": [
        "approvalState",
        "attachmentDocumentIds",
        "body",
        "ccEmails",
        "createdAt",
        "draftId",
        "draftRevisionId",
        "proposedStatus",
        "recipientEmail",
        "replyToEmail",
        "sentAt",
        "status",
        "subject",
        "updatedAt",
        "wireFraudWarningPresent"
      ],
      "additionalProperties": false
    },
    "idempotencyKey": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "intent": {
      "type": "string",
      "enum": [
        "listing_outreach",
        "offer_follow_up",
        "counter_follow_up",
        "lender_update",
        "escrow_opening",
        "walk_away"
      ]
    },
    "schemaVersion": {
      "type": "string",
      "const": "1"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "sent"
      ]
    },
    "workspaceId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,200}$"
    }
  },
  "required": [
    "draftId",
    "emailDraft",
    "idempotencyKey",
    "intent",
    "schemaVersion",
    "status",
    "workspaceId"
  ],
  "additionalProperties": false
}
Tool annotations
{
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false,
  "readOnlyHint": false
}

Reference 00e5441a095c7e20. Download the full catalog.