NetSuite MCP server

Prebuilt SnapLogic agentic-tool pipelines that let an LLM read from and act on NetSuite, callable as MCP tools via Pipeline Execute. Published in the SnapLogic pattern catalog.

Overview

This tool pack lets an agent read, create, update, delete, and search NetSuite records, run SuiteQL queries, transform transactions between document types, check item availability, and invoke custom RESTlets. It covers the full range of NetSuite operations an agent might need to automate finance and inventory workflows.

For setup instructions, see SnapLogic MCP Server quickstart.

Example Prompts

  • Call the customscript_my_restlet RESTlet in NetSuite with the getSummary action
  • Invoke our custom NetSuite RESTlet on deployment customdeploy_my_restlet
  • Run the custom order-approval script in NetSuite for this order
  • Post this payload to our NetSuite RESTlet and show me what comes back
  • Create a customer in NetSuite called Test Company with email [email protected]
  • Add a new inventory item record to NetSuite
  • Set up a vendor record in NetSuite for Northwind Supplies
  • Create a sales order in NetSuite for this customer
  • Delete NetSuite note 5678
  • Remove the test customer record I created in NetSuite, internal ID 9901

Tools

Tool Name Functions
NetSuiteCallRESTlet POST a JSON payload to a custom NetSuite SuiteScript RESTlet.
NetSuiteCreateRecord Create a new NetSuite record of a given record type.
NetSuiteDeleteRecord Delete a NetSuite record by record type and internal ID.
NetSuiteGetItemAvailability Check live available and on-hand quantities for a NetSuite item.
NetSuiteGetRecord Read one NetSuite record by record type and internal ID.
NetSuiteGetServerTime Return the current NetSuite server time.
NetSuiteSearchRecords Search a NetSuite record type with a filter expression, with paging.
NetSuiteSuiteQLQuery Run an ad-hoc SuiteQL query against NetSuite and return the rows.
NetSuiteTransformRecord Transform a NetSuite transaction into a downstream record type.
NetSuiteUpdateRecord Update fields on an existing NetSuite record by internal ID.

Set up the MCP Server tools

  1. Download netsuite_tools.zip.
  2. In SnapLogic Designer, open the target project space (or create one), then choose Import Project / Import Pipelines and select the downloaded netsuite_tools.zip. Designer unpacks each pipeline into the project.
  3. Attach the required account to the connectivity snaps (see Connection Setup).
  4. Expose the project as an MCP server — each pipeline becomes a tool named after its label. New to this? Start with the MCP quickstart, then use the MCP Server Pipeline Builder to generate the server from the imported pipelines.

Configure account

Attach a NetSuite account (token-based auth or OAuth 2.0) to the NetSuite snaps in Designer after import.

These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute.

See the SnapLogic account documentation for this connector: Sp Netsuite Rest Accounts Config.Html.

Important: These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute. Credentials live in the SnapLogic account store, never in the pipeline JSON.

NetSuiteCallRESTlet

Calls a custom SuiteScript RESTlet deployed in the NetSuite account, letting an agent invoke bespoke business logic that the standard record and query tools cannot cover. Supply the script ID and deployment ID to target the specific RESTlet.

Parameter Type Default Description
script_id* string

Script ID of the deployed RESTlet, e.g. customscript_my_restlet.

deploy_id* string

Deployment ID of the RESTlet, e.g. customdeploy_my_restlet.

* Required parameter.

Try asking:

  • Call the customscript_my_restlet RESTlet in NetSuite with the getSummary action
  • Invoke our custom NetSuite RESTlet on deployment customdeploy_my_restlet
  • Run the custom order-approval script in NetSuite for this order
  • Post this payload to our NetSuite RESTlet and show me what comes back

NetSuiteCreateRecord

Creates a new NetSuite record of any supported type, such as a customer, vendor, or sales order. Use it when the user wants to add a new item to NetSuite rather than change an existing one.

Parameter Type Default Description
record_type* string

NetSuite record type to create, e.g. customer, vendor, salesOrder.

* Required parameter.

Try asking:

  • Create a customer in NetSuite called Test Company with email [email protected]
  • Add a new inventory item record to NetSuite
  • Set up a vendor record in NetSuite for Northwind Supplies
  • Create a sales order in NetSuite for this customer

NetSuiteDeleteRecord

Permanently deletes a specific NetSuite record identified by its type and internal ID. Use this only for records the user has explicitly named, such as test records, duplicates, or stray notes.

Parameter Type Default Description
record_type* string

NetSuite record type containing the record, e.g. note, customer.

