Skip to main content
Glama
julienchriqui-okkoer

netsuite-mcp-server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTNoHTTP server host (default 0.0.0.0)0.0.0.0
PORTNoHTTP server port (default 3001)3001
ALLOWED_HOSTSNoAllowed hosts for HTTP server (default localhost)localhost
NETSUITE_TOKEN_IDYesNetSuite Token ID (Access Token)
NETSUITE_ACCOUNT_IDYesNetSuite Account ID (sandbox or production)
NETSUITE_CONSUMER_KEYYesNetSuite Consumer Key from Integration
NETSUITE_TOKEN_SECRETYesNetSuite Token Secret
NETSUITE_CONSUMER_SECRETYesNetSuite Consumer Secret

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
netsuite_get_vendorsA

List NetSuite vendors (suppliers) with optional search and pagination. Optional parameters: limit (number), offset (number), q (string, search query on companyName, via SuiteQL when provided).

netsuite_get_vendor_filterable_fieldsA

Inspect NetSuite vendor metadata-catalog and return fields that are filterable with the REST Record Query Language (?q=). Useful to know which field names are valid in RQL filters.

netsuite_get_vendor_by_external_idA

Find a NetSuite vendor by its externalId (e.g. 'spk_supplier_'). Uses NetSuite REST Record Query Language (RQL) on the vendor list, then enriches with full vendor details. Returns { found, vendor: { id, companyName, externalId, email, subsidiary } | null }

netsuite_search_vendors_by_nameA

Search NetSuite vendors by name (case-insensitive, partial match). Uses NetSuite REST Record Query Language (RQL) on the vendor list, then enriches with full vendor details. Optional filter by subsidiaryId.

netsuite_get_vendor_by_idA

Get a single NetSuite vendor by internal ID. Returns full vendor details with expanded sub-resources. Required parameter: id (string, NetSuite internal vendor ID)

netsuite_get_latest_vendorsA

Get the most recently created vendors in a Spendesk-compatible format (name, email, phone, address, VAT, currency, external ID). Uses REST API (no SuiteQL required). Optional parameter: limit (number, default 5)

netsuite_get_vendor_formsA

Get list of custom form IDs used by existing vendors. Returns form IDs to use with netsuite_create_vendor. Use this if vendor creation fails with 400 to discover the correct customForm ID.

netsuite_create_vendorA

Create a new NetSuite vendor (supplier). If vendor creation fails with 400, first call netsuite_get_vendor_forms to discover the correct customForm ID, then retry with customForm and any required customFields. Required: companyName (string), subsidiary (string). Optional: email, phone, externalId (for idempotency), customForm (string, custom form ID), customFields (object, key-value map of custom field IDs), isPerson (boolean), currency, vatRegNumber, legalName, addr1, city, zip, country

netsuite_update_vendorB

Update an existing NetSuite vendor. Required: id (string). Optional: companyName, email, externalId

netsuite_get_vendor_billsB

List NetSuite vendor bills with optional search and pagination. Optional parameters: limit (number), offset (number), q (string, search query), status (string, e.g. 'VendBill:A' for open bills)

netsuite_get_vendor_billA

Get a single NetSuite vendor bill by internal ID. Returns full bill details with expanded sub-resources (expense lines, items). Required parameter: id (string, NetSuite internal vendor bill ID)

netsuite_get_vendor_bill_by_external_idA

Get a vendor bill by its externalId (idempotency helper). Required: externalId (string). Returns { found: boolean, bill: { id, tranId, externalId, entity, tranDate, total } | null }

netsuite_get_vendor_bills_for_vendorA

Get vendor bills for a specific vendor, optionally filtered by date range. Required: vendorId (string). Optional: from (YYYY-MM-DD), to (YYYY-MM-DD), limit (number, default 50).

netsuite_create_vendor_billA

Create a new NetSuite vendor bill with expense lines. Required: entity (vendor ID), subsidiary, tranDate (YYYY-MM-DD). Optional: dueDate, tranId, memo, currency, exchangeRate, foreignAmount, externalId, expense (array of lines with account, amount as NET, memo, department, location, class, taxCode). Set department from cost center map for analytics. Use vatLines for VAT: array of { taxCodeId, taxRate, vatAmount, netAmount } so the tax authority ledger is updated.

netsuite_update_vendor_billA

Update any field of an existing NetSuite vendor bill via PATCH. Supports: header fields (entity, tranDate, dueDate, tranId, memo, currency, exchangeRate, subsidiary), expense sublist (account, amount, taxCode, memo, department, location, class, amortization), item sublist, custom body fields, billing address. When expense[] is provided, uses ?replace=expense to REPLACE all lines (not merge). Same for item[] with ?replace=item.

netsuite_get_employeesA

List NetSuite employees with optional search and pagination. Used to match Spendesk Members to NetSuite Employees for expense reports. Optional parameters: limit (number), offset (number), q (string, search query)

netsuite_get_employeeA

Get a single NetSuite employee by internal ID. Returns full employee details with expanded sub-resources. Required parameter: id (string, NetSuite internal employee ID)

netsuite_get_expense_report_by_external_idA

Get an expense report by its externalId (idempotency check before creating an expense report).

netsuite_get_expense_reportsA

List NetSuite expense reports with optional search and pagination. Optional parameters: limit (number), offset (number), q (string, search query), status (string, e.g. 'ExpRpt:A' for approved)

netsuite_get_ns_expense_categoriesB

List NS expense categories for expense report lines (category.id required per line).

netsuite_get_expense_report_by_idA

GET a NS expense report by internal ID with expanded sub-resources (e.g. expense.items[].category).

