# Netsuite

```json
{
  "name": "Netsuite",
  "slug": "netsuite",
  "url": "https://composio.dev/toolkits/netsuite",
  "markdown_url": "https://composio.dev/toolkits/netsuite.md",
  "logo_url": "https://logos.composio.dev/api/netsuite",
  "categories": [
    "finance & accounting"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-05-12T10:19:58.893Z"
}
```

![Netsuite logo](https://logos.composio.dev/api/netsuite)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Netsuite MCP or direct API to automate workflows, manage contacts, update financial records, and analyze business data through natural language.

## Summary

NetSuite by Oracle is a cloud-based ERP suite combining accounting, CRM, e-commerce, and inventory management. It streamlines business operations with real-time insights and unified data.

## Categories

- finance & accounting

## Toolkit Details

- Tools: 85

## Images

- Logo: https://logos.composio.dev/api/netsuite

## Authentication

- **Oauth2**
  - Type: `oauth2`
  - Description: Oauth2 authentication for Netsuite.
  - Setup:
    - Configure Oauth2 credentials for Netsuite.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- Generate monthly profit and loss report
- List overdue invoices for all customers
- Create new sales order for a client
- Update inventory levels for all products

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `NETSUITE_ASYNC_GET_JOB_STATUS` | Get Async 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. |
| `NETSUITE_ASYNC_GET_JOB_TASK` | Get Async 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. |
| `NETSUITE_ASYNC_GET_JOB_TASK_RESULT` | 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. |
| `NETSUITE_CREATE_CUSTOMER` | 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. |
| `NETSUITE_CREATE_CUSTOMER_PAYMENT` | 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. |
| `NETSUITE_CREATE_EMPLOYEE` | 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. |
| `NETSUITE_CREATE_INVOICE` | Create Invoice | Tool to create a new invoice record. Use when you have all required invoice details and want to add them to NetSuite. |
| `NETSUITE_CREATE_ITEM` | 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. |
| `NETSUITE_CREATE_JOURNAL_ENTRY` | Create Journal Entry | Tool to create a new journal entry record. Use when posting balanced debits and credits to the general ledger. |
| `NETSUITE_CREATE_JWT_CLIENT_ASSERTION` | Create JWT Client Assertion | Tool to build a JWT client assertion for NetSuite OAuth2 client credentials. Use before exchanging for an access token. |
| `NETSUITE_CREATE_PURCHASE_ORDER` | Create Purchase Order | Tool to create a new purchase order record. Use when you need to submit a purchase order to a vendor. |
| `NETSUITE_CREATE_RECORD` | 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). |
| `NETSUITE_CREATE_SALES_ORDER` | 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. |
| `NETSUITE_CREATE_VENDOR` | 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. |
| `NETSUITE_CREATE_VENDOR_BILL` | 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. |
| `NETSUITE_DELETE_CUSTOMER` | Delete Customer | Tool to delete a customer record by ID. Use when you need to remove an existing customer record from NetSuite. |
| `NETSUITE_DELETE_CUSTOMER_PAYMENT` | 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). |
| `NETSUITE_DELETE_EMPLOYEE` | 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. |
| `NETSUITE_DELETE_INVOICE` | Delete Invoice | Tool to delete an invoice record by ID. Use when you need to remove an existing invoice record from NetSuite. |
| `NETSUITE_DELETE_ITEM` | 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. |
| `NETSUITE_DELETE_ITEM_FULFILLMENT` | 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. |
| `NETSUITE_DELETE_ITEM_RECEIPT` | Delete Item Receipt | Tool to delete an item receipt record by ID. Use when you need to remove an existing item receipt from NetSuite. |
| `NETSUITE_DELETE_JOURNAL_ENTRY` | Delete Journal Entry | Tool to delete a journal entry record by ID. Use when you need to remove an existing journal entry from NetSuite. |
| `NETSUITE_DELETE_PURCHASE_ORDER` | Delete Purchase Order | Tool to delete a purchase order record by ID. Use when you need to remove an existing purchase order from NetSuite. |
| `NETSUITE_DELETE_SALES_ORDER` | 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. |
| `NETSUITE_DELETE_VENDOR_PAYMENT` | Delete Vendor Payment | Tool to delete a vendor payment record by ID. Use when you need to remove an existing vendor payment from NetSuite. |
| `NETSUITE_EXECUTE_DATASET` | Execute Dataset | Tool to execute a SuiteAnalytics dataset and return paged results. Use when you need to retrieve dataset rows with paging support. |
| `NETSUITE_GET_CUSTOMER` | Get Customer | Tool to retrieve a customer record by internal ID. Use when you have a customer ID and need detailed customer data. |
| `NETSUITE_GET_CUSTOMER_PAYMENT` | 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. |
| `NETSUITE_GET_DATACENTER_URLS` | Get Data Center 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. |
| `NETSUITE_GET_EMPLOYEE` | Get Employee | Tool to retrieve an employee record by ID. Use when you have an employee ID and need detailed employee data. |
| `NETSUITE_GET_GOVERNANCE_LIMITS` | 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. |
| `NETSUITE_GET_INVOICE` | Get Invoice | Tool to retrieve an invoice record by internal ID. Use when you have an invoice ID and need detailed invoice data. |
| `NETSUITE_GET_ITEM` | Get Item | Tool to retrieve an item record by internal ID. Use when you have an item ID and need detailed item data. |
| `NETSUITE_GET_ITEM_FULFILLMENT` | 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. |
| `NETSUITE_GET_ITEM_RECEIPT` | 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. |
| `NETSUITE_GET_JOURNAL_ENTRY` | 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. |
| `NETSUITE_GET_PURCHASE_ORDER` | 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. |
| `NETSUITE_GET_RECORD_METADATA` | 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. |
| `NETSUITE_GET_REFERENCE_SELECT_FIELD` | 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 |
| `NETSUITE_GET_SALES_ORDER` | 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. |
| `NETSUITE_GET_SERVER_TIME` | Get Server Time | Tool to retrieve NetSuite server time in UTC. Use when you need the current server timestamp for synchronization. |
| `NETSUITE_GET_SUBLIST_COLLECTION` | 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). |
| `NETSUITE_GET_SUBLIST_LINE` | 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. |
| `NETSUITE_GET_SUBRECORD` | 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. |
| `NETSUITE_GET_VENDOR` | Get Vendor | Tool to get a single vendor record by internal ID. Use when needing specific vendor information. |
| `NETSUITE_GET_VENDOR_BILL` | 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. |
| `NETSUITE_GET_VENDOR_PAYMENT` | 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. |
| `NETSUITE_LIST_CUSTOMER_PAYMENTS` | 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. |
| `NETSUITE_LIST_DATASETS` | List Datasets | Tool to list SuiteAnalytics Workbook datasets. Use when you need to retrieve datasets with optional pagination after establishing a valid NetSuite connection. |
| `NETSUITE_LIST_EMPLOYEES` | 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. |
| `NETSUITE_LIST_INTEGRATIONS` | List Integrations | Tool to list integration applications. Use when you need to retrieve client IDs and redirect URIs necessary for OAuth2 authorization flows. |
| `NETSUITE_LIST_INVOICES` | 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. |
| `NETSUITE_LIST_ITEM_FULFILLMENTS` | 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. |
| `NETSUITE_LIST_ITEM_RECEIPTS` | 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. |
| `NETSUITE_LIST_JOURNAL_ENTRIES` | 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. |
| `NETSUITE_LIST_METADATA_CATALOG` | 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. |
| `NETSUITE_LIST_PURCHASE_ORDERS` | List Purchase Orders | Tool to list purchase order records. Use when you need to retrieve multiple purchase orders with optional filtering and pagination. |
| `NETSUITE_LIST_RECORDS` | 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. |
| `NETSUITE_LIST_SALES_ORDERS` | 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. |
| `NETSUITE_LIST_VENDOR_PAYMENTS` | 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. |
| `NETSUITE_O_AUTH2_AUTHORIZE_ACCOUNT_DOMAIN` | OAuth2 Authorize Account Domain | Tool to construct an OAuth2 authorization URL for a NetSuite account-specific domain. Use when initiating the OAuth2 authorization code flow. |
| `NETSUITE_O_AUTH2_AUTHORIZE_SYSTEM_DOMAIN` | OAuth2 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. |
| `NETSUITE_OAUTH2_GET_JWKS_KEYS` | Get OAuth2 JWKS Keys | Tool to retrieve OAuth2 JWKS public keys. Use when validating token signatures. |
| `NETSUITE_O_AUTH2_LOGOUT` | OAuth2 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. |
| `NETSUITE_O_AUTH2_REVOKE_REFRESH_TOKEN` | Revoke OAuth2 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. |
| `NETSUITE_O_AUTH2_TOKEN_AUTHORIZATION_CODE` | Exchange OAuth2 Authorization Code for Tokens | 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. |
| `NETSUITE_O_AUTH2_TOKEN_CLIENT_CREDENTIALS` | OAuth2 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. |
| `NETSUITE_O_AUTH2_TOKEN_REFRESH` | OAuth2 Token Refresh | Tool to refresh an OAuth2 access token. Use when the current access token has expired and you need a new one. |
| `NETSUITE_RUN_SUITEQL_QUERY` | Run SuiteQL Query | Tool to execute a SuiteQL query. Use when you need ad-hoc SQL queries against NetSuite data with server-side paging. |
| `NETSUITE_TRANSFORM_RECORD` | 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. |
| `NETSUITE_UPDATE_CUSTOMER` | 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. |
| `NETSUITE_UPDATE_CUSTOMER_PAYMENT` | 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. |
| `NETSUITE_UPDATE_EMPLOYEE` | Update Employee | Tool to update an employee record by ID. Use when modifying fields of an existing employee. |
| `NETSUITE_UPDATE_INVOICE` | 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. |
| `NETSUITE_UPDATE_ITEM` | Update Item | Tool to update an item record by ID. Use when modifying selected fields of an existing item; omitted fields remain unchanged. |
| `NETSUITE_UPDATE_ITEM_FULFILLMENT` | Update Item Fulfillment | Tool to update an Item Fulfillment record by ID. Use when modifying fields or sublists of an existing fulfillment. |
| `NETSUITE_UPDATE_ITEM_RECEIPT` | Update Item Receipt | Tool to update an item receipt record by ID. Use when modifying fields of an existing item receipt. |
| `NETSUITE_UPDATE_JOURNAL_ENTRY` | 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. |
| `NETSUITE_UPDATE_PURCHASE_ORDER` | 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. |
| `NETSUITE_UPDATE_SALES_ORDER` | 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. |
| `NETSUITE_UPDATE_VENDOR` | Update Vendor | Tool to update a vendor record by ID. Use when modifying fields of an existing vendor. |
| `NETSUITE_UPDATE_VENDOR_BILL` | Update Vendor Bill | Tool to update a vendor bill record by ID. Use when modifying fields of an existing vendor bill. |
| `NETSUITE_UPDATE_VENDOR_PAYMENT` | Update Vendor Payment | Tool to update a vendor payment record by ID. Use when modifying one or more fields on an existing vendor payment. |
| `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID` | 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. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK
```python
pip install composio_openai
```

