# Netsuite

NetSuite by Oracle is a cloud-based ERP suite that combines accounting, CRM, e-commerce, and inventory management for comprehensive business oversight

- **Category:** accounting
- **Auth:** OAUTH2
- **Composio Managed App Available?** No
- **Tools:** 89
- **Triggers:** 0
- **Slug:** `NETSUITE`
- **Version:** 20260312_00

## Tools

### Get Async Job Status

**Slug:** `NETSUITE_ASYNC_GET_JOB_STATUS`

Retrieves the current status of an asynchronous NetSuite REST job. Use this tool to check whether an async job has completed and its progress state. When you submit any NetSuite REST API request with the 'Prefer: respond-async' header, NetSuite returns a Location header containing the job ID. Use that job ID with this tool to poll the job's status. The response indicates if the job is completed, its progress state (pending/processing/succeeded/failed), and provides links to retrieve the job results once completed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | The Job ID extracted from the Location header URL when an async request was submitted with 'Prefer: respond-async'. For example, if Location header is 'https://demo.suitetalk.api.netsuite.com/services/rest/async/v1/job/203', the job ID is '203'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Async Job Task

**Slug:** `NETSUITE_ASYNC_GET_JOB_TASK`

Retrieves the task reference (task ID and URL) for an asynchronous job in NetSuite. Use this action after submitting an async request with 'Prefer: respond-async' header and receiving a job_id in the Location header. The task ID is required to retrieve the job's result using the async get job task result action. Typical workflow: 1) Submit async request → 2) Get job_id → 3) Use this action to get task_id → 4) Poll job status → 5) Retrieve results with task_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | string | Yes | Internal ID of the asynchronous job returned when initiating a request with Prefer: respond-async. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Async Get Job Task Result

**Slug:** `NETSUITE_ASYNC_GET_JOB_TASK_RESULT`

Tool to retrieve the payload result of a completed async task. Use after confirming the async job and task have completed to fetch the operation's output.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | The async job ID returned in the Location header when the request was submitted with Prefer: respond-async. |
| `taskId` | string | Yes | The task ID for the submitted job, obtained via the async task endpoints for the given job. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Customer

**Slug:** `NETSUITE_CREATE_CUSTOMER`

Creates a new customer record in NetSuite. Requires subsidiary ID and either company name (for business customers) or first/last name (for individual customers). Returns the location URL of the created customer record, or an async job URL if using async mode.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | Yes | JSON object with customer data. Required fields: 'subsidiary' (object with 'id'), and either 'companyName' (for company customers) or 'firstName'+'lastName' (for individual customers). Optional fields include: 'email', 'phone', 'isPerson' (set to 'T' for individuals), 'comments', etc. |
| `Prefer` | string | No | Use 'respond-async' to run the create operation asynchronously. |
| `replace` | string | No | Comma-separated list of sublist names (e.g., 'contacts', 'addressbook') to fully replace rather than merge with existing data. Only applicable when updating existing records. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests; ignored for synchronous calls. |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore Warning") | No | Controls how NetSuite handles invalid property names in the request body. 'Error' (default) rejects requests with invalid names, 'Warning' accepts but warns, 'Ignore Warning' silently ignores invalid names. |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore Error") | No | Controls how NetSuite handles invalid property values in the request body. 'Error' (default) rejects requests with invalid values, 'Warning' accepts but warns, 'Ignore Error' attempts to proceed despite invalid values. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Customer Payment

**Slug:** `NETSUITE_CREATE_CUSTOMER_PAYMENT`

Creates a customer payment record in NetSuite. Requires account (deposit account), customer reference, and payment amount. Optionally link payment to specific invoices via the 'apply' sublist. Returns the URL of the created payment record.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | Yes | Customer payment record data. Required fields: 'account' (deposit account, typically Undeposited Funds), 'customer' (customer ID reference), and 'payment' (payment amount). Optional: 'memo', 'toBeEmailed', 'apply' (sublist to link payment to specific invoices with doc/line/apply/amount fields). |
| `Prefer` | string | No | Use 'respond-async' to run the create operation asynchronously. |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests; ignored for synchronous calls. |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore Warning") | No | Controls strictness for property name validation. |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore Error") | No | Controls strictness for property value validation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Employee

**Slug:** `NETSUITE_CREATE_EMPLOYEE`

Creates a new employee record in NetSuite. Required: firstName, lastName, and subsidiary ID. Returns the URL of the created employee in the location field. Supports async creation with 'respond-async' preference.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | Yes | Employee record data. Required fields: firstName (string), lastName (string), and subsidiary (object with id). Optional fields include email, phone, title, department, supervisor, comments, etc. Example: {'firstName': 'John', 'lastName': 'Doe', 'subsidiary': {'id': '1'}} |
| `Prefer` | string | No | Use 'respond-async' to run the create operation asynchronously. |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests; ignored for synchronous calls. |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore") | No | Controls strictness for property name validation. |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore") | No | Controls strictness for property value validation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Invoice

**Slug:** `NETSUITE_CREATE_INVOICE`

Tool to create a new invoice record. Use when you have all required invoice details and want to add them to NetSuite.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | Yes | JSON object matching NetSuite Invoice metadata; include all mandatory fields. |
| `Prefer` | string | No | Use 'respond-async' to run the create operation asynchronously. |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests; ignored for synchronous calls. |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore Warning") | No | Controls strictness for property name validation. |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore Error") | No | Controls strictness for property value validation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Item

**Slug:** `NETSUITE_CREATE_ITEM`

Creates a new item record in NetSuite via REST API. Supports multiple item types including inventory items, service items, and description items. Returns the URL of the created item. Use this when you need to add new products, services, or descriptive items to the NetSuite catalog.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | Yes | Item data as JSON object. Required fields vary by record_type. Minimum required for all types: 'itemId' (unique identifier) and 'displayName' (item name). Additional common fields: 'description', 'isInactive', 'taxSchedule' (object with 'id' property, required for inventory/service items), 'incomeAccount', 'assetAccount', 'cogsAccount' (account references as objects with 'id' property). Note: Required fields depend on your NetSuite account configuration and the specific item type. |
| `Prefer` | string | No | Use 'respond-async' to queue the create operation for asynchronous processing. Note: Using this option typically results in HTTP 202 Accepted with a Location header to poll job status. |
| `replace` | string | No | Comma-separated names of sublists/sub-collections to replace entirely (not merge) with provided data. Common sublists: 'pricing' (price levels), 'itemVendor' (vendor associations), 'binNumber' (bin locations). If omitted, sublists are merged/appended. Use this to completely overwrite existing sublist data. |
| `record_type` | string ("inventoryItem" | "assemblyItem" | "serviceSaleItem" | "serviceResaleItem" | "servicePurchaseItem" | "nonInventorySaleItem" | "nonInventoryResaleItem" | "nonInventoryPurchaseItem" | "otherChargeSaleItem" | "otherChargePurchaseItem" | "descriptionItem" | "markupItem" | "downloadItem") | Yes | Type of item to create. Common types: 'inventoryItem' (tracked inventory with quantities), 'descriptionItem' (non-transactional descriptive text), 'serviceSaleItem' (services sold to customers), 'markupItem' (markup/discount items). Note: Different types have different required fields - inventoryItem and serviceSaleItem typically require taxSchedule, incomeAccount, assetAccount, cogsAccount; descriptionItem only requires itemId and displayName. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests; ignored for synchronous calls. |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore Warning") | No | Controls how NetSuite handles unrecognized property names in the request body. 'Error' (default): Reject request if unrecognized properties exist. 'Warning': Accept request but return warnings. 'Ignore Warning': Accept request silently ignoring unrecognized properties. |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore Error") | No | Controls how NetSuite handles invalid property values in the request body. 'Error' (default): Reject request if invalid values exist. 'Warning': Accept request but return warnings for invalid values. 'Ignore Error': Attempt to process request ignoring validation errors (not recommended). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Journal Entry

**Slug:** `NETSUITE_CREATE_JOURNAL_ENTRY`

Tool to create a new journal entry record. Use when posting balanced debits and credits to the general ledger.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | Yes | JSON object matching NetSuite Journal Entry metadata; include all mandatory fields. |
| `Prefer` | string | No | Use 'respond-async' to run the create operation asynchronously. |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests; ignored for synchronous calls. |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore Warning") | No | Controls strictness for property name validation. |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore Error") | No | Controls strictness for property value validation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create JWT Client Assertion

**Slug:** `NETSUITE_CREATE_JWT_CLIENT_ASSERTION`

Tool to build a JWT client assertion for NetSuite OAuth2 client credentials. Use before exchanging for an access token.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `alg` | string | No | Signing algorithm to use. Defaults to PS256. Supported: PS256 (RSA-PSS), RS256 (RSA), HS256 (HMAC). |
| `aud` | string | No | Audience for the JWT assertion. Defaults to the NetSuite OAuth2 token endpoint for your account. |
| `exp` | integer | No | Expiration time as Unix timestamp (seconds). Must be no more than 3600 seconds after iat. Defaults to iat + 300. |
| `iat` | integer | No | Issued-at time as Unix timestamp (seconds). Defaults to current time. |
| `scope` | string | Yes | Comma-separated list of scopes for the JWT assertion. Allowed values: restlets, rest_webservices, suite_analytics. |
| `client_id` | string | No | Integration client ID (Application ID) to use as JWT issuer (iss). If omitted, taken from metadata. |
| `certificate_id` | string | No | Certificate ID to set as JWT header 'kid'. If omitted, taken from metadata consumer_id. |
| `private_key_pem` | string | No | RSA private key in PEM format used to sign the JWT with PS256. If omitted, taken from metadata consumer_secret. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Purchase Order

**Slug:** `NETSUITE_CREATE_PURCHASE_ORDER`

Tool to create a new purchase order record. Use when you need to submit a purchase order to a vendor.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `item` | object | Yes | Container for purchase order line items |
| `memo` | string | No | Header memo for the purchase order |
| `Prefer` | string | No | Use 'respond-async' to run the create operation asynchronously |
| `entity` | object | Yes | Vendor record reference |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided |
| `location` | object | No | Reference to another NetSuite record by internal ID. |
| `tranDate` | string | No | Transaction date in YYYY-MM-DD format |
| `customForm` | object | No | Reference to another NetSuite record by internal ID. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore Warning") | No | Controls strictness for property name validation |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore Error") | No | Controls strictness for property value validation |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Record

**Slug:** `NETSUITE_CREATE_RECORD`

Creates a new NetSuite record of any type (customer, vendor, invoice, sales order, etc.). Use this action when you need to create any type of record in NetSuite. Provide the record type identifier and a JSON body with all required fields. Consider using GET_RECORD_METADATA first to discover required fields and valid values. Supports both synchronous (immediate) and asynchronous (background) creation. Returns the new record's ID and location URL. Limitations: Does not support subrecord creation or bulk operations (use dedicated bulk actions instead).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | Yes | Record data as a JSON object. Must include all required fields for the record type. Use GET_RECORD_METADATA to discover required fields and schema. Common fields: companyname/firstname+lastname (for entities), subsidiary reference (often required). |
| `Prefer` | string | No | Use 'respond-async' to run the create operation asynchronously. |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided. |
| `record_type` | string | Yes | Record type identifier (e.g., 'customer', 'vendor', 'salesorder', 'invoice', 'employee', 'item'). For custom records, use 'customrecord_<scriptId>' format. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests; ignored for synchronous calls. |
| `X-NetSuite-PropertyNameValidation` | string ("ignore" | "warning" | "error") | No | Controls validation level for unrecognized property names: 'error' (reject request), 'warning' (accept but warn), 'ignore' (silently accept). Default behavior rejects invalid names. |
| `X-NetSuite-PropertyValueValidation` | string ("ignore" | "warning" | "error") | No | Controls validation level for invalid property values: 'error' (reject request), 'warning' (accept but warn), 'ignore' (silently accept). Default behavior rejects invalid values. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Sales Order

**Slug:** `NETSUITE_CREATE_SALES_ORDER`

Tool to create a new sales order record in NetSuite. Use this when you need to submit a customer order with one or more items. Each line item requires: - item: Reference to the inventory/service item (internal ID) - quantity: Number of units to order - rate: Unit price (optional if item has default pricing) - taxcode: Tax code reference (required if SuiteTax is enabled on the account) Note: NetSuite accounts with SuiteTax enabled require tax codes for line items.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `item` | object | Yes | Container for sales order line items. Must include at least one item with quantity and pricing. |
| `memo` | string | No | Header memo for the sales order |
| `Prefer` | string | No | Use 'respond-async' to run the create operation asynchronously |
| `entity` | object | Yes | Customer record reference (internal ID required) |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided |
| `tranDate` | string | No | Transaction date in YYYY-MM-DD format |
| `promocode` | object | No | Reference to another NetSuite record by internal ID. |
| `customForm` | string | No | Internal ID of the custom sales order form (determines billing behavior) |
| `orderStatus` | string ("A" | "B") | No | Approval status: 'A' = Pending Approval, 'B' = Pending Fulfillment |
| `otherrefnum` | string | No | External reference or PO number |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore") | No | Controls strictness for property name validation |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore") | No | Controls strictness for property value validation |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Vendor

**Slug:** `NETSUITE_CREATE_VENDOR`

Creates a new vendor record in NetSuite. Required: vendor name (companyName) and subsidiary ID. Use this when you need to add a new vendor to NetSuite's vendor list for procurement or accounts payable purposes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | Yes | JSON object containing vendor data. Required fields: 'companyName' (string) and 'subsidiary' (object with 'id' field, e.g., {'id': '3'}). Common optional fields: 'email', 'phone', 'fax', 'url', 'isPerson' (boolean), 'comments'. See NetSuite REST API vendor documentation for complete field list. |
| `Prefer` | string | No | Use 'respond-async' to run the create operation asynchronously. |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests; ignored for synchronous calls. |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore") | No | Controls strictness for property name validation. |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore") | No | Controls strictness for property value validation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Vendor Bill

**Slug:** `NETSUITE_CREATE_VENDOR_BILL`

Tool to create a new vendor bill record. Use when you have all required bill and line-item details to add a vendor bill in NetSuite.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | Yes | JSON object matching NetSuite vendorBill schema; include all mandatory fields. |
| `Prefer` | string | No | Use 'respond-async' to run the create operation asynchronously. |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests; ignored for synchronous calls. |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore") | No | Controls strictness for property name validation. |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore") | No | Controls strictness for property value validation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Customer

**Slug:** `NETSUITE_DELETE_CUSTOMER`

Tool to delete a customer record by ID. Use when you need to remove an existing customer record from NetSuite.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal ID of the customer record to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Customer Payment

**Slug:** `NETSUITE_DELETE_CUSTOMER_PAYMENT`

