Skip to main content
All connectors
qbash Connectors / NetSuite

NetSuite MCP serverand Python AI tasks

qbash hosts a NetSuite MCP server you can use in Claude, ChatGPT, Codex, Cursor, Grok Bot and Muse.

Developers use qbash Tasks to write cloud-hosted Python functions that pair NetSuite with models such as Claude and GPT.

MCP server

Build a NetSuite MCP server

Give ChatGPT, Claude and your other AI tools access to NetSuite through one server. You pick which NetSuite tools it shares, and you can add other connectors, memory folders and Tasks to the same server.

How to set it up

  1. Connect NetSuite on the qbash Connectors page.
  2. Create an MCP server and add the NetSuite tools you want to share.
  3. Paste the server URL into your client. It connects with OAuth or an access token.

Python AI task

Write a NetSuite task in Python

A qbash Task is a hosted Python function that calls NetSuite and AI models.

Summarize recent vendor bills

Query the vendor bills dated in the last seven days, then ask an inline prompt to total them by vendor and list the ones not yet paid in full.

main.py
report = qbash.integrations.netsuite.run_suiteql(
query=(
"SELECT tranid, BUILTIN.DF(entity) AS vendor, TO_CHAR(trandate, 'YYYY-MM-DD') AS bill_date, "
"foreigntotal, BUILTIN.DF(currency) AS currency, BUILTIN.DF(status) AS status "
"FROM transaction WHERE type = 'VendBill' AND trandate >= SYSDATE - 7 ORDER BY id"
),
limit=200,
)
bills = report.get("items", [])
if bills:
review = qbash.ai.run_prompt(
slug="netsuite-bill-review",
variables={"bills": json.dumps(bills)},
)
qbash.output({"review": review, "more_available": report.get("has_more", False)})
else:
qbash.output("No vendor bills are dated in the last seven days.")
Sample run_suiteql response
{
"status": "success",
"items": [
{
"tranid": "INV-88213",
"vendor": "Example Supplies Ltd",
"bill_date": "2026-10-08",
"foreigntotal": "1840.50",
"currency": "US Dollar",
"status": "Open"
}
],
"count": 1,
"total_results": 1,
"has_more": false,
"next_cursor": null
}

What the NetSuite connector can do

  • Run a SuiteQL query (NetSuite's SQL) and return one page of rows. Use it for lists, joins and totals across customers, items, prices, transactions, transaction lines, GL lines and custom records. Columns come back lowercase and checkboxes as 'T' or 'F'
  • Get one NetSuite record by internal ID or external ID. With expand_sub_resources it includes sublist lines, and each transaction line keeps its line value, the key update_record uses to change that line
  • List the record type IDs the credential's role can reach, including custom record types (customrecord_...). Use search to find one, for example alias or carton
  • Describe a record type's fields from NetSuite's metadata catalog: IDs, labels, types, custom fields and allowed values. Use it to find custom field IDs and the field names create_record and update_record expect
  • Create a NetSuite record from field values. Pass external_id (a stable key from the source, such as the customer's PO number) and a repeat call returns the existing record instead of creating a second one. Without external_id, every call creates a new record. Reads the record back after the write. Payments, refunds, deposits and journal entries are refused
  • Update fields and sublist lines on an existing NetSuite record. A line sent with its line value from get_record changes that line. A line without one is added, and lines left out stay. Pass if_last_modified to refuse the update when the record's lastModifiedDate no longer matches an earlier read. Payments, refunds, deposits and journal entries are refused
See every NetSuite method in the SDK Reference

qbash Tasks: AI applications in Python

A Task is a Python function that calls NetSuite, your other connectors and models such as Claude, GPT, Gemini and Grok. qbash hosts and runs it.

AnthropicOpenAIGeminixAI

Run Tasks on a schedule or from your team's tools

OpenAIAnthropicGrokGmailSlackGitHub+ more
  • Deterministic where it counts Write the logic in Python and call a model only for the steps that need judgement, so the rest runs the same way every time.
  • Version controlled Every save is a revision you can compare and roll back.
  • Logged Each run records its inputs, output, errors and what started it.
  • Shared credentials Connections belong to your organization, so a Task keeps working when its author is away.

NetSuite MCP questions

Does NetSuite have an official MCP server?

Yes. Oracle offers the NetSuite AI Connector Service, which works with the MCP Standard Tools SuiteApp and signs each user in with OAuth. The qbash server runs under one mapped role, so scheduled Tasks and MCP clients share a connection that never waits for a sign-in.

Does a sandbox account need its own setup?

Yes. Each sandbox account needs its own certificate mapping, and calls see only what the mapped role sees.

Build a NetSuite task

Write it in Python with AI steps, and qbash hosts it with versions and run logs.

Build a task

Build a NetSuite MCP server

Pick the NetSuite tools to share and connect ChatGPT, Claude or Grok Bot.

Build an MCP server