```typescript
npm install @composio/openai
```

#### Path 1, Step 2: Initialize Composio and Create Tool Router Session

Import and initialize Composio client, then create a Tool Router session
```python
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
openai = OpenAI()
session = composio.create(user_id='your-user-id')
```

```typescript
import OpenAI from 'openai';
import { Composio } from '@composio/core';
import { OpenAIResponsesProvider } from '@composio/openai';

const composio = new Composio({
  provider: new OpenAIResponsesProvider(),
});
const openai = new OpenAI({});
const session = await composio.create('your-user-id');
```

#### Path 1, Step 3: Execute Netsuite Tools via Tool Router with Your Agent

Get tools from Tool Router session and execute Netsuite actions with your Agent
```python
tools = session.tools
response = openai.responses.create(
  model='gpt-4.1',
  tools=tools,
  input=[{
    'role': 'user',
    'content': 'Generate a financial summary report for last quarter in Netsuite'
  }]
)
result = composio.provider.handle_tool_calls(
  response=response,
  user_id='your-user-id'
)
print(result)
```

```typescript
const tools = session.tools;
const response = await openai.responses.create({
  model: 'gpt-4.1',
  tools: tools,
  input: [{
    role: 'user',
    content: 'Generate a financial summary report for last quarter in Netsuite'
  }],
});
const result = await composio.provider.handleToolCalls(
  'your-user-id',
  response.output
);
console.log(result);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK and Claude Agent SDK
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/openai @ai-sdk/mcp
```

