Authenticate using OAuth 1.0a with the NetSuite account ID embedded in the request signature
POST a SuiteQL query to the suiteql endpoint with a q body parameter containing the SQL-like statement, including JOIN clauses across standard NetSuite tables
Inspect the hasMore field in the response to determine if additional pages exist
Use the offset and limit query parameters to page through results, incrementing offset by the page size on each iteration
Flatten nested fields returned as JSON objects within each result row into your target schema
Handle NULL values and type coercions explicitly, as SuiteQL returns all values as strings in some response modes
Known gotchas
SuiteQL does not support all SQL constructs; subqueries, certain aggregate functions, and non-standard joins may return a query parse error rather than a helpful message
The maximum page size for SuiteQL results is capped; requesting more than the maximum silently returns the maximum without an error
Custom fields are accessible in SuiteQL using their internal script ID prefixed with the appropriate namespace; using the display label instead of the script ID causes a column-not-found error
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp