MCP App Store
Data
NetSuite icon

NetSuite

by Oracle NetSuite

Overview

A flexible and scalable way to connect Claude to NetSuite and use AI to query and analyze NetSuite data.

Tools

ns_createRecord

ChatGPT
Create a new record in NetSuite. HOW TO USE: 1. Call ns_getRecordTypeMetadata for the target record type to understand required fields and structure. 2. For fields that reference other NetSuite records (e.g., customer, entity, item): - If a value is already specified by name, look up its internal ID using SuiteQL. - If the value is missing, use ns_selector_app to prompt the user to select an appropriate record. 3. When all required fields (including reference IDs) are known, call this tool with the complete data to create the record.

ns_getAccountingBooks

ChatGPT
Returns all accounting books available to the user for report execution. WHEN TO CALL: - After selecting a report from ns_listAllReports where supports_book or supports_book2 is true - Before calling ns_runReport if you plan to provide book or book2 RETURN VALUES: - Empty array: No selectable accounting books are available for the current account/role - Non-empty array: You can pass one or two accounting book IDs to ns_runReport (book and/or book2) Each accounting book contains: - id: Numeric internal ID to use in ns_runReport - name: Human-readable accounting book name

ns_getAccountingContexts

ChatGPT
Returns all accounting contexts available to the user for report execution. WHEN TO CALL: - After selecting a report from ns_listAllReports where supports_accounting_context is true - Before calling ns_runReport if you plan to provide accountingContext RETURN VALUES: - Empty array: No selectable accounting contexts are available for the current account/role - Non-empty array: You can pass one accounting context ID to ns_runReport Each accounting context contains: - id: Numeric internal ID to use as accountingContext in ns_runReport - name: Human-readable accounting context name

ns_getNexusIds

ChatGPT
Returns all nexus IDs available to the user for report execution. WHEN TO CALL: - After selecting a report from ns_listAllReports where supports_nexus is true - Before calling ns_runReport if you plan to provide nexusId RETURN VALUES: - Empty array: No selectable nexus values are available for the current account/role - Non-empty array: You can pass one nexus ID to ns_runReport Each nexus entry contains: - id: Numeric internal ID to use as nexusId in ns_runReport - name: Human-readable nexus name

ns_getRecord

ChatGPT
Retrieve a record from NetSuite.

ns_getRecordTypeMetadata

ChatGPT
Get metadata information about all record types or from a specific record type including available fields and their types

ns_getSubsidiaries

ChatGPT
Returns all the subsidiaries available to the user for the report tool. WHEN TO CALL: - After calling ns_listAllReports and identifying a report with has_subsidiary_filter: true - Before calling ns_runReport for that report RETURN VALUES: - Empty array: Account has no subsidiaries, subsidiaryId is optional in ns_runReport - Non-empty array: Account has subsidiaries. You MUST provide subsidiaryId in ns_runReport for any report with has_subsidiary_filter: true Each subsidiary contains: - id: Numeric internal ID to use as subsidiaryId parameter in ns_runReport. Consolidated subsidiaries have a negative ID. - name: Human-readable subsidiary name

ns_getSuiteQLMetadata

ChatGPT
Retrieves SuiteQL metadata for either all record types list or a specific record type and should be called before runCustomSuiteQL to discover which fields you can safely select, filter, and sort on. The method returns a JSON Schema definition where each record type exposes a properties object; each property represents a field and includes its title (label), type (e.g., string, boolean, object), description, and nullability. Joinability is indicated directly on fields within this schema: fields that can be joined include the custom extensions x-n:joinable: true and x-n:recordType specifying the target record type, so you derive valid JOIN paths from the schema rather than from a separate joins list. Use these definitions to validate field existence and types and to construct correct SELECT, WHERE, ORDER BY, and JOIN clauses (e.g., only joining through fields that are marked x-n:joinable). This tool should be called before calling ns_runCustomSuiteQL.

ns_listAllReports