#### Path 2, Step 2: Create Tool Router Session

Initialize the Composio client and create a Tool Router session
```python
from composio import Composio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

composio = Composio(api_key='your-composio-api-key')
session = composio.create(user_id='your-user-id')
url = session.mcp.url
```

```typescript
import { Composio } from '@composio/core';

const composio = new Composio({ apiKey: 'your-api-key' });

console.log("Creating Tool Router session...");
const { mcp } = await composio.create('your-user-id');
console.log(`Tool Router session created: ${mcp.url}`);
```

#### Path 2, Step 3: Connect to AI Agent

Use the MCP server with your AI agent
```python
import asyncio

options = ClaudeAgentOptions(
    permission_mode='bypassPermissions',
    mcp_servers={
        'tool_router': {
            'type': 'http',
            'url': url,
            'headers': {
                'x-api-key': 'your-composio-api-key'
            }
        }
    },
    system_prompt='You are a helpful assistant with access to Netsuite tools.',
    max_turns=10
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query('Generate a financial summary report for last quarter in Netsuite')
        async for message in client.receive_response():
            if hasattr(message, 'content'):
                for block in message.content:
                    if hasattr(block, 'text'):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { openai } from '@ai-sdk/openai';
import { experimental_createMCPClient as createMCPClient } from '@ai-sdk/mcp';
import { generateText, stepCountIs } from 'ai';

const client = await createMCPClient({
  transport: {
    type: 'http',
    url: mcp.url,
    headers: { 'x-api-key': 'your-composio-api-key' }
  }
});

const tools = await client.tools();

const { text } = await generateText({
  model: openai('gpt-4o'),
  tools,
  messages: [{ role: 'user', content: 'Generate a financial summary report for last quarter in Netsuite' }],
  stopWhen: stepCountIs( 5 )
});

console.log(`Agent: ${text}`);
```