Delete a customer payment record from NetSuite by its ID. Use this action to permanently remove a customer payment record. You can delete by internal ID (numeric) or external ID (prefixed with 'eid:'). This is a destructive operation and cannot be undone. Returns success=true on successful deletion (HTTP 204).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID or external ID (prefixed with 'eid:') of the customer payment record to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Employee

**Slug:** `NETSUITE_DELETE_EMPLOYEE`

Deletes an employee record from NetSuite by its internal ID. This permanently removes the employee record. Use this when you need to remove a terminated or invalid employee from the system. Returns success=true on successful deletion, or raises an error if the employee doesn't exist.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The internal ID of the employee record to delete. Must be a positive integer representing an existing employee in NetSuite. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Invoice

**Slug:** `NETSUITE_DELETE_INVOICE`

Tool to delete an invoice record by ID. Use when you need to remove an existing invoice record from NetSuite.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal ID of the invoice record to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Item

**Slug:** `NETSUITE_DELETE_ITEM`

Tool to delete an item record by its type and ID. Use when you need to remove an existing item record from NetSuite. Use after verifying the record exists to avoid unintended deletions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The record instance identifier to delete. May be an internal numeric ID (e.g., '107') or an external ID prefixed with 'eid:' (e.g., 'eid:EXTERNAL_123'). |
| `item_record_type` | string ("inventoryItem" | "nonInventoryPurchaseItem" | "kitItem" | "assemblyItem" | "descriptionItem") | Yes | The REST record ID for the specific item type to delete. E.g., 'inventoryItem', 'nonInventoryPurchaseItem', 'kitItem', 'assemblyItem', 'descriptionItem'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Item Fulfillment

**Slug:** `NETSUITE_DELETE_ITEM_FULFILLMENT`

Tool to delete an Item Fulfillment record. Use when you need to remove an existing Item Fulfillment record from NetSuite. Use after confirming the record exists.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the Item Fulfillment record to delete, or external ID prefixed with 'eid:'. |
| `prefer` | string | No | Optional header 'Prefer'. Use 'respond-async' to run delete asynchronously. |
| `idempotency_key` | string | No | Optional 'X-NetSuite-Idempotency-Key' header for idempotency with async requests. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Item Receipt

**Slug:** `NETSUITE_DELETE_ITEM_RECEIPT`

Tool to delete an item receipt record by ID. Use when you need to remove an existing item receipt from NetSuite.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal ID of the item receipt record to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Journal Entry

**Slug:** `NETSUITE_DELETE_JOURNAL_ENTRY`

Tool to delete a journal entry record by ID. Use when you need to remove an existing journal entry from NetSuite.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal ID of the journal entry record to delete |
| `prefer` | string | No | Use header 'Prefer: respond-async' to execute asynchronously |
| `idempotency_key` | string | No | Idempotency key (UUID) for asynchronous requests; ignored if request is synchronous |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Purchase Order

**Slug:** `NETSUITE_DELETE_PURCHASE_ORDER`

Tool to delete a purchase order record by ID. Use when you need to remove an existing purchase order from NetSuite.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal ID of the purchase order record to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Sales Order

**Slug:** `NETSUITE_DELETE_SALES_ORDER`

Tool to delete a sales order by internal ID. Use when you need to remove an existing sales order record from NetSuite. Use after confirming the record exists to avoid unintended deletions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal ID of the sales order record to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Vendor Payment

**Slug:** `NETSUITE_DELETE_VENDOR_PAYMENT`

Tool to delete a vendor payment record by ID. Use when you need to remove an existing vendor payment from NetSuite.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal ID of the vendor payment record to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Execute Dataset

**Slug:** `NETSUITE_EXECUTE_DATASET`

Tool to execute a SuiteAnalytics dataset and return paged results. Use when you need to retrieve dataset rows with paging support.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Page size; default is 1000, maximum is 1000; offset must be divisible by limit. |
| `offset` | integer | No | Zero-based index of the first item to return; must be a multiple of limit if both provided. |
| `dataset_id` | string | Yes | Internal ID of the SuiteAnalytics dataset to execute. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Filter Record Collection (Deprecated)

**Slug:** `NETSUITE_FILTER_RECORD_COLLECTION`

DEPRECATED: Use NETSUITE_LIST_RECORDS instead. Filters and retrieves NetSuite records by type with optional query expressions and pagination. Use this to list or search for records like customers, employees, vendors, invoices, etc. Supports filtering with query operators (EQUAL, START_WITH, CONTAIN, etc.) and pagination for large result sets. Returns record IDs and navigation links for accessing full record details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using NetSuite N/query operators. Common operators: EQUAL, NOT_EQUAL, GREATER_THAN, LESS_THAN, START_WITH, CONTAIN, ON_OR_AFTER, BEFORE, ANY_OF, EMPTY, EMPTY_NOT. Logical operators AND/OR and parentheses () supported for complex filters. Example: 'email START_WITH "barbara"' or 'creditLimit GREATER_THAN 1000 AND status EQUAL "active"' |
| `limit` | integer | No | Maximum number of records per page (1–1000); default is 1000. |
| `offset` | integer | No | Zero-based index of first record in page; must be divisible by limit. |
| `recordType` | string | Yes | Record type ID or script ID (e.g., 'customer') |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Customer

**Slug:** `NETSUITE_GET_CUSTOMER`

Tool to retrieve a customer record by internal ID. Use when you have a customer ID and need detailed customer data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the customer to retrieve |
| `fields` | string | No | Comma-separated list of body fields to return. Example: 'companyName,email,entityId' |
| `expandSubResources` | boolean | No | True to expand sublists/subrecords instead of returning only their links |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Customer Payment

**Slug:** `NETSUITE_GET_CUSTOMER_PAYMENT`

Tool to retrieve a customer payment record by ID. Use when you need to fetch payment details using the internal or external ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the customer payment, or external ID prefixed with 'eid:'. |
| `fields` | string | No | Comma-separated list of body fields to include; selective retrieval of sublist/subrecord fields is not supported. Example: 'payment,memo,customer' |
| `simpleEnumFormat` | boolean | No | If true, enumerated fields return only internal IDs; otherwise return objects with 'id' and 'refName' |
| `expandSubResources` | boolean | No | True to expand sublists and subrecords instead of returning only their links |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Data Center URLs

**Slug:** `NETSUITE_GET_DATACENTER_URLS`

Tool to discover account-specific service domains. Use when you need to determine the correct REST, SOAP, and UI endpoints before making other API calls.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `c` | string | No | Account ID routing hint; include if you encounter 'Service Unavailable'. |
| `account` | string | Yes | NetSuite account ID used to return account-specific domains. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Employee

**Slug:** `NETSUITE_GET_EMPLOYEE`

Tool to retrieve an employee record by ID. Use when you have an employee ID and need detailed employee data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the employee or external ID formatted as 'eid:<external_id>' to retrieve |
| `fields` | string | No | Comma-separated list of body fields to include. Example: 'firstName,lastName,email' |
| `expandSubResources` | boolean | No | True to expand sublists and subrecords inline; otherwise return only their HATEOAS links |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Governance Limits

**Slug:** `NETSUITE_GET_GOVERNANCE_LIMITS`

Retrieve NetSuite account and integration concurrency governance limits. Returns the maximum number of concurrent API requests allowed for your account and integration, helping you avoid exceeding concurrency limits that would result in HTTP 429 errors. Requires administrator permissions to execute.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Invoice

**Slug:** `NETSUITE_GET_INVOICE`

Tool to retrieve an invoice record by internal ID. Use when you have an invoice ID and need detailed invoice data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the invoice to retrieve |
| `fields` | string | No | Comma-separated list of body fields to return |
| `simpleEnumFormat` | boolean | No | True to return enum fields as internal ID values only |
| `expandSubResources` | boolean | No | True to expand sublists/subrecords instead of returning only their links |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Item

**Slug:** `NETSUITE_GET_ITEM`

Tool to retrieve an item record by internal ID. Use when you have an item ID and need detailed item data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the item to retrieve (or external ID with 'eid:' prefix) |
| `fields` | string | No | Comma-separated list of body fields to return. Example: 'itemId,displayName,basePrice' |
| `itemRecordType` | string | Yes | Specific item record type (e.g., 'inventoryItem', 'assemblyItem', 'serviceSaleItem', 'nonInventorySaleItem', etc.). Must match the REST Record Browser ID. |
| `expandSubResources` | boolean | No | True to expand sublists/subrecords instead of returning only their links |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Item Fulfillment

**Slug:** `NETSUITE_GET_ITEM_FULFILLMENT`

Tool to retrieve an item fulfillment record by internal ID. Use when you have an item fulfillment ID and need detailed fulfillment data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the item fulfillment record to retrieve |
| `fields` | string | No | Comma-separated list of body fields to return (e.g., 'entity,tranDate,status'). Cannot be used with expandSubResources parameter |
| `simpleEnumFormat` | boolean | No | When true, returns enumeration values as internal IDs only instead of full objects with id and refName |
| `expandSubResources` | boolean | No | When true, expands sublists and subrecords with full data instead of returning only links. Cannot be used with fields parameter |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Item Receipt

**Slug:** `NETSUITE_GET_ITEM_RECEIPT`

Tool to retrieve an item receipt record by internal ID. Use when you have an item receipt ID and need detailed item receipt data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the item receipt to retrieve |
| `fields` | string | No | Comma-separated list of body fields to return. Example: 'tranId,entity,quantity' |
| `expandSubResources` | boolean | No | True to expand sublists/subrecords instead of returning only their links |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Journal Entry

**Slug:** `NETSUITE_GET_JOURNAL_ENTRY`

Tool to retrieve a journal entry by internal ID. Use when you have a journal entry ID and need detailed journal entry data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the journal entry to retrieve |
| `fields` | string | No | Comma-separated list of body fields or sublists to return. Example: 'approved,line.items' |
| `simpleEnumFormat` | boolean | No | True to return enum fields as internal ID values only |
| `expandSubResources` | boolean | No | True to expand sublists/subrecords instead of returning only their links |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Purchase Order

**Slug:** `NETSUITE_GET_PURCHASE_ORDER`

Retrieves complete details of a purchase order by its internal ID using the NetSuite REST API. Use this action when you need to: - Get full details of a specific purchase order (vendor, items, amounts, dates, status) - View line items and expenses on a purchase order - Check purchase order status, approval status, or fulfillment details - Access billing and shipping addresses for a purchase order The response includes comprehensive purchase order data such as vendor information, transaction dates, currency, line items, totals, addresses, custom fields, and more. You can filter fields or expand sublists as needed using optional parameters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the purchase order to retrieve. This is the numeric ID from NetSuite, not the transaction number (tranId). |
| `fields` | string | No | Optional comma-separated list of specific fields to return in the response. If omitted, all available fields are returned. Common fields include: tranId, status, entity, total, tranDate, currency, location, dueDate, terms. Example: 'tranId,status,entity,total' |
| `simpleEnumFormat` | boolean | No | Set to true to return enumeration field values as simple strings (their internal ID) instead of objects with 'id' and 'refName'. For example, status would be 'Fully Billed' instead of {'id': 'Fully Billed', 'refName': 'Fully Billed'}. Default is false. |
| `expandSubResources` | boolean | No | Set to true to expand sublists and subrecords (like line items, addresses) with full details instead of just returning HATEOAS links. Default is false. Useful when you need complete item details, billing/shipping addresses, or expense line details. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Record Metadata

**Slug:** `NETSUITE_GET_RECORD_METADATA`

Retrieves the complete metadata schema for a NetSuite record type, including all field definitions, data types, constraints, and descriptions. Use this action to discover available fields and their requirements before creating or updating records. The metadata includes standard and custom fields, field types (string, number, boolean, date, references), nullability, format constraints, and descriptive help text. Essential for dynamic record handling and validation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `accept` | string ("application/schema+json" | "application/swagger+json") | No | The format for the returned metadata. 'application/schema+json' (default) returns a JSON Schema definition describing the record's fields, types, and constraints. 'application/swagger+json' returns an OpenAPI 3.0 specification. Use JSON Schema format for programmatic field validation and discovery. |
| `record_type` | string | Yes | The NetSuite record type identifier. Common values include: 'customer', 'salesorder', 'invoice', 'vendor', 'employee', 'item', 'purchaseorder', 'journalentry'. Use lowercase names matching NetSuite's record type identifiers. To discover available record types, use the List Metadata Catalog action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Reference Select Field

**Slug:** `NETSUITE_GET_REFERENCE_SELECT_FIELD`

Retrieves the complete record referenced by a select-type field on a parent record. Use this when you have a parent record (e.g., customer, salesorder) that references another record via a select field (e.g., 'subsidiary', 'entity', 'currency'), and you need the full details of that referenced record. Example: If a customer has subsidiary ID "1", use this to get all subsidiary details instead of just the ID reference. Common select fields by record type: - customer: subsidiary, currency, terms, salesRep, parent - salesorder/invoice: entity (customer), subsidiary, currency, terms - employee: supervisor, subsidiary, department - vendor: subsidiary, currency, terms

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the parent record or external ID prefixed with 'eid:'. |
| `fields` | string | No | Comma-separated list of body field IDs to include in the response of the referenced record. |
| `record_type` | string | Yes | Internal ID or script ID of the parent record type (e.g., 'customer' or custom record script ID). |
| `select_field` | string | Yes | Script ID of the select-type field on the parent record that references another record (e.g., 'subsidiary'). |
| `expandSubResources` | boolean | No | True to expand sublists/subrecords of the returned referenced record; otherwise they are returned as links. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Sales Order

**Slug:** `NETSUITE_GET_SALES_ORDER`

Tool to retrieve a sales order record by internal ID. Use when you have a sales order ID and need detailed sales order data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the sales order to retrieve |
| `fields` | string | No | Comma-separated list of record body fields to return. Example: 'tranId,entity,tranDate' |
| `expandSubResources` | boolean | No | True to expand sublists/subrecords instead of returning only their links |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Server Time

**Slug:** `NETSUITE_GET_SERVER_TIME`

Tool to retrieve NetSuite server time in UTC. Use when you need the current server timestamp for synchronization.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Sublist Collection

**Slug:** `NETSUITE_GET_SUBLIST_COLLECTION`

Tool to retrieve a sublist collection from a parent record. Use when you need all lines of a given sublist (e.g., items on a sales order).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID or external ID using the 'eid:' prefix (e.g., 'eid:EXT123'). |
| `record_type` | string | Yes | Record type ID (e.g., 'customer', 'salesOrder'). |
| `sublist_name` | string | Yes | Name of the sublist on the record (e.g., 'item'). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Sublist Line

**Slug:** `NETSUITE_GET_SUBLIST_LINE`

