Frequently asked questions

Short answers to the questions we hear most. Don't see yours? Email tim@suitestep.com.

Is Chartstone affiliated with Oracle or NetSuite?

No. NetSuite is a registered trademark of Oracle America, Inc. Chartstone is an independent third-party tool operated by SuiteStep, LLC. Chartstone is not endorsed by, sponsored by, or built in cooperation with Oracle or its subsidiaries.

Where does my NetSuite data go?

It stays on your computer. Chartstone runs entirely locally — the embedded NetSuite browser, the local HTTP server, and the request log all live on your machine. Your NetSuite data is returned only to the client that called your local server (your AI agent, your script, your spreadsheet).

The two times Chartstone reaches the network on its own behalf are: (a) at subscription verification, when your email is POSTed to chartstone.io/verify/ for a Stripe customer lookup, and (b) at launch, when the announcements feed at chartstone.io/announcements/ is fetched. No NetSuite data is ever sent to chartstone.io.

What credentials does Chartstone use?

Your live NetSuite session. You log into the embedded browser the same way you always log into NetSuite. Cookies stay in the app's sandboxed session. Chartstone does not store, transmit, or have access to your NetSuite password. There are no API keys, no TBA tokens, and no OAuth client setup required.

Can my AI agent or script see my NetSuite password?

No. You type your password directly into NetSuite’s own login form inside the embedded browser window — Chartstone never reads keystrokes, intercepts the form, or has access to the typed password at any point. Only the resulting session cookies (the same ones your normal browser would have) are visible to Chartstone, and those are what get attached to outbound API calls. 2FA codes work the same way — entered into NetSuite’s challenge page directly, never seen by Chartstone.

Does Chartstone work with SAML / SSO logins?

Yes — the same way your normal browser does. When you click Open NetSuite, the embedded window navigates to your account’s login URL and you go through the SSO flow as you normally would (Okta, Microsoft Entra, Google Workspace, ADFS — whatever your IdP is). Once SAML POSTs back to NetSuite and the session cookies are set, Chartstone is connected. No special handling on Chartstone’s side, no separate IdP integration to configure.

NetSuite rotates session cookies during a session — does that break Chartstone?

No. Chartstone reads cookies fresh from the embedded browser’s cookie jar on every outbound request — never caches them. When NetSuite rotates a cookie mid-session, the next request through Chartstone picks up the new value automatically. The bridge has no concept of a “stored session token” that could go stale.

Is Chartstone using Puppeteer or web scraping under the hood?

Same family (Chromium), but the architecture is different. Chartstone embeds Chromium directly into the desktop app via Electron — so there’s one persistent browser instance with one persistent cookie jar, not a per-task spawn driven externally over the DevTools Protocol.

More importantly, the login flow is interactive, not headless: you see NetSuite’s actual login page in the embedded window, type your password yourself, and handle 2FA / SSO challenges directly. Chartstone never types credentials, scrapes the form, or simulates a human session — it just leverages the cookies that result from your real login. Closer mental model: imagine browsing into NetSuite normally, then opening a local terminal that proxies HTTP requests through your active tab’s session.

What is the local server, exactly?

An HTTP server bound to 127.0.0.1 (loopback only) on a port you choose. Every request requires a bearer token — a per-install random secret stored in your OS keychain when available. Token comparison is constant-time. Nothing on your network can reach it; only processes on your own machine can.

What stops a website I visit from calling Chartstone behind my back?

The bearer token. Chartstone’s HTTP server binds to 127.0.0.1 only (no external network interface), and every request requires a per-install random secret in the Authorization: Bearer <secret> header, compared in constant time. The secret lives in your OS keychain (macOS Keychain or Windows DPAPI), so a website you visit can’t read it out of cookies or localStorage. Without the secret, a browser request to your loopback gets a 401 just like any other unauthenticated caller.

Does Chartstone require any setup inside NetSuite — Integration Records, custom roles, deployments?

No. You don’t install anything in NetSuite, you don’t create an Integration Record, you don’t deploy a SuiteApp or RESTlet, and you don’t need any new permissions on your role. Chartstone runs entirely on your machine and uses the role you log in with as-is. The optional Chartstone Toolkit RESTlet is one extra capability you can deploy if you want full file-cabinet / customization access from your scripts; everything else works against stock NetSuite with zero footprint.

Do I need an Administrator role in NetSuite?

Helpful but not required. The default page Chartstone navigates to before running ad-hoc scripts (/app/setup/country.nl?id=US) requires the ADMI_SETUPCOMPANY permission. Non-Admin users can change it under Preferences → Default script page to any record-edit page their role can reach (e.g. /app/common/entity/customer.nl?id=1). All other endpoints work with whatever permissions your role has.

Can I use Chartstone against a production account?

Yes. When you confirm a production account in the embedded browser, Chartstone shows a one-time confirmation dialog and stamps a PRODUCTION badge on your control panel for ongoing visibility. You're free to use it — just remember that any client talking to your local server will be acting against your live data.

Does Chartstone work with NetSuite sandbox accounts?

Yes — exactly the same way it works with production. Sign into the sandbox in the embedded window, click Use this account, and Chartstone is connected. You can switch between sandbox and production any time by signing out and signing back in to the other (or use NetSuite’s Multiple Sessions feature to keep both connected at once — see the multi-session entry below). Sandbox is the right place to test /script calls and anything else that mutates data.

Which AI agents work with Chartstone?

Any agent that can make HTTP requests with a Bearer token. The local server speaks plain HTTP/JSON at 127.0.0.1:<port>, so anything that can fetch or curl can call it: Claude Code, Cursor, Cline, Aider, custom MCP servers, in-house agent frameworks, plain shell scripts, Python notebooks, etc. The Agents page walks through Claude Code setup specifically; the same pattern applies to anything else.

What's in Lite vs. Pro?

Same endpoints, same features, same security. Lite has per-launch usage caps (30 queries / 15 reports / 15 scripts per launch); Pro has no caps. Counters reset every time you launch the app, so light usage stays free indefinitely. See the pricing page for the side-by-side.

I’m a NetSuite consultant — can I use Chartstone for client work?

Yes. One Pro license is per-user, not per-account. Sign into any client’s NetSuite from your Chartstone install, click Use this account, and you’re working against their account with their role and permissions. Switch accounts whenever you change clients. There’s no separate per-client license, no usage cap that scales with the number of accounts, and Chartstone never persists client data outside their own NetSuite session — your install is just the bridge.

How do I install on Mac and Windows?

Chartstone ships as a signed macOS .dmg and a Windows installer. Download from the home page or under Pricing. First launch creates a per-install secret and stores it in the OS keychain (Keychain on macOS, Credential Manager on Windows).

How do updates work?

Update notifications are delivered through the in-app announcements feed at launch. New versions are published as fresh installer downloads on chartstone.io.

How is the /script endpoint different?

/script and /restlet can execute arbitrary code in your NetSuite session. Both default to disabled. Enable them individually under Local HTTP server → Endpoints → Manage only if you understand the implications: any client that reaches your local server can run that code as you.

How do I cancel my Pro subscription?

Open Chartstone, find the Subscription card, and click Manage subscription. That opens the Stripe customer portal where you can cancel, change payment method, or download invoices. Cancellation stops the next renewal — Pro features remain active until the end of the paid period, then the app reverts to Lite without losing any settings. We offer a pro-rata refund within 30 days of purchase.

I lost my license key. What do I do?

Email tim@suitestep.com from the address you used at checkout. We’ll look up your key and re-send it within a business day.

What is a Chartstone license key?

A 128-bit random string that looks like cs_live_a1b2c3…. We email it to you right after you subscribe. Paste it into the Subscription card in Chartstone and click Verify — that’s the whole activation flow. The key is yours; one subscription, one key, works on any machine you sign in on.

Multiple NetSuite accounts?

Yes. Switch accounts (or roles) in the embedded NetSuite window and Chartstone auto-detects the change on the next "Use this account" confirm. One Pro subscription covers any number of accounts under your single user.

NetSuite logs me out of Chartstone when I open NetSuite in another browser. How do I fix that?

By default, NetSuite enforces one session per user: logging in from a second place (say, Chrome) invalidates the session Chartstone was already holding, and vice versa. Chartstone uses a normal NetSuite session, so it’s subject to the same rule.

The fix: enable NetSuite’s Multiple Sessions for 2FA-protected Users feature.

  1. Ask your NetSuite admin to turn it on at Setup → Company → Enable Features → Company subtab → Access section → "Multiple Sessions for 2FA-protected Users".
  2. Every role assigned to the user must have 2FA enabled — not just the role you log in with. Check each role at Setup → Users/Roles → Manage Roles → [role] → Authentication. If any single role on the user lacks 2FA, NetSuite disables the feature for that user entirely. This is the most common reason it appears to “not work.”
  3. Once both are in place, the same user can hold up to 3 active sessions simultaneously — Chartstone and Chrome (and a third, if you want) won’t evict each other.

If a session gets stuck, you can recover from inside NetSuite: go to your Home Dashboard, find the Settings portlet, and click Active Sessions. That lists every active session on your user; click Invalidate on any older/stuck one to clear it out without resetting your good session.

If you can’t enable Multiple Sessions (no admin access, policy reasons), two reliable workarounds:

  • Use Chartstone’s embedded NetSuite window for manual NS work. It’s a real Chromium browser; anything Chrome can do on NetSuite, that window can too. You only give up your Chrome profile (bookmarks, extensions, saved passwords).
  • Use a dedicated NetSuite user for Chartstone. Each user has their own session quota, so a Chartstone-only NS user won’t conflict with the user you log in as for manual work. Best-practice anyway for organizations using Chartstone heavily — separating service-account activity from human activity makes audit trails much cleaner.

Where can I find the request log?

Click Log in the Endpoints section of the Local HTTP server card. The full ring buffer (up to 2,000 entries) is searchable in a modal. Daily JSONL files are kept on disk under your app data directory; the retention window is configurable under Preferences → Log retention (days) — default 30.

I have another question — how do I reach you?

Email tim@suitestep.com. Replies usually within a business day.