## Why Use Composio?

### 1. AI Native Netsuite Integration

- Supports both Netsuite MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading, writing, and querying your Netsuite data

### 2. Managed Auth

- Built-in OAuth handling with automatic token refresh and rotation
- Central place to manage, scope, and revoke Netsuite access
- Per user and per environment credentials instead of hard-coded keys

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Netsuite
- Scoped, least privilege access to Netsuite resources
- Full audit trail of agent actions to support review and compliance

## Use Netsuite with any AI Agent Framework

Choose a framework you want to connect Netsuite with:

- [ChatGPT](https://composio.dev/toolkits/netsuite/framework/chatgpt)
- [OpenAI Agents SDK](https://composio.dev/toolkits/netsuite/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/netsuite/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/netsuite/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/netsuite/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/netsuite/framework/codex)
- [Cursor](https://composio.dev/toolkits/netsuite/framework/cursor)
- [VS Code](https://composio.dev/toolkits/netsuite/framework/vscode)
- [OpenCode](https://composio.dev/toolkits/netsuite/framework/opencode)
- [OpenClaw](https://composio.dev/toolkits/netsuite/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/netsuite/framework/hermes-agent)
- [Google ADK](https://composio.dev/toolkits/netsuite/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/netsuite/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/netsuite/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/netsuite/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/netsuite/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/netsuite/framework/crew-ai)
- [Pydantic AI](https://composio.dev/toolkits/netsuite/framework/pydantic-ai)
- [AutoGen](https://composio.dev/toolkits/netsuite/framework/autogen)

## Related Toolkits

- [Stripe](https://composio.dev/toolkits/stripe) - Stripe is a global online payments platform offering APIs for managing payments, customers, and subscriptions. Trusted by businesses for secure, efficient, and scalable payment processing worldwide.
- [Alpha vantage](https://composio.dev/toolkits/alpha_vantage) - Alpha Vantage is a financial data platform offering real-time and historical stock market APIs. Get instant, reliable access to equities, forex, and technical analysis data for smarter trading decisions.
- [Altoviz](https://composio.dev/toolkits/altoviz) - Altoviz is a cloud-based billing and invoicing platform for businesses. It streamlines online payments, expense tracking, and customizable invoice management.
- [Benzinga](https://composio.dev/toolkits/benzinga) - Benzinga provides real-time financial news and data APIs for market coverage. It helps you track breaking news and actionable market insights instantly.
- [Brex](https://composio.dev/toolkits/brex) - Brex provides corporate credit cards and spend management tailored for startups and tech businesses. It helps optimize company cash flow, streamline accounting, and accelerate business growth.
- [Chaser](https://composio.dev/toolkits/chaser) - Chaser is accounts receivable automation software that sends invoice reminders and helps businesses get paid faster. It streamlines the collections process to save time and improve cash flow.
- [Clientary](https://composio.dev/toolkits/clientary) - Clientary is a platform for managing clients, invoices, projects, proposals, and more. It streamlines client work and saves you serious admin time.
- [Coinbase](https://composio.dev/toolkits/coinbase) - Coinbase is a platform for buying, selling, and storing cryptocurrency. It makes exchanging and managing crypto simple and secure for everyone.
- [Coinranking](https://composio.dev/toolkits/coinranking) - Coinranking is a comprehensive cryptocurrency market data platform offering access to real-time coin prices, market caps, and historical data. Get accurate, up-to-date stats for thousands of digital assets in one place.
- [Coupa](https://composio.dev/toolkits/coupa) - Coupa is a business spend management platform for procurement, invoicing, and expenses. It helps organizations streamline purchasing, control costs, and gain complete visibility over financial operations.
- [CurrencyScoop](https://composio.dev/toolkits/currencyscoop) - CurrencyScoop is a developer-friendly API for real-time and historical currency exchange rates. Easily access fiat and crypto data for smart, up-to-date financial applications.
- [Daffy](https://composio.dev/toolkits/daffy) - Daffy is a modern charitable giving platform with a donor-advised fund. Easily set aside funds, grow them tax-free, and donate to over 1.7 million U.S. charities.
- [Eagle doc](https://composio.dev/toolkits/eagle_doc) - Eagle doc is an AI-powered OCR API for invoices and receipts. It delivers fast, reliable, and accurate document data extraction for seamless automation.
- [Elorus](https://composio.dev/toolkits/elorus) - Elorus is an online invoicing and time-tracking software for freelancers and small businesses. Easily manage finances, bill clients, and track work in one place.
- [Eodhd apis](https://composio.dev/toolkits/eodhd_apis) - Eodhd apis delivers comprehensive financial data, including live and historical stock prices, via robust APIs. Easily access reliable, up-to-date market insights to power your apps, dashboards, and analytics.
- [Fidel api](https://composio.dev/toolkits/fidel_api) - Fidel api is a secure platform for linking payment cards to web and mobile apps. It enables real-time card transaction monitoring and event-based automation for businesses.
- [Finage](https://composio.dev/toolkits/finage) - Finage is a secure API platform delivering real-time and historical financial data for stocks, forex, crypto, indices, and commodities. It empowers developers and businesses to access, analyze, and act on market data instantly.
- [Finmei](https://composio.dev/toolkits/finmei) - Finmei is an invoicing tool that simplifies billing, invoice management, and expense tracking. Ideal for automating and organizing your business finances in one place.
- [Fixer](https://composio.dev/toolkits/fixer) - Fixer is a currency data API offering real-time and historical exchange rates for 170 currencies. Instantly access accurate, up-to-date forex data for your applications and workflows.
- [Fixer io](https://composio.dev/toolkits/fixer_io) - Fixer.io is a lightweight API for real-time and historical foreign exchange rates. It makes global currency conversion fast, accurate, and hassle-free.

## Frequently Asked Questions

### Do I need my own developer credentials to use Netsuite with Composio?

Yes, Netsuite requires you to configure your own OAuth credentials. Once set up, Composio handles token storage, refresh, and lifecycle management for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