Tool to retrieve a specific line from a sublist of a record. Use when you need details of a particular sublist line by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID or external ID (prefixed with 'eid:') of the parent record. |
| `line_id` | string | Yes | Identifier of the sublist line; internal ID or external ID prefixed with 'eid:'. |
| `record_type` | string | Yes | Identifier of the record type (e.g., 'salesOrder'). |
| `sublist_name` | string | Yes | Identifier of the sublist (e.g., 'item'). |
| `expandSubResources` | boolean | No | True to expand nested subresources instead of returning only links. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Subrecord

**Slug:** `NETSUITE_GET_SUBRECORD`

Retrieves a specific subrecord from a parent NetSuite record. Subrecords are body-level structured fields on NetSuite records that contain related data. Common examples include: - billingaddress and shippingaddress on sales orders, invoices, and purchase orders - Address subrecords on customer and vendor records This action uses the NetSuite REST Record API v1 to access subrecords via the endpoint pattern: /record/v1/{recordType}/{id}/{subrecordName} Use this when you need to retrieve detailed subrecord data separately from the parent record, which can be more efficient than fetching the entire parent record with expanded subresources.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the parent record instance. This is the unique identifier for the specific record containing the subrecord. |
| `record_type` | string | Yes | Type of the parent record (e.g., 'salesOrder', 'purchaseOrder'). This is the record type that contains the subrecord. |
| `subrecord_name` | string | Yes | Name of the subrecord field to retrieve (e.g., 'billingaddress', 'shippingaddress'). This must be a valid body-level subrecord field on the parent record type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Vendor

**Slug:** `NETSUITE_GET_VENDOR`

Tool to get a single vendor record by internal ID. Use when needing specific vendor information.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the vendor to retrieve |
| `fields` | string | No | Comma-separated list of body fields to return. Example: 'entityId,email' |
| `simpleEnumFormat` | boolean | No | True to return enumeration values as internal ID values only |
| `expandSubResources` | boolean | No | True to expand sublists/subrecords instead of returning only their links |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Vendor Bill

**Slug:** `NETSUITE_GET_VENDOR_BILL`

Retrieve a vendor bill record by its internal ID. Returns comprehensive bill details including vendor information, line items, amounts, dates, approval status, and accounting data. Use the 'fields' parameter to retrieve specific fields only, or 'expandSubResources' to include full sublist details (expense/item lines). Useful for auditing bills, payment processing, or integration workflows.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the vendor bill to retrieve |
| `fields` | string | No | Comma-separated list of body fields to return (e.g., 'tranDate,entity,total'). Reduces response size by returning only specified fields. Cannot be used with expandSubResources parameter. |
| `expandSubResources` | boolean | No | Set to true to expand sublists/subrecords (expense lines, item lines, etc.) with full details instead of just links. Cannot be used with fields parameter. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Vendor Payment

**Slug:** `NETSUITE_GET_VENDOR_PAYMENT`

Retrieves a single vendor payment record by its internal ID from NetSuite. A vendor payment represents a payment made to a vendor, typically to settle one or more vendor bills. Use this action when you need detailed information about a specific vendor payment, including: - Payment amount, date, and transaction ID - Associated vendor information - Payment account and currency details - Applied bills (transactions being paid) - Accounting period and subsidiary To find vendor payment IDs, use the LIST_VENDOR_PAYMENTS action first.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID of the vendor payment record to retrieve. This can be obtained from the LIST_VENDOR_PAYMENTS action. |
| `fields` | string | No | Comma-separated list of specific fields to return in the response. If not specified, all available fields are returned. Common fields: 'entity', 'tranDate', 'total', 'balance', 'account', 'currency', 'tranId'. Note: Cannot be used together with expandSubResources parameter. |
| `expandSubResources` | boolean | No | Set to true to expand sublists and subrecords (e.g., apply list showing bills being paid) with full details. If false or not specified, only links to these resources are returned. Note: Cannot be used together with fields parameter. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Customer Payments

**Slug:** `NETSUITE_LIST_CUSTOMER_PAYMENTS`

Tool to list customer payment records. Use when you need to retrieve payments with optional filtering and pagination after establishing a valid NetSuite connection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using N/query operators; e.g., 'dateCreated ON_OR_AFTER "2025-01-01"'. Logical AND/OR and parentheses supported. Wrap multi-word values in quotes. |
| `limit` | integer | No | Maximum number of records per page (1–1000); default is 1000. |
| `offset` | integer | No | Zero-based index of first record in page; must be divisible by limit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Datasets

**Slug:** `NETSUITE_LIST_DATASETS`

Tool to list SuiteAnalytics Workbook datasets. Use when you need to retrieve datasets with optional pagination after establishing a valid NetSuite connection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of datasets per page (1–1000); default is 1000. |
| `offset` | integer | No | Zero-based index of first dataset in page; must be divisible by limit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Employees

**Slug:** `NETSUITE_LIST_EMPLOYEES`

Tool to list employee records. Use when you need to retrieve multiple employees with optional filtering and pagination after establishing a valid NetSuite connection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using Record Collection Filtering operators; e.g., 'supervisor EQUAL 13'. Logical AND/OR and parentheses supported. Wrap multi-word values in quotes. |
| `limit` | integer | No | Maximum number of records per page (1	61000); default is 1000. |
| `offset` | integer | No | Zero-based index of first record in page; must be divisible by limit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Integrations

**Slug:** `NETSUITE_LIST_INTEGRATIONS`

Tool to list integration applications. Use when you need to retrieve client IDs and redirect URIs necessary for OAuth2 authorization flows.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of integrations to return (1-1000). |
| `offset` | integer | No | Zero-based index of first integration to return; must be divisible by limit when both are provided. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Invoices

**Slug:** `NETSUITE_LIST_INVOICES`

Tool to list invoice records. Use when you need to retrieve multiple invoices with optional filtering and pagination after establishing a valid NetSuite connection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using N/query operators; e.g., 'status EQUAL "OPEN"'. Logical AND/OR and parentheses supported. Wrap multi-word values in quotes. |
| `limit` | integer | No | Maximum number of records per page (1–1000); default is 1000. |
| `offset` | integer | No | Zero-based index of first record in page; must be divisible by limit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Item Fulfillments

**Slug:** `NETSUITE_LIST_ITEM_FULFILLMENTS`

Tool to list item fulfillment records. Use when you need to retrieve multiple item fulfillments with optional filtering and pagination after establishing a valid NetSuite connection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using N/query operators; e.g., 'status EQUAL "_shipped"'. Logical AND/OR and parentheses supported. |
| `limit` | integer | No | Maximum number of records per page (1	6	6); default is 1000. |
| `offset` | integer | No | Zero-based index of first record in page; must be divisible by limit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Item Receipts

**Slug:** `NETSUITE_LIST_ITEM_RECEIPTS`

Tool to list item receipt records. Use when you need to retrieve multiple item receipt records with optional filtering and pagination after confirming a valid NetSuite connection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using N/query operators; e.g., 'itemReceiptNumber EQUAL "123"'. Supports logical AND/OR and parentheses. Wrap multi-word values in quotes. |
| `limit` | integer | No | Maximum number of records per page (1–1000); default is 1000. |
| `offset` | integer | No | Zero-based index of first record in page; must be divisible by limit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Journal Entries

**Slug:** `NETSUITE_LIST_JOURNAL_ENTRIES`

Tool to list journal entry records. Use when you need to retrieve multiple journal entries with optional filtering and pagination after establishing a valid NetSuite connection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using N/query operators; e.g., 'memo CONTAIN "expense"'. Logical AND/OR and parentheses supported. Wrap multi-word values in quotes. |
| `limit` | integer | No | Maximum number of records per page (1–1000); default is 1000. |
| `offset` | integer | No | Zero-based index of first record in page; must be divisible by limit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Metadata Catalog