internal_id* string

Internal ID of the record to delete.

* Required parameter.

Try asking:

  • Delete NetSuite note 5678
  • Remove the test customer record I created in NetSuite, internal ID 9901
  • Get rid of that duplicate NetSuite record

NetSuiteGetItemAvailability

Checks live available and on-hand quantities for a NetSuite inventory item. Use it to answer availability questions, such as whether there is enough stock to fulfil an order.

No parameters.

Try asking:

  • How many units of item 1234 do we have available in NetSuite?
  • Check stock on hand for this inventory item
  • Is there enough of that item in NetSuite to fulfil the order?
  • Give me availability for inventory item internal ID 300

NetSuiteGetRecord

Reads the full details of a single NetSuite record by its type and internal ID. Use this when the agent has already identified the record it needs and wants all its fields.

Parameter Type Default Description
record_type* string

NetSuite record type to read, e.g. customer, salesOrder, invoice, inventoryItem.

record_id* string

Internal ID of the record to read.

* Required parameter.

Try asking:

  • Pull up customer 1234 in NetSuite
  • Show me the full details of sales order internal ID 8871
  • Get invoice 4502 from NetSuite so I can check the terms
  • Fetch the inventoryItem record with internal ID 300

NetSuiteGetServerTime

Returns the current NetSuite server time, which is useful for verifying connectivity and as a reference clock when creating date-sensitive records.

No parameters.

Try asking:

  • What time is it on the NetSuite server?
  • Check that our NetSuite connection is working
  • What date does NetSuite think it is right now?

NetSuiteSearchRecords

Searches a NetSuite record type by attribute, returning matching records page by page. Use this when the user describes records by name or field value; use the SuiteQL tool for complex queries that need joins, aggregations, or sorting.

Parameter Type Default Description
record_type* string

NetSuite record type to search, e.g. customer, salesOrder, invoice.

search_filter string

SuiteTalk search filter expression, e.g. companyName CONTAIN Acme. Omit or leave blank for no filter.

pages string

Number of pages to retrieve. Defaults to 1.

page_size string

Records per page. Defaults to 100.

* Required parameter.

Try asking:

  • Find all NetSuite customers whose company name contains Acme
  • Search for sales orders in NetSuite and bring back the first 3 pages
  • List inventory items in NetSuite, 50 per page
  • Which customers in NetSuite match the name Northwind?

NetSuiteSuiteQLQuery

Runs an ad-hoc SuiteQL query against NetSuite and returns the result rows, supporting joins, filters, sorting, and aggregations across any NetSuite tables. Use this for analytical questions and complex data retrieval that search filters cannot handle.

Parameter Type Default Description
query* string

SuiteQL statement to execute, e.g. SELECT id, companyName, balance FROM customer WHERE balance > 0.

pages string

Number of pages to retrieve. Defaults to 0, meaning all pages.

page_size string

Rows per page. Defaults to 1000.

* Required parameter.

Try asking:

  • Run a SuiteQL query for customers with a balance over zero, biggest first
  • Total open invoice amount by customer in NetSuite
  • Query NetSuite for all sales orders created this month
  • Give me the top 20 items by quantity on hand from NetSuite, one page only

NetSuiteTransformRecord

Converts a NetSuite transaction into its next downstream document, such as turning a sales order into an invoice or an estimate into a sales order. Use this when the user wants to bill, fulfil, or advance an existing transaction through its workflow.

Parameter Type Default Description
source_record_type* string

Record type of the source transaction, e.g. salesOrder, estimate.

source_internal_id* string

Internal ID of the source transaction.

target_record_type* string

Record type to transform into, e.g. invoice, salesOrder.

* Required parameter.

Try asking:

  • Turn sales order 1234 into an invoice in NetSuite
  • Convert that NetSuite estimate into a sales order
  • Bill sales order 8871 by transforming it to an invoice
  • Create an item fulfillment from NetSuite sales order 4402

NetSuiteUpdateRecord

Updates specific fields on an existing NetSuite record, identified by its type and internal ID; only the fields you supply are changed. Use it to correct or enrich a record the user has already identified.

Parameter Type Default Description
record_type* string

NetSuite record type containing the record, e.g. customer, salesOrder.

internal_id* string

Internal ID of the record to update.

* Required parameter.

Try asking:

  • Change the email on NetSuite customer 1234 to [email protected]
  • Update the memo on sales order 8871 in NetSuite
  • Fix the phone number on that NetSuite vendor record
  • Set the credit limit on customer internal ID 4402