NetSuite
Connect ChatGPT to NetSuite
- Category
- Operations
- Primary Subcategory
- ERP & Operational Business Data
Integration details
Description
Quickly and easily integrate NetSuite to ChatGPT. The NetSuite AI Connector Service provides a protocol-driven integration service supporting Model Context Protocol (MCP), that gives customers a flexible and scalable way to connect AI assistants to NetSuite. Once connected, ChatGPT can directly access and interact with NetSuite data and functionality – quickly unlocking insights, generating reports, streamlining processes., and more. A comprehensive set of tools enable interactions and maintains NetSuite’s existing role-based security model.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- ERP & Operational Business Data
- Secondary Subcategories
- None listed
- Brand
- NetSuite
- Access
- Account required
- First tracked
- 2026-07-04
- Tool count
- 17
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for NetSuite
Get updates when NetSuite’s Discoverability Score or category rank changes.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competing in ChatGPT ERP & Operational Business Data
View Category17 tools agents can invoke
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.
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
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
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
Retrieve a record from NetSuite.
Get metadata information about all record types or from a specific record type including available fields and their types
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
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.
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
Returns a list of all the saved searches in your NetSuite account. Optionally filtered by name
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.
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.
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)WHERE rn BETWEEN 11 AND 20;```- Bold: Recursive CTEs. Recursive WITH RECURSIVE queries are not available in SuiteQL.[^2_12]Standard SQL:```sqlWITH RECURSIVE t(n) AS ( SELECT 1 UNION ALL SELECT n+1 FROM t WHERE n < 10)SELECT * FROM t;```SuiteQL:```sql-- Emulate recursion with iterative logic outside SQL or flatten hierarchiesSELECT * FROM some_table;```- Bold: Performance with deep nesting. Deeply nested SELECTs and complex expressions can cause performance issues/timeouts in SuiteQL; simplify queries.[^2_14]Standard SQL:```sqlSELECT * FROM (SELECT * FROM (SELECT * FROM t));```SuiteQL:```sql-- Flatten nested subqueries where possibleSELECT cols FROM t;```- Bold: TOP/LIMIT vs ROWNUM. SuiteQL uses Oracle-style ROWNUM filtering; TOP/LIMIT syntax found in other dialects is not supported.[^2_19][^2_20]Standard SQL:```sql-- SQL ServerSELECT TOP 10 * FROM customers;-- MySQL/PostgreSQLSELECT * FROM customers LIMIT 10;```SuiteQL:```sqlSELECT * FROM customer WHERE ROWNUM <= 10;```- Bold: Current date/time functions. SuiteQL supports Oracle-style CURRENT_DATE/SYSDATE rather than vendor-specific NOW()/GETDATE().[^2_10]Standard SQL:```sql-- SQL ServerSELECT GETDATE();-- MySQLSELECT NOW();```SuiteQL:```sqlSELECT CURRENT_DATE FROM DUAL;SELECT SYSDATE FROM DUAL;```- Bold: Substring and string functions. SuiteQL uses Oracle-style names like SUBSTR rather than SUBSTRING/LEFT/RIGHT.[^2_10]Standard SQL:```sql-- SQL ServerSELECT SUBSTRING('Hello', 1, 3);-- MySQLSELECT LEFT('Hello', 3);```SuiteQL:```sqlSELECT SUBSTR('Hello', 1, 3);```- Bold: NULL-handling functions. SuiteQL uses NVL rather than ISNULL (SQL Server) or IFNULL (MySQL).[^2_10]Standard SQL:```sql-- SQL ServerSELECT ISNULL(field, 'default');-- MySQLSELECT IFNULL(field, 'default');```SuiteQL:```sqlSELECT NVL(field, 'default');```- Bold: Aggregate string functions. Some aggregate string functions common in other systems (e.g., vendor-specific LISTAGG/STRING_AGG/GROUP_CONCAT variants) may be unsupported in SuiteQL.[^2_10]Standard SQL:```sql-- SQL ServerSELECT STRING_AGG(name, ', ') FROM t;-- MySQLSELECT GROUP_CONCAT(name) FROM t;```SuiteQL:```sql-- Use supported aggregates or aggregate outside SQL if unavailableSELECT name FROM t;```- Bold: Pagination constraints via APIs. When executing SuiteQL via REST, enforce page sizes and iterate pages to retrieve large datasets due to platform limits.[^2_21][^2_15]Standard SQL:```sql-- Not applicable to DB-native accessSELECT * FROM big_table;```SuiteQL:```sql-- Retrieve pages in client code and aggregate resultsSELECT * FROM some_record WHERE ROWNUM <= :page_size;```- Bold: Function whitelist. SuiteQL enforces a whitelist of supported/unsupported functions; calls outside this set are rejected.[^2_16][^2_10]Standard SQL:```sql-- Vendor dialects often allow wide function setsSELECT COALESCE(col, 'x');```SuiteQL:```sql-- Use only supported functions (see docs)SELECT NVL(col, 'x');```
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.
Runs a saved search from your NetSuite account
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.
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.
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are NetSuite alternatives on ChatGPT?
As of 2026-09-28, NetSuite competes with AIES.cz, AIMS360 Fashion & Consumer ERP, Asset Vision, Automatika Connect, Belgian Annual Accounts, Flowlity Co-planner, Klardaten DATEV-Connector, Monask, New Vintage, Normalic Assistant, SyncERP for Softone, Validis (AU), Validis (CA), Validis (UK) in ChatGPT ERP & Operational Business Data, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.