Skip to content

Commit f2cbc78

Browse files
authored
Merge pull request #141 from speakeasy-api/guide/issue-140-netsuite
guide: NetSuite
2 parents f62cb98 + c5509d6 commit f2cbc78

7 files changed

Lines changed: 839 additions & 0 deletions

File tree

guides/netsuite/external.md

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
---
2+
setup_version: 1
3+
---
4+
5+
# Set up NetSuite
6+
7+
Sign in to the NetSuite application as an Administrator or delegated administrator who can enable SuiteCloud features, install SuiteApps, manage roles, and create OAuth integration records. Install the free managed **MCP Standard Tools** SuiteApp (Bundle ID `522506`) and use an approved scoped non-Administrator role. If regulated data may be involved, obtain approval from the application or cloud security owner before proceeding; Oracle states that the service has not been assessed for HIPAA and must not be used to store, process, or transmit ePHI without an independent compliance determination.
8+
9+
### Enable the required features {#enable-required-features}
10+
11+
1. Go to **Setup > Company > Enable Features**.
12+
2. Open the **SuiteCloud** subtab.
13+
3. Under **SuiteScript**, select **Server SuiteScript**.
14+
4. Enable **OAUTH 2.0**.
15+
5. Under **SuiteTalk (Web Services)**, select **REST Web Services**.
16+
6. Click **Save**.
17+
18+
<!-- screenshot: the SuiteCloud subtab with Server SuiteScript, OAUTH 2.0, and REST Web Services visible and enabled; exclude unrelated account details -->
19+
20+
### Install MCP Standard Tools {#install-mcp-standard-tools}
21+
22+
1. Open the **SuiteApps** tab.
23+
2. In **Search SuiteApps**, enter `MCP Standard Tools`.
24+
3. Select the **MCP Standard Tools** icon. Use the exact title to distinguish the SuiteApp; its operator-validated Bundle ID is `522506`.
25+
4. On the SuiteApp details page, click **Install** at the top right.
26+
5. Wait for installation to complete before continuing.
27+
28+
<!-- screenshot: the MCP Standard Tools SuiteApp details page with the title and Install control visible; include Bundle ID 522506 if the live Marketplace displays it -->
29+
30+
### Configure a scoped non-admin role {#configure-scoped-role}
31+
32+
1. Go to **Setup > Users/Roles > Manage Roles**.
33+
2. Edit the intended approved non-Administrator role. Do not use **Administrator** or a role with full permissions; NetSuite blocks those roles from the service.
34+
3. Open **Permissions > Setup**.
35+
4. Add **MCP Server Connection**.
36+
5. Add **Log in using OAuth 2.0 Access Tokens**. Do not select **Log in using Access Tokens**.
37+
6. Add **REST Web Services**.
38+
7. Retain only the record and task permissions approved for MCP use. These permissions determine which records and operations the tools can access.
39+
8. If your account restricts File Cabinet folders, ensure that the role can access the MCP Standard Tools SuiteApp folder. Oracle does not publish the exact folder path or role-form control; obtain those account-specific details from your NetSuite owner.
40+
9. Save the role.
41+
10. Go to **Lists > Employees > Employees**.
42+
11. Click **Edit** for each employee who will authorize the connection.
43+
12. Open **Access > Roles**.
44+
13. In **Role**, select the scoped role.
45+
14. Click **Add**.
46+
15. Click **Save**.
47+
48+
<!-- screenshot: the role's Permissions > Setup list showing the three required permissions and the non-Administrator role name; redact user and account-specific data -->
49+
50+
### Record the account-specific MCP URL {#record-account-mcp-url}
51+
52+
1. Go to **Setup > Company > Company Information**.
53+
2. Record the account ID for the current account. The **Company URLs** subtab on this page lists account-specific service URLs. If you cannot identify the account ID, obtain the current account ID or SuiteTalk domain from your NetSuite owner.
54+
3. Replace `<accountid>` in this endpoint with the account's domain-form ID:
55+
56+
```text
57+
https://<accountid>.suitetalk.api.netsuite.com/services/mcp/v1/suiteapp/com.netsuite.mcpstandardtools
58+
```
59+
60+
For a sandbox or Release Preview account, replace underscores with hyphens and uppercase letters with lowercase letters. For example, `123456_SB1` becomes `123456-sb1`.
61+
4. Keep the completed endpoint for **Remote MCP server URL** in the Speakeasy AI Control Plane.
62+
63+
<!-- screenshot: Company Information > Company URLs with the account-specific SuiteTalk domain visible; redact unrelated URLs and account data. The final MCP path is assembled from Oracle's documented fixed suffix rather than copied from a named MCP row. -->
64+
65+
### Create the OAuth integration {#create-oauth-integration}
66+
67+
1. Go to **Setup > Integration > Manage Integrations > New**.
68+
2. In **Name**, enter an organization-approved name such as `Speakeasy NetSuite MCP`.
69+
3. Set **State** to **Enabled**.
70+
4. Open the **Authentication** subtab.
71+
5. Under **OAuth 2.0**, select **Authorization Code Grant**.
72+
6. In **Redirect URI**, enter:
73+
74+
```text
75+
{{ gram.oauth.callback_url }}
76+
```
77+
7. Select **Public Client**.
78+
8. Leave **Dynamic Client Registration** cleared.
79+
9. Select only the **NetSuite AI Connector Service** OAuth 2.0 scope.
80+
10. Clear **RESTlets**, **REST Web Services**, and **SuiteAnalytics Connect** in the OAuth 2.0 scope area.
81+
11. Ensure that every box in **Token-based Authentication** and **Client Credentials** is cleared, including **Client Credentials (Machine to Machine) Grant**.
82+
12. Choose your organization's approved **OAuth 2.0 Consent Policy**. **Always Ask** is the default; **Ask First Time** prompts on first authorization and in additional cases. **Never Ask** is unavailable for the selected scope.
83+
13. Before you click **Save**, prepare to copy the credential screen. NetSuite displays the client ID and client secret only after this first save, and neither can be retrieved after you leave the page.
84+
14. Click **Save**.
85+
15. Copy **Client ID** for the Speakeasy AI Control Plane. Because this is a public client, do not provide the displayed client secret to Speakeasy.
86+
87+
If you leave the credential page without recording **Client ID**:
88+
89+
1. Go to **Setup > Integration > Manage Integrations**.
90+
2. Click **Edit** for the integration.
91+
3. Warn affected owners that resetting replaces the integration's existing credentials.
92+
4. Click **Reset Credentials**.
93+
5. Click **OK** in the confirmation popup.
94+
6. Copy the replacement **Client ID** from the new credential screen before leaving the page.
95+
96+
<!-- screenshot: the integration's Authentication subtab before save, showing Authorization Code Grant, Redirect URI, Public Client, and only NetSuite AI Connector Service selected; capture a separate credential screen with all values fully redacted -->

guides/netsuite/meta.yaml

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# yaml-language-server: $schema=../../schema/guide.v1.schema.json
2+
schema_version: 1
3+
slug: netsuite
4+
title: NetSuite
5+
summary: Connect the account-specific NetSuite AI Connector Service with MCP Standard Tools and a scoped public OAuth client.
6+
speakeasy_add_server: custom-remote
7+
credential_setup:
8+
options:
9+
- id: oauth-public-client
10+
kind: oauth
11+
client_registration: manual
12+
upstream_setup: provider-steps
13+
fields:
14+
- id: client-id
15+
label: Client ID
16+
setup:
17+
- external.md#create-oauth-integration
18+
requirements:
19+
- id: netsuite-admin-access
20+
description: NetSuite Administrator access or delegated access sufficient to enable SuiteCloud features, install SuiteApps, manage roles, and create OAuth integration records
21+
- id: approved-scoped-role
22+
description: An approved non-Administrator role scoped to the NetSuite records and operations that MCP users may access
23+
- id: mcp-standard-tools
24+
description: The free managed MCP Standard Tools SuiteApp installed (operator-validated Bundle ID 522506)
25+
- id: compliance-approval
26+
description: If regulated data may be involved, approval from the application or cloud security owner; Oracle states the service has not been assessed for HIPAA and must not store, process, or transmit ePHI without an independent determination that the use meets the organization's obligations
27+
documentation:
28+
external: external.md
29+
speakeasy: speakeasy.md
30+
remotes:
31+
- id: mcp-standard-tools
32+
url: "https://<accountid>.suitetalk.api.netsuite.com/services/mcp/v1/suiteapp/com.netsuite.mcpstandardtools"
33+
transport: streamable-http
34+
tenanted: true
35+
authentication:
36+
- oauth-public-client
37+
provenance:
38+
- source: provider-documentation
39+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_0714082142.html
40+
name: Connect to the NetSuite AI Connector Service
41+
classification: official
42+
observed_at: "2026-08-07T22:23:30Z"
43+
- source: provider-documentation
44+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_0902023450.html
45+
name: Installing the MCP Standard Tools SuiteApp
46+
classification: official
47+
observed_at: "2026-08-07T22:23:30Z"
48+
provenance:
49+
- source: provider-documentation
50+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_4160616848.html
51+
name: NetSuite AI Connector Service FAQ
52+
classification: official
53+
observed_at: "2026-08-07T22:23:30Z"
54+
- source: provider-documentation
55+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_3200541651.html
56+
name: Get Started with the NetSuite AI Connector Service
57+
classification: official
58+
observed_at: "2026-08-07T22:23:30Z"
59+
- source: provider-documentation
60+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_0714080625.html
61+
name: Required Features and Permissions
62+
classification: official
63+
observed_at: "2026-08-07T22:23:30Z"
64+
- source: provider-documentation
65+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_143403258.html
66+
name: MCP Standard Tools SuiteApp
67+
classification: official
68+
observed_at: "2026-08-07T22:23:30Z"
69+
- source: provider-documentation
70+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_0902023450.html
71+
name: Installing the MCP Standard Tools SuiteApp
72+
classification: official
73+
observed_at: "2026-08-07T22:23:30Z"
74+
- source: provider-documentation
75+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_0714082142.html
76+
name: Connect to the NetSuite AI Connector Service
77+
classification: official
78+
observed_at: "2026-08-07T22:23:30Z"
79+
- source: provider-documentation
80+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157771733782.html
81+
name: Create Integration Records for Applications to Use OAuth 2.0
82+
classification: official
83+
observed_at: "2026-08-07T22:23:30Z"
84+
- source: provider-documentation
85+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N895277.html
86+
name: Giving an Employee Access to NetSuite
87+
classification: official
88+
observed_at: "2026-08-07T22:23:30Z"
89+
- source: provider-documentation
90+
locator: https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_1498251763.html
91+
name: URLs for Account-Specific Domains
92+
classification: official
93+
observed_at: "2026-08-07T22:23:30Z"
94+
- source: speakeasy-doctrine
95+
locator: doctrine/speakeasy-setup.md
96+
name: Speakeasy setup canonical file
97+
classification: official
98+
observed_at: "2026-08-07T22:23:30Z"
99+
- source: operator-validation
100+
locator: draft-guide operator notes for netsuite
101+
status: Bundle ID 522506; public-client PKCE path; scoped non-admin role; Attach Remote Identity Provider shows Redirect URI with a copy button before credential entry; Speakeasy MCP Catalog result overridden-tenanted for query netsuite; tenanted remote requires Custom remote path
102+
observed_at: "2026-08-07T22:23:30Z"

0 commit comments

Comments
 (0)