**Slug:** `NETSUITE_LIST_METADATA_CATALOG`

Tool to list all record types and their metadata. Use after authenticating when you need to discover available record definitions before further API calls.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `accept` | string | No | Response format. Only 'application/json' is supported, which returns the HATEOAS catalog format with record descriptors and links. This parameter can typically be omitted (defaults to application/json). |
| `select` | string | No | Single record type ID to retrieve metadata for (e.g., 'customer', 'invoice', 'vendor'). When specified, returns metadata for only that record type. When omitted, returns the full catalog of all available record types. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Purchase Orders

**Slug:** `NETSUITE_LIST_PURCHASE_ORDERS`

Tool to list purchase order records. Use when you need to retrieve multiple purchase orders with optional filtering and pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using N/query operators; e.g., 'entity IS 123'. Logical AND/OR and parentheses supported. Wrap multi-word values in quotes. |
| `limit` | integer | No | Maximum number of records per page (1–1000); default is 1000. |
| `offset` | integer | No | Zero-based index of first record in page; must be divisible by limit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Records

**Slug:** `NETSUITE_LIST_RECORDS`

Tool to list record instances. Use when you need to retrieve multiple records with optional filtering and pagination after establishing a valid NetSuite connection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using N/query operators; e.g., 'email START_WITH "barbara"'. Logical AND/OR and parentheses supported. Wrap multi-word values in quotes. |
| `limit` | integer | No | Maximum number of records per page (1	6000); default is 1000. |
| `offset` | integer | No | Zero-based index of first record in page; must be divisible by limit. |
| `recordType` | string | Yes | The record type identifier; e.g., customer, salesorder. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Sales Orders

**Slug:** `NETSUITE_LIST_SALES_ORDERS`

Tool to list sales order records. Use when you need to retrieve multiple sales orders with optional filtering and pagination after establishing a valid NetSuite connection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using N/query operators; e.g., 'entity IS 123'. Logical AND/OR and parentheses supported. Wrap multi-word values in quotes. |
| `limit` | integer | No | Maximum number of records per page (1–1000); default is 1000. |
| `offset` | integer | No | Zero-based index of first record in page; must be divisible by limit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Vendor Payments

**Slug:** `NETSUITE_LIST_VENDOR_PAYMENTS`

Tool to list vendor payment records. Use when you need to retrieve vendor payments with optional filtering and pagination after establishing a valid NetSuite connection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter expression using N/query operators; e.g., 'amount BETWEEN 100 AND 500'. Logical AND/OR and parentheses supported. Wrap multi-word values in quotes. |
| `limit` | integer | No | Maximum number of records per page (1–1000); default is 1000. |
| `offset` | integer | No | Zero-based index of the first record in page; must be divisible by limit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### OAuth2 Authorize Account Domain

**Slug:** `NETSUITE_O_AUTH2_AUTHORIZE_ACCOUNT_DOMAIN`

Tool to construct an OAuth2 authorization URL for a NetSuite account-specific domain. Use when initiating the OAuth2 authorization code flow.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `scope` | string | Yes | Space-delimited list of scopes. Allowed values: restlets, rest_webservices, suite_analytics, mcp; 'mcp' cannot be combined with others, and scopes must be enabled on the integration record. |
| `state` | string | No | Opaque CSRF token (22-1024 printable ASCII), unique per flow |
| `prompt` | string ("none" | "login" | "consent" | "login consent" | "consent login") | No | Controls user prompt behavior: 'none' (no prompt; not allowed with mcp), 'login' (account domain only), 'consent', 'login consent', or 'consent login' |
| `client_id` | string | Yes | Integration record's client ID |
| `redirect_uri` | string | Yes | Redirect URI registered in the integration record (must match exactly) |
| `response_type` | string | No | Must be 'code' for the authorization code grant type |
| `code_challenge` | string | No | PKCE code challenge (base64url-encoded SHA256 of the code_verifier). Required for public clients or when scope=mcp. |
| `code_challenge_method` | string | No | Must be 'S256' when sending a code_challenge |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### OAuth2 Authorize System Domain

**Slug:** `NETSUITE_O_AUTH2_AUTHORIZE_SYSTEM_DOMAIN`

Initiates the OAuth2 authorization code flow using NetSuite's system domain endpoint. Returns the authorization URL where users should be redirected to authenticate and grant permissions. After user authorization, NetSuite redirects back to your redirect_uri with an authorization code. Use this when you don't know the specific NetSuite account ID or want to use the generic system domain.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `nonce` | string | No | Optional string to associate a user session with an ID token; max length 256 characters. |
| `scope` | string | Yes | Space-separated list of OAuth2 scopes. Valid values are 'openid' and 'email'. Use 'openid email' for both, or either one individually. |
| `state` | string | Yes | Opaque value to maintain state between request and callback; 22–1024 printable ASCII characters. |
| `prompt` | string ("none" | "login" | "consent" | "login consent") | No | OAuth2 prompt behavior: 'none' (no consent screen), 'login' (force authentication), 'consent' (always show consent), or 'login consent' (both required). |
| `client_id` | string | Yes | The integration record's client identifier. |
| `redirect_uri` | string | Yes | The exact callback URI registered in the integration record; must match registration. |
| `response_type` | string | No | OAuth2 response type. Must be 'code'. |
| `code_challenge` | string | No | PKCE code challenge, required for public clients; base64url(SHA256(code_verifier)), 43–128 characters. |
| `code_challenge_method` | string | No | Method to derive code_challenge; only 'S256' is supported. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get OAuth2 JWKS Keys

**Slug:** `NETSUITE_OAUTH2_GET_JWKS_KEYS`

Tool to retrieve OAuth2 JWKS public keys. Use when validating token signatures.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### OAuth2 Logout

**Slug:** `NETSUITE_O_AUTH2_LOGOUT`

Tool to revoke an ID token and its associated access and refresh tokens. Use when ending an OAuth2 session to ensure credentials are invalidated.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id_token_hint` | string | Yes | ID token to revoke; revokes its associated access and refresh tokens. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Revoke OAuth2 Refresh Token

**Slug:** `NETSUITE_O_AUTH2_REVOKE_REFRESH_TOKEN`

Revokes a NetSuite OAuth2 refresh token and all associated access tokens, immediately invalidating them. Use this when: - A user logs out and you want to invalidate their session tokens - Credentials are compromised and need immediate revocation - Decommissioning an integration or removing access - Cleaning up test tokens after development Note: This is a destructive operation - revoked tokens cannot be reused.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `token` | string | Yes | The OAuth2 refresh token (JWT format) to revoke. Once revoked, this token and its associated access tokens become invalid. |
| `client_id` | string | No | OAuth2 client ID for public clients. When provided, skips Basic authentication and sends client_id in the request body instead. Leave empty for confidential clients that use metadata credentials. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Exchange OAuth2 Authorization Code for Tokens

**Slug:** `NETSUITE_O_AUTH2_TOKEN_AUTHORIZATION_CODE`

Exchange an OAuth2 authorization code for access and refresh tokens using the NetSuite token endpoint. This is the second step in the OAuth2 authorization code flow with PKCE: 1. User authorizes via OAuth2AuthorizeAccountDomain or OAuth2AuthorizeSystemDomain 2. User is redirected to your redirect_uri with authorization code 3. Use THIS action to exchange the code for tokens 4. Use access_token to make API requests, refresh_token to get new access tokens Supports both confidential clients (client secret in metadata) and public clients (no secret). PKCE (code_verifier) is required for security.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | Yes | Authorization code received from the OAuth2 authorization endpoint callback. This code is single-use and expires quickly (typically within 5-10 minutes). |
| `client_id` | string | No | Client ID from the NetSuite integration record. Required only when client credentials are not provided in metadata (public client flow). |
| `grant_type` | string | No | OAuth2 grant type. Always 'authorization_code' for this flow. |
| `redirect_uri` | string | Yes | Redirect URI that must exactly match the one used in the authorization request and registered in the NetSuite integration record. Mismatches will cause the request to fail. |
| `code_verifier` | string | Yes | PKCE code verifier (43-128 character random string) used to generate the code_challenge in the initial authorization request. Required for security. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### OAuth2 Token Client Credentials

**Slug:** `NETSUITE_O_AUTH2_TOKEN_CLIENT_CREDENTIALS`

Tool to obtain an OAuth2 access token via client credentials grant. Use when authenticating to NetSuite APIs with a JWT-based client credentials flow.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `grant_type` | string | No | Grant type for OAuth2 client credentials flow (must be 'client_credentials'). |
| `client_assertion` | string | Yes | JWT assertion token signed with the integration's private key. |
| `client_assertion_type` | string | No | Client assertion type indicating a JWT bearer grant. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### OAuth2 Token Refresh

**Slug:** `NETSUITE_O_AUTH2_TOKEN_REFRESH`

Tool to refresh an OAuth2 access token. Use when the current access token has expired and you need a new one.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `client_id` | string | No | OAuth2 client ID. Required for public clients if Authorization header is omitted. |
| `client_secret` | string | No | OAuth2 client secret for confidential clients. |
| `refresh_token` | string | No | OAuth2 refresh token in JWT format. If omitted, uses the configured metadata refresh_token. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Run SuiteQL Query

**Slug:** `NETSUITE_RUN_SUITEQL_QUERY`

Tool to execute a SuiteQL query. Use when you need ad-hoc SQL queries against NetSuite data with server-side paging.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | Yes | SuiteQL SELECT statement to execute. |
| `limit` | integer | No | Number of rows per page. |
| `offset` | integer | No | Zero-based index of first row; must be a multiple of `limit` if both provided. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Transform Record

**Slug:** `NETSUITE_TRANSFORM_RECORD`

Transform an existing NetSuite record into another record type (e.g., sales order to invoice, purchase order to item receipt). Creates a new target record populated with data from the source record. Supports common business workflows like: - Converting sales orders to invoices or item fulfillments - Converting purchase orders to item receipts or vendor bills - Converting invoices to credit memos Optionally override fields on the transformed record via record_body parameter.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `Prefer` | string | No | Use 'respond-async' to run the transform asynchronously. |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided in record_body. The sublists must be present in record_body or the request will fail. Common sublists: 'item', 'apply'. Example: 'item' or 'apply,item'. |
| `record_id` | integer | Yes | Internal ID of the source record instance to transform. Must be a valid, existing record in NetSuite. |
| `record_body` | object | No | Optional JSON object with field values to set on the transformed record |
| `source_record_type` | string | Yes | Source record type to transform. Common types: salesOrder, purchaseOrder, invoice, customer. Use camelCase format. |
| `target_record_type` | string | Yes | Target record type to create from source. Common transformations: salesOrder→invoice, salesOrder→itemFulfillment, purchaseOrder→itemReceipt, purchaseOrder→vendorBill. Use camelCase format. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID to ensure idempotent async requests; ignored for synchronous calls. |
| `X-NetSuite-PropertyNameValidation` | string | No | Controls strictness for property name validation (ignore\|warning\|error). |
| `X-NetSuite-PropertyValueValidation` | string | No | Controls strictness for property value validation (ignore\|warning\|error). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Customer

**Slug:** `NETSUITE_UPDATE_CUSTOMER`

Updates an existing NetSuite customer record using PATCH semantics - only fields included in the 'data' parameter are modified. Use this action to: - Update customer contact information (email, phone, address) - Change customer status, sales rep, territory, or terms - Modify customer preferences and settings - Update custom fields Returns the location URL of the updated record. Supports both synchronous (immediate) and asynchronous processing modes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal ID of the customer record to update. Use GET Customer to retrieve existing customer IDs. |
| `data` | object | Yes | JSON object with customer fields to update. Only include fields you want to change; omitted fields remain unchanged. Common fields: 'companyName' (string), 'email' (string), 'phone' (string), 'comments' (string), 'emailTransactions' (boolean), 'entityStatus' (object with 'id'), etc. Reference fields should be objects with 'id' property (e.g., {'id': '13'}). |
| `prefer` | string | No | Set to 'respond-async' for asynchronous processing. When used, the operation returns immediately with a 202 status and job URL in the Location header. Useful for bulk operations or when immediate response isn't needed. |
| `idempotency_key` | string | No | RFC4122 UUID string for idempotent async requests (e.g., '550e8400-e29b-41d4-a716-446655440000'). Only used when 'prefer' is 'respond-async'. Prevents duplicate operations if request is retried. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | How to handle invalid property names in request: 'Error' (default, rejects request), 'Warning' (accepts with warning), 'Ignore' (silently ignores invalid names). |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | How to handle invalid property values in request: 'Error' (default, rejects request), 'Warning' (accepts with warning), 'Ignore' (attempts to proceed despite invalid values). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Customer Payment

**Slug:** `NETSUITE_UPDATE_CUSTOMER_PAYMENT`

Tool to update an existing customer payment by ID. Use when you need to modify fields of a customer payment record. Updates only the specified fields; all other fields remain unchanged. Common use cases include updating memo notes, email preferences, or transaction metadata.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the customer payment record to update. |
| `data` | object | Yes | Customer payment record JSON object containing fields to update; omitted fields remain unchanged. Common updatable fields include: memo (string), toBeEmailed (boolean), tranDate (date string), account (object with id), and other payment metadata. Example: {"memo": "Payment received", "toBeEmailed": true} |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `idempotency_key` | string | No | RFC4122 UUID string to use as idempotency key for async requests. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property name validation: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property value validation: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Employee

**Slug:** `NETSUITE_UPDATE_EMPLOYEE`

Tool to update an employee record by ID. Use when modifying fields of an existing employee.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Internal ID or external ID (prefixed with 'eid:') of the employee record to update. |
| `data` | object | Yes | Employee record JSON object containing fields to update; omitted fields remain unchanged. |
| `Prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `replace` | string | No | Comma-separated list of body fields or sublists to replace or target. |
| `replaceSelectedFields` | boolean | No | When true, only the fields named in 'replace' and explicitly set to null in the request are deleted. |
| `X-NetSuite-Idempotency-Key` | string | No | UUID for idempotent async requests. |
| `X-NetSuite-PropertyNameValidation` | string ("Error" | "Warning" | "Ignore") | No | Controls strictness for property name validation. |
| `X-NetSuite-PropertyValueValidation` | string ("Error" | "Warning" | "Ignore") | No | Controls strictness for property value validation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Invoice

**Slug:** `NETSUITE_UPDATE_INVOICE`