ChatGPT
List all available reports with their metadata properties. IMPORTANT: Always call this tool BEFORE calling ns_runReport to determine which parameters are required for the report you want to run. Returns the following properties for each report: - title: Human-readable report name - id: Numeric internal ID to use as reportId parameter in ns_runReport - as_of_format: Determines dateFrom requirement false = dateFrom and dateTo are both REQUIRED in ns_runReport true = only dateTo is REQUIRED in ns_runReport (dateFrom is optional) - has_subsidiary_filter: Determines subsidiaryId requirement true = subsidiaryId is REQUIRED in ns_runReport if account has subsidiaries false = subsidiaryId is optional in ns_runReport - periods_allowed: Available period options for the report - supports_consolidation: Determines whether the subsidiaryId parameter in ns_runReport can accept a negative value (which specifies a consolidated subsidiary) true = subsidiaryId can be either a positive value (individual subsidiary) or a negative value (consolidated subsidiary) false = only positive values (individual subsidiaries) are allowed for subsidiaryId in ns_runReport - supports_range: Indicates if column grouping (range parameter) is supported in ns_runReport true = range parameter can be included in ns_runReport false = do not include the range parameter - supports_nexus: Indicates if filtering by nexusId is supported true = taxCashBasisMode can be set to NEXUS and nexusId parameter can be included in ns_runReport false = do not set taxCashBasisMode to NEXUS or include nexusId parameter in ns_runReport - supports_cash_basis_mode: Indicates if taxCashBasisMode parameter is supported true = taxCashBasisMode parameter can be included in ns_runReport false = do not include the taxCashBasisMode parameter - supports_period_end_mode: Indicates if periodEndTransactionReportMode parameter is supported true = periodEndTransactionReportMode can be included in ns_runReport false = do not include the periodEndTransactionReportMode parameter - supports_accounting_context: Indicates if accountingContext parameter is supported true = accountingContext parameter can be included in ns_runReport false = do not include the accountingContext parameter - supports_book: Indicates if book parameter is supported true = book parameter can be included in ns_runReport false = do not include the book parameter - supports_book2: Indicates if book2 parameter is supported true = book2 parameter can be included in ns_runReport false = do not include the book2 parameter RECOMMENDED WORKFLOW: 1. Call this tool to get all reports and their properties 2. Find the report you need by title or ID 3. Check the relevant properties to determine which parameters are allowed or required for ns_runReport (e.g., as_of_format, has_subsidiary_filter, supports_range, etc.) 4. Use helper tools (such as ns_getSubsidiaries, ns_getNexusIds, ns_getAccountingBooks, ns_getAccountingContexts, etc.) to obtain valid values for specific parameters 5. Call ns_runReport with all required and supported parameters based on these properties

ns_listSavedSearches

ChatGPT
Returns a list of all the saved searches in your NetSuite account. Optionally filtered by name

ns_prompt_library_app

ChatGPT
Interactive MCP App for browsing and selecting prompts available through the NetSuite AI Connector Service Companion SuiteApp. This tool presents available standard prompts from the SuiteApp and custom prompts added in the user's account. WHEN TO USE: - The user wants help finding or choosing from available prompts - You want to prefill the app with an initial filter string to narrow the list of available prompts HOW TO USE: 1. Call this tool when the user needs to browse or select from the available prompt library 2. Optionally provide the filter parameter to prefill the app with a search string 3. Wait for the app to return the user's selection - do not continue the workflow until you receive the response 4. Use the selected prompt returned by the app to continue the workflow IMPORTANT: This is an interactive app that requires user input. Always wait for the app response before proceeding.

ns_report_filters_app

ChatGPT
Interactive MCP App for collecting all required report parameters from the user. This tool presents a user-friendly interface for selecting and confirming the same parameters accepted by ns_runReport. WHEN TO USE: - User has NOT EXPLICITLY specified all required parameters in their message - Report requires subsidiary selection (has_subsidiary_filter: true and subsidiaries exist) - You need user to confirm or adjust report parameters HOW TO USE: 1. Pre-fill any known parameters (reportId, dateFrom, dateTo, subsidiaryId, and any other explicitly specified report parameters) 2. Call this tool with the pre-filled parameters 3. CRITICAL: WAIT for the app to return the user's selections - DO NOT proceed to ns_runReport until you receive the response 4. Use the returned parameters from the app response to call ns_runReport IMPORTANT: This is an interactive app that requires user input. You must ALWAYS wait for the app response containing the confirmed parameters before proceeding. The app response will include the parameters needed for ns_runReport.