netsuite_create_expense_reportA

Create a new NetSuite expense report for an employee with expense lines. Required: employee, subsidiary, tranDate; per line: category (NS expense category ID), amount; multi-currency: currency. Optional: memo, externalId, expenseList.expense[].expenseDate, department, etc.

netsuite_get_bill_paymentsB

List NetSuite vendor payments (bill payments) with optional search and pagination. Optional parameters: limit (number), offset (number), q (string, search query)

netsuite_get_bill_paymentA

Get a single NetSuite vendor payment (bill payment) by ID. Required parameter: id (string, payment ID)

netsuite_create_bill_paymentA

Create a NetSuite vendor payment (bill payment) and apply it to one or more vendor bills. Required parameters: entity (string, vendor ID), tranDate (string, YYYY-MM-DD). Optional: account (string, bank account ID, auto-resolved from vendor subsidiary if not provided), currency (string, defaults to '1' for EUR), externalId (for idempotence), memo, apply (array of {doc: billId, apply: true, amount: number}). NOTE: Without apply array, creates an unapplied payment.

netsuite_get_vendor_creditsA

List NetSuite vendor credits with optional search and pagination. Optional parameters: limit (number), offset (number), q (string, search query)

netsuite_get_vendor_credit_by_external_idA

Get a vendor credit by its externalId (idempotency check before creating a credit). Required: externalId (string). Returns { found: boolean, credit: { id, externalId, tranDate, total } | null }

netsuite_create_vendor_creditA

Create a NetSuite vendor credit (for Spendesk credit notes / refunds). Use externalId for idempotency (e.g. spk_payable_). Optionally apply to an existing bill via applyList.

netsuite_get_journal_entry_by_external_idA

Get a journal entry by its externalId (idempotency helper). Required: externalId (string). Returns { found: boolean, entry: { id, externalId, tranDate, ... } | null }

netsuite_get_journal_entriesA

List NetSuite journal entries with optional search and pagination. Optional parameters: limit (number), offset (number), q (string, search query)

netsuite_create_journal_entryB

Create a new NetSuite journal entry with debit/credit lines. Required parameters: subsidiary (string), tranDate (string, YYYY-MM-DD). Optional: memo, externalId (for idempotence), line (array with account, debit, credit, department, location, class, memo, entity)

netsuite_create_accrual_journal_entryA

Create a month-end accrual journal entry with automatic NS reversal. Use after spendesk_get_accruals to post charges-à-payer (408xxx) entries. NS will auto-reverse on reversalDate (typically 1st of next month).

netsuite_get_record_schemaA

Get the exact NetSuite REST API schema for a record type. Returns required fields, property names, and sub-resources (those using items[] format). Use before implementing or debugging a create handler.

netsuite_get_accountsA

List NetSuite accounts (chart of accounts) with optional filter by type. Optional parameters: limit (number), offset (number), type (string, e.g. 'Bank', 'Expense')

netsuite_get_tax_codesA

List NetSuite sales tax items with id, name, rate, country, isInactive. Returns active codes only; use results to populate CLIENT_CONFIG.TAX_CODES by rate. Optional: limit, offset.

netsuite_get_departmentsA

List NetSuite departments / cost centers with names, full names, and parent. Fetches pages and enriches each entry via the detail endpoint.

netsuite_get_subsidiariesA

List NetSuite subsidiaries with names, countries, currencies, and elimination flags.

netsuite_get_currenciesA

List NetSuite currencies with exchange rates. Optional parameters: limit (number), offset (number)

netsuite_get_bank_accounts_by_subsidiaryA

Get bank accounts (type = 'Bank') available for a given subsidiary. Required: subsidiaryId (string). Returns list of { id, acctnumber, fullname, description }.

netsuite_execute_suiteqlA

Execute a read-only SuiteQL query against NetSuite. Only SELECT queries are allowed. Required parameter: query (string, SQL SELECT statement). Optional: limit (number, default 100, max 1000), offset (number, default 0). ⚠️ IMPORTANT: Use "FETCH FIRST N ROWS ONLY" instead of "LIMIT N" (auto-converted). Examples: SELECT id, companyName, externalId FROM vendor WHERE externalId = 'spk_supplier_xxx' FETCH FIRST 1 ROWS ONLY SELECT id, acctnumber, fullname FROM account WHERE type = 'Bank' AND subsidiary = 1 SELECT id, tranId, externalId FROM transaction WHERE externalId = 'spk_payable_xxx' AND type = 'VendBill' FETCH FIRST 1 ROWS ONLY

netsuite_get_locationsA

List NetSuite locations (analytical dimension for geographical or physical location tracking). Optional parameters: limit (number), offset (number)

netsuite_get_classificationsA

List NetSuite classifications (class - analytical dimension for project, product line, or business unit tracking). Optional parameters: limit (number), offset (number)

netsuite_list_filesA

List files from NetSuite File Cabinet with optional pagination. Optional parameters: limit (number), offset (number)

netsuite_upload_fileA

Upload a file to NetSuite File Cabinet (e.g. invoice PDF). Returns the file internal ID for use with netsuite_attach_file_to_record. Required: name, fileType (e.g. 'PDF'), content (base64), folder (folder internal ID from NS File Cabinet). Optional: description, isOnline.

netsuite_attach_file_to_recordA

Attach a File Cabinet file to a NetSuite record (e.g. vendor bill). Use after netsuite_upload_file. Required: recordType ('vendorBill', 'vendorCredit', etc.), recordId (internal ID), fileId (from upload).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/julienchriqui-okkoer/netsuite-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server