Updates an existing NetSuite invoice record by ID using the PATCH method. Only the fields specified in the 'data' parameter are updated; all other fields remain unchanged. Common use cases: - Update invoice memo or reference numbers - Change invoice email settings or customer contact info - Modify invoice due dates or payment terms - Update custom field values (custbody_* fields) Note: After updating, use the GET_INVOICE action if you need to retrieve the updated invoice data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the invoice record to update. |
| `data` | object | Yes | Invoice record JSON object containing fields to update; omitted fields remain unchanged. Common updatable fields include: memo (string), email (string), dueDate (date string YYYY-MM-DD), toBeEmailed (boolean), toBePrinted (boolean), toBeFaxed (boolean), otherRefNum (string), terms (object with 'id' key), salesRep (object with 'id' key), location (object with 'id' key), customForm (object with 'id' key), and custom fields (e.g., custbody_* fields). For reference fields, provide objects with 'id' key and the internal ID as a string. |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `idempotency_key` | string | No | RFC4122 UUID string to use as idempotency key for async requests. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property name validation: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property value validation: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Item

**Slug:** `NETSUITE_UPDATE_ITEM`

Tool to update an item record by ID. Use when modifying selected fields of an existing item; omitted fields remain unchanged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the item record to update. |
| `data` | object | Yes | Item record JSON object containing fields to update; omitted fields remain unchanged. |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `replace` | string | No | Comma-separated sublist names to fully replace with those provided. |
| `item_type` | string | Yes | Internal item record type ID, e.g., inventoryItem, assemblyItem, downloadItem. |
| `idempotency_key` | string | No | RFC4122 UUID string to use as idempotency key for async requests. |
| `replaceSelectedFields` | boolean | No | When true, any fields to delete must be included via replace. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property name validation: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property value validation: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Item Fulfillment

**Slug:** `NETSUITE_UPDATE_ITEM_FULFILLMENT`

Tool to update an Item Fulfillment record by ID. Use when modifying fields or sublists of an existing fulfillment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the item fulfillment record to update. |
| `data` | object | Yes | Item Fulfillment record JSON object containing fields and sublists to update; omitted fields remain unchanged. |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `replace` | string | No | Comma-separated field or sublist names to fully replace with those provided in 'data'. |
| `idempotency_key` | string | No | RFC4122 UUID string to use as idempotency key for async requests. |
| `replaceSelectedFields` | boolean | No | When true, any body fields explicitly listed and set to null are deleted. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property name validation: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property value validation: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Item Receipt

**Slug:** `NETSUITE_UPDATE_ITEM_RECEIPT`

Tool to update an item receipt record by ID. Use when modifying fields of an existing item receipt.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the item receipt record to update. |
| `data` | object | Yes | Item receipt record JSON object containing fields to update; omitted fields remain unchanged. Set a field to null to delete its value. |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `replace` | string | No | Comma-separated sublist names to fully replace (e.g., 'item'). |
| `idempotency_key` | string | No | RFC4122 UUID string to use as idempotency key for async requests. |
| `replaceSelectedFields` | boolean | No | When true, fields to be deleted must be included in 'replace'; use with setting those fields to null in data to delete them. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property name validation: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property value validation: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Journal Entry

**Slug:** `NETSUITE_UPDATE_JOURNAL_ENTRY`

Tool to update a journal entry record by ID. Use when modifying fields of an existing journal entry after retrieving its details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the journal entry record to update. |
| `data` | object | Yes | Journal entry JSON object containing fields to update; omitted fields remain unchanged. |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `replace` | string | No | Comma-separated sublist names to fully replace (e.g., 'line'). Unspecified sublists are appended. |
| `idempotency_key` | string | No | RFC4122 UUID string to use as idempotency key for async requests. |
| `replace_selected_fields` | boolean | No | When true, fields to delete must be named in replace; applies to body and sublists. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Validation strictness for field names: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Validation strictness for field values: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Purchase Order

**Slug:** `NETSUITE_UPDATE_PURCHASE_ORDER`

Tool to update a purchase order record by ID. Use when modifying fields of an existing purchase order. Call after retrieving the record to confirm current values.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the purchase order record to update. |
| `data` | object | Yes | Purchase order record JSON object containing writable fields to update; omit fields you do not wish to change. |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `idempotency_key` | string | No | RFC4122 UUID to use as idempotency key for async requests. |
| `replaceSelectedFields` | boolean | No | When true, any field in the body set to null will be deleted from the record; otherwise null values are ignored. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Validation level for property names: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Validation level for property values: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Sales Order

**Slug:** `NETSUITE_UPDATE_SALES_ORDER`

Updates an existing NetSuite sales order record by ID using PATCH semantics. Only the fields provided in the data parameter will be modified; all other fields remain unchanged. Use this tool when you need to modify specific fields on an existing sales order, such as updating the memo, PO number, or status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the sales order record to update. |
| `data` | object | Yes | Sales order record JSON object containing fields to update. Only the fields specified will be updated; omitted fields remain unchanged. Common updatable fields include: memo, otherrefnum (PO number), tranDate, orderStatus, and item sublists. See NetSuite REST API documentation for complete field reference. |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `idempotency_key` | string | No | RFC4122 UUID string to use as idempotency key for async requests. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property name validation: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property value validation: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Vendor

**Slug:** `NETSUITE_UPDATE_VENDOR`

Tool to update a vendor record by ID. Use when modifying fields of an existing vendor.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the vendor record to update. |
| `data` | object | Yes | Vendor record JSON object containing fields to update; omitted fields remain unchanged. |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `idempotency_key` | string | No | RFC4122 UUID string to use as idempotency key for async requests. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property name validation: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property value validation: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Vendor Bill

**Slug:** `NETSUITE_UPDATE_VENDOR_BILL`

Tool to update a vendor bill record by ID. Use when modifying fields of an existing vendor bill.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the vendor bill record to update. |
| `data` | object | Yes | Vendor bill record JSON object containing fields to update; omitted fields remain unchanged. Set a field to null to delete its value. |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `replace` | string | No | Comma-separated sublist names to fully replace (e.g., 'item', 'expenses', 'addressBook'). |
| `idempotency_key` | string | No | RFC4122 UUID string to use as idempotency key for async requests. |
| `replaceSelectedFields` | boolean | No | When true, fields to be deleted must be included in 'replace'; use with setting those fields to null in data to delete them. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property name validation: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property value validation: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Vendor Payment

**Slug:** `NETSUITE_UPDATE_VENDOR_PAYMENT`

Tool to update a vendor payment record by ID. Use when modifying one or more fields on an existing vendor payment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Internal identifier of the vendor payment record to update. |
| `data` | object | Yes | VendorPayment record JSON object containing fields to update; omitted fields remain unchanged. |
| `prefer` | string | No | Use 'respond-async' to request asynchronous processing. |
| `replace` | string | No | Comma-delimited sublist names whose lines should be fully replaced. |
| `idempotency_key` | string | No | RFC4122 UUID string to use as idempotency key for async requests. |
| `replaceSelectedFields` | boolean | No | If true, fields being deleted in an update must be listed in replace. |
| `property_name_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property name validation: Error, Warning, or Ignore. |
| `property_value_validation` | string ("Error" | "Warning" | "Ignore") | No | Strictness level for property value validation: Error, Warning, or Ignore. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Record by External ID

**Slug:** `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID`

Tool to create or update a record by external ID. Use when you need to ensure a record exists or update its fields in one call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | Yes | JSON object matching the record schema; include mandatory fields when creating. Omitted fields are unchanged on update. |
| `external_id` | string | Yes | External ID value used in the path; letters, numbers, underscore (_), and hyphen (-) only. |
| `record_type` | string | Yes | Record type name or custom record script ID (e.g., 'customer' or 'customrecord_myrec'). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