ns_runCustomSuiteQL

ChatGPT
Runs a custom SuiteQL query in NetSuite. Useful for gathering information of all types. It is limited to 5000 rows without pagination. PAGINATION IS MANDATORY FOR LARGE RECORD TYPES High-volume record types such as customer, item, transaction, salesorder, journalentry, employee, contact, and vendor routinely contain hundreds or thousands of records. For these types, ALWAYS paginate from the very first query:1. Set pageSize to 1000 and pageIndex to 0 on the first call.2. Read totalResults and numberOfPages from the response.3. Loop through all remaining pages (pageIndex 1, 2, … numberOfPages-1) to collect the complete dataset.4. Never assume a single query returns all records — a result that looks complete may be silently truncated.Only skip pagination when querying record types that are inherently small (e.g., subsidiary, currency, location, department) or when a WHERE clause tightly constrains results to a handful of rows. Before using this tool, you should first call ns_getSuiteQLMetadata to understand the record structure. This tool executes custom SuiteQL queries in NetSuite for retrieving various types of information. Ensure that you consider these differences between SuiteQL vs standard SQL.- Bold: String concatenation. Standard SQL often uses + or CONCAT, while SuiteQL uses the || operator. [^2_10][^2_11]Standard SQL:``sql-- SQL ServerSELECT 'Hello' + ' World';-- MySQLSELECT CONCAT('Hello', ' World');`SuiteQL:`sqlSELECT 'Hello' || ' World';`- Bold: WITH/CTE support. Common Table Expressions (WITH ...) are not supported in SuiteQL; inline subqueries or temporary logic must be used instead.[^2_12][^2_13]Standard SQL:`sqlWITH temp_table AS (SELECT id FROM users)SELECT * FROM temp_table;`SuiteQL:`sql-- Rewrite without WITH:SELECT u.idFROM (SELECT id FROM employee) u;`- Bold: Date literals. Standard SQL typically compares to quoted date literals, whereas SuiteQL commonly requires Oracle-style conversion functions like TO_DATE.[^2_10][^2_14]Standard SQL:`sqlSELECT * FROM orders WHERE order_date = '2024-01-01';`SuiteQL:`sqlSELECT * FROM transactionWHERE trandate = TO_DATE('2024-01-01', 'YYYY-MM-DD');`- Bold: Oracle outer join operator. SuiteQL does not allow the legacy Oracle (+) outer join operator and requires ANSI JOIN syntax.[^2_12]Standard SQL (legacy Oracle):`sqlSELECT a.idFROM account a, account bWHERE a.id (+) = b.id;`SuiteQL (ANSI):`sqlSELECT a.idFROM account aRIGHT JOIN account b ON a.id = b.id;`- Bold: Mixed join syntax. Mixing ANSI JOINs with comma-style joins in the same statement is disallowed in SuiteQL.[^2_12]Standard SQL:`sqlSELECT *FROM t1, t2WHERE t1.id = t2.idLEFT JOIN t3 ON t1.id = t3.ref_id;`SuiteQL:`sqlSELECT *FROM t1JOIN t2 ON t1.id = t2.idLEFT JOIN t3 ON t1.id = t3.ref_id;`- Bold: IN list size. SuiteQL imposes a maximum number of expressions in an IN (...) list (commonly 1000).[^2_12]Standard SQL:`sqlSELECT * FROM products WHERE id IN (1,2,3,...);`SuiteQL:`sql-- Split into chunks or use a JOIN to a temp table equivalent:SELECT * FROM item WHERE id IN (/* up to limit */);`- Bold: Result-set cap. SuiteQL queries are capped (commonly 100,000 rows) and require paging when accessed via APIs.[^2_15][^2_12]Standard SQL:`sql-- No vendor-imposed cap beyond resourcesSELECT * FROM customers;`SuiteQL:`sql-- Retrieve in pages or constrain results:SELECT * FROM customer WHERE ROWNUM <= 100000;`- Bold: SQL standard level. SuiteQL targets SQL-92 compliance with Oracle SQL features, whereas many platforms support newer SQL standards.[^2_16][^2_9]Standard SQL:`sql-- Uses features from SQL:1999+ (e.g., WINDOW, WITH RECURSIVE)SELECT 1;`SuiteQL:`sql-- Stick to SQL-92 core plus Oracle-style functions where supportedSELECT 1 FROM DUAL;`- Bold: OFFSET/FETCH support. OFFSET-style pagination is not supported in SuiteQL; use ROWNUM-based paging or API pagination techniques.[^2_17][^2_18]Standard SQL:`sqlSELECT *FROM employeesORDER BY idOFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;`SuiteQL:``sqlSELECT FROM ( SELECT ROWNUM rn, e. FROM employee e ORDER BY e.id)WH…

ns_runReport

ChatGPT
Run a report in your NetSuite Account and get the column values from the report's summary line. IMPORTANT WORKFLOW: 1. ALWAYS call ns_listAllReports FIRST to check the report's has_subsidiary_filter and as_of_format properties 2. If has_subsidiary_filter is true, call ns_getSubsidiaries to get available subsidiary IDs 3. Then call this tool with all required parameters PARAMETER REQUIREMENTS: - reportId: Always required - dateTo: Always required - dateFrom: Required when report's as_of_format is false; optional when true - subsidiaryId: Required when BOTH conditions are met: (1) report's has_subsidiary_filter is true AND (2) ns_getSubsidiaries returns non-empty results Don't assume that the fiscal year follows the calendar year and ask the user to provide the fiscal year start month.

ns_runSavedSearch

ChatGPT
Runs a saved search from your NetSuite account

ns_selector_app

ChatGPT
Interactive MCP App for selecting an existing NetSuite record in any workflow that requires record selection. This tool presents a user-friendly interface for choosing a record from available values instead of relying on free-text input. WHEN TO USE: - The workflow requires the user to select an existing NetSuite record - The user has not already provided the required record value - The user needs to confirm or choose a record of a specific type HOW TO USE: 1. Determine the appropriate recordType for the selection you need to make (e.g., 'customer', 'item') 2. In create or update record workflows, you may call ns_getRecordTypeMetadata first to identify the required fields for the target record type 3. Call this tool and provide the recordType parameter 4. Wait for the app to return the user's selection - DO NOT proceed until you receive the response 5. Use the returned record details to continue the workflow IMPORTANT: This is an interactive app that requires user input. Always wait for the app response containing the selected record before proceeding.

ns_updateRecord

ChatGPT
Update an existing record in NetSuite. HOW TO USE: 1. Call ns_getRecordTypeMetadata for the target record type to understand required fields and structure. 2. For fields that reference other NetSuite records (e.g., customer, entity, item): - If a value is already specified by name, look up its internal ID using SuiteQL. - If the value is missing, use ns_selector_app to prompt the user to select an appropriate record from your NetSuite account. 3. When all required fields (including reference IDs) are known, call this tool to update the existing record with the provided data.

ns_createRecord

Claude

ns_getAccountingBooks

Claude

ns_getAccountingContexts

Claude

ns_getNexusIds

Claude

ns_getRecord

Claude

ns_getRecordTypeMetadata

Claude

ns_getSubsidiaries

Claude

ns_getSuiteQLMetadata

Claude

ns_listAllReports

Claude

ns_listSavedSearches

Claude

ns_prompt_library_app

Claude

ns_report_filters_app

Claude

ns_runCustomSuiteQL

Claude

ns_runReport

Claude

ns_runSavedSearch

Claude

ns_selector_app

Claude

ns_updateRecord

Claude

App Stats

34

Tools

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily