Tools & Permissions
What your connected AI tool can do, and how the role and access level control it.
A connection is bound to an organization role and an access level (Read only or Read & write). A tool is available only when both allow it. Tools that act on an app take its id or slug.
What the role unlocks
"Read & write?" means the write tools in that group need a Read & write connection. Read tools work on either.
| Tool group | What it covers | Permission key | Read & write? |
|---|---|---|---|
| Knowledge store | List, get, search, revision history; create, update, revert | agent:knowledge-store:read / :write | For writes |
| Data stores | List stores, schema, queries; create stores and connect them to apps; branches and routing; rows and schema changes | agent:data-store:read / :write | For writes |
| Apps | List apps and their agent-callable endpoints (no code or env vars) | agent:projects:read | No |
| Project tasks & memory | List and read; create and update tasks, write and delete memory | agent:projects:read | For writes |
| Connections & deployments | Data-store connections, deploy status, revision history, build and deploy logs, stagings | agent:projects:read | No |
| Deploy apps | deploy_app to production, a preview or a staging; track_app_branch; preview variables; delete a staging | agent:deployments:write | Yes |
| App settings | Read and change dashboard settings (see App settings) | agent:projects:read; changes add agent:config:edit | For changes |
| Repository access | Create app, clone credentials, dev env, app setup, updates, sandbox restart, Modules | agent:repos:write | Yes |
| Platform version updates | Check, prepare, and complete platform update steps | agent:migration:run | To prepare and complete |
| Test runner | List an app's test workflows, run its suites in the cloud sandbox, read a run's results | agent:tests:run | For the e2e suite |
| Cross-app calls | Call endpoints with allowAgentCalls enabled; manage cross-app grants | agent:cross-app:call | For non-GET calls and grants |
| Roles introspection | Org roles, their permissions, and whoAmI for the session | agent:roles:read | No |
| Role management | Create, rename, delete roles; set their permissions | agent:roles:write | Yes, and connector is org admin |
| Team members | List members and invitations; invite, change roles, remove; managed accounts | agent:members:manage | Yes, and connector is org admin |
| App roles & permissions | An app's permissions, app roles, sign-up role, team member access | agent:deployment-auth:read / :write | For writes |
| App sign-in branding | Logo, colors, heading text of the hosted sign-in page | agent:signin-branding:read / :write | For writes |
| Domains & DNS | List domains; edit DNS records on Stardeck-registered domains | agent:domains:read / :write | For writes |
| Customer directory | Search, view, create, edit, link contacts, archive, merge, memberships | agent:identities:read / :write | For writes |
| Support conversations | Browse customer conversations, read threads and attachments; reply as you | agent:support:read / :write | To reply |
| Errors & worker logs | Sentry issues and details, worker logs (3 days), resolve or reopen | agent:sentry:read | To resolve |
| Uptime monitors | List monitors and report schedule; create, update, pause, delete | agent:uptime:manage | For writes |
| Google Sheets syncs | Inspect spreadsheets; configure or delete a tab-to-table sync | agent:sheet-syncs:read / :write | For writes |
| Design assets | List and read design assets; save and edit them | agent:design-assets:read / :write | For writes |
| Skills | List and load Stardeck's built-in skills and your personal and organization skills | agent:skills:execute | No |
| App browser sign-in | Sign your browser tool in to one app (see Opening an app in your browser) | agent:app-browser:open; as someone else add :assume | Yes |
If the role holds none of these permissions, the connection has no tools. Switch roles on the Agents page.
How tools are disclosed
This applies to every connection to https://www.stardeck.ai/api/mcp, including local coding agents.
- A small set of common tools is directly callable: session identity, the development guide (
get_platform_development_guide), knowledge store reads, the main data-store tools, app discovery, cross-app calls, and skills. - Every other authorized tool is catalog-only: listed by name in the server's instructions. The client calls
search_stardeck_toolsfor its schema, thenexecute_stardeck_read_toolorexecute_stardeck_write_toolwith{ name, arguments }. - Modern AI clients do this on their own. If you build a direct MCP automation, don't assume every tool is in
tools/list.
Rules worth knowing
Data stores
Without a branchId, reads and writes use the store's default database, which is usually production. Pass a branchId to work on a branch.
An app you run locally reads whatever the sandbox is routed to. A new app routes every environment to the default database, so its sandbox and production share data until you split them:
- See where each environment points with
getProjectDataStoreEnvironments, and list branches withlistDataStoreBranches. Pass the sandbox's branch asbranchId. - To give the sandbox its own data:
createDataStoreBranch, thensetDataStoreEnvironmentMapping.clearDataStoreEnvironmentMappingundoes it. diffProjectDataStoreEnvironmentsshows what promoting the sandbox schema would change.- Routing changes need Admin access on the store and run without a confirmation, production included.
Data store writes change live data, and a write without a branchId usually lands in production.
Authorize Read & write only when you need it.
Knowledge store
Per-folder and per-item knowledge permissions still apply on top of agent:knowledge-store:read.
Deploying apps
- A production
deploy_appanswers its first call with a preview: the exact commit, and the pending schema changes it will apply, destructive ones included. It deploys only when your agent calls again with theconfirmToken, after you confirm. A preview or staging deploy runs on the first call. Every deploy ships the branch's GitHub head and applies pending schema changes for that environment. - The deploy is pinned to the commit it started from. A production deploy only approves destructive changes pending at start. Ask your agent to skip schema changes to ship code only.
- A branch pushed straight to GitHub needs
track_app_branchbefore it has a preview. Tracking builds nothing. Needs the Branches feature. deploy_appwithenvironment: "staging"creates a staging: a 24-hour copy on a fresh copy of production data, where sends are captured.list_app_stagingslists an app's stagings (with the id of the newest build and of the one serving),get_project_deployment_status,list_project_deployment_revisionsandget_project_deployment_logsread a staging's builds when you passenvironment: "staging"and itsstagingDeploymentId,list_app_staging_captured_sendsandget_app_staging_captured_sendread what they captured (long bodies are cut), anddelete_app_stagingremoves one. None of them asks for confirmation.
Working on app code
These need agent:repos:write and Read & write, except list_app_modules, which needs only
agent:projects:read. Most act only on apps with agent development enabled (on by default);
restart_sandbox and set_up_blueprint_app don't need it.
| Tool | What it does |
|---|---|
get_platform_development_guide | The whole local workflow, from creating an app to a production deploy. Your agent reads it first. |
create_app | New app with its repo and data stores. Choose Modules with enabledModules. Confirms first. |
get_repo_access | Short-lived (about an hour) git clone URL with token, which pushes only to agent/** and starcat/** branches. Confirms first. |
get_project_dev_env | Env vars to run locally, resolved to the app's sandbox. Confirms first. |
set_up_blueprint_app | Sets a new app up in its cloud sandbox: a sample business, or your business type and details. |
get_blueprint_update, prepare_blueprint_update | Check for an update, then prepare it: its schema and the git steps. Stardeck records the update once the merge reaches main. See Take an update locally. |
restart_sandbox | soft (default) restarts the dev server. force recreates from committed code and confirms first. |
list_app_modules | Read an app's Modules: on, off or uninstalled, their source, and what uses them. |
set_module_enabled, install_module | Turn Modules on or off; add a Module back, or install a published release from another org app. |
customize_module_ui, undo_customize_module_ui | Make a Module's screens yours so updates merge into your edits, or hand them back to Stardeck's version. |
uninstall_module | Removes a Module's source from main; data stays. Dry run first, confirms before applying. |
detach_module, detach_app | Stop updates for one Module or the whole app. Permanent. detach_app does a dry run first. |
The last three rows appear only on a connection bound to the Admin role.
Platform version updates (get_app_version_update, prepare_app_version_update, complete_app_version_update) apply to older apps that predate the shared foundation, one step at a time.
These return real credentials and decrypted secrets. Grant agent:repos:write only to roles that
develop app code locally.
App settings
- Covers general, sign-in, environment variables (non-secret only), domain, cross-app, integrations, payments, members and invites, app roles, repository, updates, data-store access, AI proxy, schedules, Edge devices, lifecycle, branches, and logs.
- Every change shows a preview and runs only after you confirm.
- Your AI tool can only do what you can do on that app. Deleting or transferring an app also needs Manage Apps.
- Never done by an AI tool: entering secrets, third-party consent screens (Stripe, LINE, Slack, email), receipt logo upload, passwords, invite links.
get_app_settings_handoffreturns the dashboard link instead.
App roles & permissions
get_app_auth_config, set_app_auth_config, and set_app_org_role_grants read and set an app's permissions, app roles, role assignments, default sign-up role, team member access, and org-role grants. In the tool schemas, app role and team member appear as deployment role and organization member.
Opening an app in your browser
Your agent can sign its browser tool in to one of your apps to click through it, check a fix, or reproduce a bug. Set it up once:
- An org admin turns on Allow agents to access under Settings → Team Members. It is off by default. The browser signs in as Stardeck's agent account, agents@stardeck.ai, which this switch adds to your organization.
- Connect with Read & write. A Read only connection never gets these tools.
- Bind the connection to a role with Open Apps in a Browser (
agent:app-browser:open). To open an app as another person or role, the role also needs Open Apps as Another Person or Role (agent:app-browser:assume), and you must be an org admin. Both start on the Admin role only; add them to another role under Settings → Roles & Permissions. - Give your agent a browser tool: for example the Playwright MCP server
(
claude mcp add playwright npx @playwright/mcp@latestin Claude Code), Claude in Chrome, or Cursor's browser. Stardeck doesn't provide one.
Then ask, for example, "Open the storefront staging in your browser as the cashier role and check checkout."
| Tool | What it does |
|---|---|
list_app_browser_targets | What can be opened for one app: its stagings, branch previews and production, its app roles and organization roles, and, when you may open it as someone else, the people who use the app. |
get_app_browser_signin | A one-time sign-in link for one deployment of the app, as you by default, or as a person (assumeUserId), an app role (assumeRoleId) or an organization role (assumeOrgRoleId), landing on path. |
- Staging by default. Without a
deploymentId, it opens the app's only active staging. If there is none, or more than one, your agent is told to choose one. Production opens only withproduction: true, also when you name the production deployment. It never falls back to production. - One app, one deployment, one identity. The browser can't reach your dashboard, another app or another deployment, and can't switch person or role inside the app. Ask again for something else.
- The link is like a password. It works once, within 60 seconds. Your agent opens it in its own browser tool and should never paste it into chat, code, logs or tickets: whoever opens it first is signed in.
- 30 minutes. The browser stays signed in for 30 minutes at most. It is signed out sooner when the connection is revoked or reconnected, its role or access level changes, the role loses either permission, you leave the organization or (when opened as someone else) are no longer an org admin, the app or organization role it was opened as is disabled, or Allow agents to access is turned off. Only that connection's sign-ins end; your other connections keep theirs. Once you revoke a connection, nothing it was given before works again, even after you reconnect it: reconnecting starts fresh. A browser only ever opens with the role and access level you chose when you last connected that client. A connection set up before browser sign-in existed has to be reconnected once.
- Disabled roles. A disabled role isn't offered and can't be opened, by an agent or by an admin previewing the app.
- Limits. Each connection can ask for 20 sign-ins an hour, each person 40 across their connections, and each organization 200. A connection can have 5 open at once, an organization 50. Past a limit your agent is told when to try again.
- What the browser does is real. Clicks in the app run the app's own code, so they don't ask for the confirmations your connection's write tools do, and production data changed through the app is changed. On a staging, sends are captured and payments use the playground, but app code that calls a third party with its own key still makes that call. See What still happens.
- Recorded. Each sign-in records who asked, through which connection, for which deployment and as whom.
This is separate from Starcat, which signs in through access a Stardeck teammate approves for it.
Other rules
- Role management and Team members changes appear only when the person who connected is an org admin.
adminandexternalroles, and roles with members, can't be deleted. Every team change confirms first. - Support conversations: a reply reaches the customer on their channel and can't be unsent, so it confirms first.
- Customer directory also needs Manage Identities; archive, merge, and membership tools need Govern Identities and confirm first.
- DNS: connected domains keep DNS at your registrar. Stardeck-managed records can't be changed.
- Cross-app calls follow the same rate limits and logging as Starcat's.
Choosing a role
| Use case | Suggested role permissions |
|---|---|
| Answer questions from the knowledge store | agent:knowledge-store:read |
| Query data and answer questions | agent:data-store:read + agent:knowledge-store:read |
| Read and write data, operate apps | Data-store read/write + agent:cross-app:call |
| Develop app code locally across apps | agent:repos:write + agent:projects:read, Read & write |
| Check your apps in a browser | agent:app-browser:open + agent:projects:read, Read & write |
| Full org access | Admin role |
Security model
Roles and access levels are checked on every call. See Security model.