Every rule from before still holds:
- Nothing changes without a person where your policy says one is needed. An action that is rejected, or still waiting, sends nothing at all — the token is not even opened.
- A DevOps fix stays a proposal. Rolling back or restarting is never sent to your systems, even when approved: the employee writes the evidence and the fix, and your team runs it.
- The token goes to one host only — the site, account or stack the connection names — and is never shown again. Every call is recorded in your audit log: which vendor, what was asked, and the answer’s status code. Never the token, and never the content.
- What a vendor sends back is treated as untrusted. A ticket comment or a log line that says “ignore your instructions” is quoted as evidence and changes nothing.
Connect a tool
- Open AI employees, choose the employee under Employees, and find the tool under Tools it works in. Each one says whether it is connected and what connecting it does.
- Choose Connect. The panel says where the token comes from, with a link to the vendor, and what it must be allowed to do. Use an account your team owns, not a person’s own, and grant only what is listed.
- Paste it in and choose Save connection, or pick one you already saved. Fill in the few settings it asks for, and choose Connect and test.
Test a connection
Test connection on a connected tool makes one read at the vendor that changes nothing, and tells you what it found: that it works, that the token was not accepted, that nothing answers at that address, that the token is missing a permission, or that the vendor is not answering. Connecting a tool runs it for you. Only an owner or admin can run it, and it is recorded in your audit log.A tool that is not connected
An approved action on it is recorded as Not sent. Nothing leaves MITHUNAI, and the wording stays with you, under Not sent, to copy and use by hand. It is never recorded as done. A tool that says Not available yet is one nothing can connect yet: it is not a connection anybody forgot to make. Connected tools are kept with the rest of your organisation’s settings, so they stay connected across restarts and updates.A saved connection a tool is connected to cannot be deleted. Deleting it in Settings, then
Connections, is refused with a message naming the tool — for example “the Support employee’s
support inbox”. Disconnect the tool first, then delete the connection.
Zendesk (Support)
- Sign in to Zendesk as an admin and open Admin Center.
- Go to Apps and integrations, then APIs, then API tokens (on older accounts, Zendesk API, with Token access turned on).
- Choose Add API token, give it a description such as
MITHUNAI Support employee, copy the token, and save. - In MITHUNAI, save a Zendesk connection with your Zendesk address
(
your-company.zendesk.com), the email of the agent the employee posts as, and the token.
- Draft (the default): an approved reply is posted on the ticket as an internal note, for an agent to read and send from Zendesk. Nothing reaches the customer until that agent sends it.
- Public: an approved reply goes to the customer as a public reply, and the ticket is set to Pending.
Zendesk’s API token acts as the agent whose email you give, with that agent’s permissions. Zendesk
now recommends OAuth for new integrations; API tokens still work, and are what MITHUNAI uses
today.
Freshdesk (Support)
- Sign in to Freshdesk as the agent the employee should post as. It needs to be able to see and reply to your tickets, and add notes and tags.
- Select your profile picture in the top right corner, then Profile settings.
- Choose View API key (on some accounts it is shown under Your API Key on the right), complete the check Freshdesk asks for, and copy the key.
- In MITHUNAI, save a Freshdesk connection with your Freshdesk address
(
your-company.freshdesk.com, or justyour-company) and the key. The key is only ever sent there, and the address cannot be changed later. A custom portal address such assupport.your-company.comis refused: use thefreshdesk.comone. - On the Support page, connect the Support inbox and the Hand-off to it, and choose Test connection. Disconnect Zendesk or Intercom first if one is connected.
- Draft (the default): an approved reply is posted as a private note for an agent to send.
- Public: an approved reply goes to the customer as a reply. The ticket’s status is left to Freshdesk’s own automations.
- Hand-off: the ticket keeps its tags, gains
needs_a_person, is set to Open, and gets a private note with the summary. - New tickets are tickets with the status Open created after you turn pick-up on. A test on past tickets reads Resolved and Closed tickets from the last 30 days.
A Freshdesk API key acts as its agent, with that agent’s permissions, until the agent’s password
is reset or the agent is removed. Each request counts against your Freshdesk plan’s API limit.
Intercom (Support)
- Open Intercom’s Developer Hub (in Intercom, Settings, then Integrations, then
Developer Hub) and choose New app. Give it a name such as
MITHUNAI Support employeeand pick your workspace. - Open the app’s Authentication page and copy its Access token. Under Edit scopes, check that it can read and write conversations, read admins, and read and write tags.
- Note your workspace’s data region: if you open Intercom at
app.eu.intercom.comit is Europe, atapp.au.intercom.comAustralia, and otherwise the United States. - In MITHUNAI, save an Intercom connection with that region and the token. The token is only ever sent to that region’s Intercom address, and the region cannot be changed later.
- On the Support page, connect the Support inbox and the Hand-off to it, and choose Test connection. Disconnect Zendesk or Freshdesk first if one is connected.
- Replies and notes are posted as the admin the token belongs to: the app’s owner. Choose that admin with care; the employee’s notes appear under their name.
- Draft (the default): an approved reply is a note on the conversation. Public: it is a reply to the customer.
- Hand-off: the conversation gains the tag
needs_a_person(created the first time) and a note with the summary. Its state is left as it is, so a snoozed conversation stays snoozed. - New tickets are open conversations created after you turn pick-up on. A test on past tickets reads closed conversations.
Jira and Jira Service Management (IT service desk, DevOps)
- Signed in as the account the employee should act as, open id.atlassian.com/manage-profile/security/api-tokens.
- Choose Create API token — the plain one, not Create API token with scopes, which only works through a different address — name it, pick an expiry, create it and copy it.
- In MITHUNAI, save an Atlassian connection with your site address
(
https://your-company.atlassian.net), that account’s email and the token. The same connection can serve Confluence and Jira knowledge sources. - Give the account, in the project: Browse projects, Create issues, Add comments and Transition issues. For a service desk it must be an agent on it.
- Project key — such as
IT— for new issues, and the issue type (default Task). Or, to raise Jira Service Management requests instead, the service desk id and request type id: both are numbers, shown by Jira’s API at/rest/servicedeskapi/servicedeskand/rest/servicedeskapi/servicedesk/{id}/requesttypewhile you are signed in. - Resolved status — the name of the status that means done in your workflow (default Done; often Resolved in a service project). When a request is already a Jira issue and your knowledge answers it, the employee proposes a comment with the answer and moving the issue to this status. If your workflow has no single transition to it, the issue is left as it is.
GitHub (DevOps deploys)
- In GitHub, open Settings, then Developer settings, then Personal access tokens, then Fine-grained tokens, and choose Generate new token.
- Set the resource owner to your organisation, Repository access to Only select repositories, and pick the repository that deploys the service.
- Under Repository permissions set Deployments to Read-only and Actions to Read-only. Nothing else. Your organisation may need to approve the token.
- In MITHUNAI, save a GitHub connection with the token.
owner/name), and either the environment whose
deployments count (such as production), or the workflow file whose successful runs are your
deploys (such as deploy.yml).
Grafana Cloud (DevOps logs and metrics)
- In your Grafana Cloud stack, open Administration, then Users and access, then Service accounts, and choose Add service account. Give it the Viewer role.
- On the service account, choose Add service account token, generate it and copy it.
- In MITHUNAI, save a Grafana connection with your stack address (
your-company.grafana.net) and the token. - Find the uid of your Prometheus and Loki data sources: open Connections, then Data sources, then the data source; the uid is the last part of the page’s address.
http_requests_total, http_request_duration_seconds_bucket, and a Loki
service_name label — and you can give your own, writing $service where the alert’s service name
goes. The error-rate query should return a fraction between 0 and 1, and the latency query
milliseconds. Only Grafana Cloud stacks are accepted: a self-hosted Grafana on your own network is
not reachable from MITHUNAI.
Datadog (DevOps logs and metrics)
- In Datadog, open Organization Settings, then API Keys, and copy a key (or create one).
- Open Application Keys and create one. Under Scopes, give it only timeseries_query and logs_read_data.
- In MITHUNAI, save a Datadog connection: choose your site — the part after
app.in the address you sign in at, such asdatadoghq.com,us5.datadoghq.comordatadoghq.eu— and paste both keys. They are only ever sent to that site’s API.
service:$service status:(error OR warn); you can give your own when you connect Monitoring, writing $service where the alert’s
service name goes. The error-rate query should return a fraction between 0 and 1, and the latency
query seconds. If both Grafana Cloud and Datadog are connected, logs are read from both and metrics
from the first that has any.
Sentry (DevOps errors)
- In Sentry, open Settings, then Custom Integrations, and choose Create New Integration, then Internal Integration.
- Under Permissions, set Issue & Event and Project to Read. Nothing else.
- Save, then copy the integration’s token and its client secret.
- In MITHUNAI, save a Sentry connection with the token and the client secret. Leave the address
empty for
sentry.io; givehttps://de.sentry.iofor Sentry’s EU region, or your ownhttps://sentry.your-company.comfor a self-hosted Sentry that is reachable from the internet. - Attach it to DevOps Monitoring and deploys, giving your organization slug — the
acmeinacme.sentry.io. - The DevOps page now shows a Webhook address beside the connection. In Sentry, open the integration again, paste it as the Webhook URL, and turn on Alert Rule Action.
- In each alert rule you want investigated, add the action Send a notification via your integration.
PagerDuty (DevOps on-call incidents)
- In PagerDuty, open Integrations, then API Access Keys, and create a key. PagerDuty has no key that can only add notes and acknowledge, so it is a full-access key: use a dedicated one, and revoke it if you stop.
- In MITHUNAI, save a PagerDuty connection with the key and the email of the PagerDuty user that notes and acknowledgements are recorded as.
- Attach it to DevOps On-call incidents. The DevOps page shows a Webhook address beside it.
- In PagerDuty, open Integrations, then Generic Webhooks (v3), and add a subscription with that address, for the events incident.triggered and incident.resolved.
- PagerDuty shows the subscription’s signing secret once. In MITHUNAI, replace the connection’s token — paste the key again, with the signing secret — so PagerDuty’s webhooks are accepted.
api.pagerduty.com) can be connected
today.
Slack (Support, IT service desk, Finance)
- At api.slack.com/apps, create an app from scratch for your workspace.
- Under OAuth and Permissions, add the bot scope
chat:write, and install the app to your workspace. It is your own workspace’s app, so it needs no review by Slack. - Copy the Bot User OAuth Token, which starts
xoxb-, and invite the bot to the channel. - Connect Team chat on the employee’s page, and name the channel.
WordPress (Marketer)
- In WordPress, open Users, then your profile, and add a new password under Application Passwords. Use an account that can create and publish posts, such as an Editor.
- Connect Website and blog on the Marketer’s page with your site’s https address, the username and the application password.
X (Marketer)
X signs each request with four values. The account that posts must own the developer app.- Sign in to the X developer portal as the account that posts, such as your company’s account, and create a project and an app. The Free tier allows 500 posts a month.
- In the app’s User authentication settings, set App permissions to Read and write. Save.
- Open Keys and tokens. Copy the API Key and Secret (regenerate them if you did not keep them). Under Access Token and Secret, choose Generate: generate them after step 2, or they can only read.
- In MITHUNAI, save an X connection with the API key, the API key secret, the access token and the access token secret, then connect Social accounts on the Marketer’s page. It takes no options.
LinkedIn (Marketer)
LinkedIn lets an app post on a company page only with its Community Management API, which LinkedIn reviews.- In the LinkedIn Developer Portal, create an app and associate it with your company page. A page administrator verifies it from the app’s Settings.
- Under Products, request Community Management API and wait for LinkedIn to grant it.
- Open the OAuth token generator, choose your app, select the scopes w_organization_social and r_organization_admin, and sign in as an administrator or content administrator of the page. Copy the access token.
- In MITHUNAI, save a LinkedIn connection with the token, then connect Social accounts on
the Marketer’s page with your page’s organization id: the number in its admin address,
linkedin.com/company/<number>/admin.
#, @ and other markup characters are posted as plain text.
Google Search Console (Marketer)
The Marketer reads Search Console as a service account that is a user of your property. It reads only.- In Google Cloud, choose or create a project and enable the Google Search Console API.
- Under IAM and admin, then Service accounts, create a service account. It needs no project role. Open it, then Keys, and add a JSON key. Keep the file.
- In Search Console, open your property, then
Settings, then Users and permissions, and Add user: the service account’s email address
(
...@....iam.gserviceaccount.com), with Restricted permission. - In MITHUNAI, save a Google Search Console connection by pasting the whole JSON key file, then
connect Search performance on the Marketer’s page with the property exactly as Search
Console shows it:
sc-domain:example.comfor a domain property, orhttps://www.example.com/for a URL-prefix property.
HubSpot (Sales)
- In HubSpot, open Settings, then Integrations, then Private Apps, and create a private app.
- Give it the scopes
crm.objects.contacts.read,crm.objects.contacts.write,crm.objects.companies.readandcrm.objects.deals.read. - Copy its access token, which starts
pat-, and connect CRM on the Sales page.
Gmail (Sales)
- In the Google Cloud console, pick or create a project, open APIs and services, then Library, and enable the Gmail API.
- Open IAM and admin, then Service accounts, and create a service account for mail. It needs no roles in the project. On its Keys tab, choose Add key, then Create new key, then JSON, and keep the file. Note its numeric Unique ID (its client id).
-
In the Google Admin console, as a super administrator, open
Security, then Access and data control, then API controls, then Manage domain-wide
delegation, and choose Add new. Enter the client id and these two OAuth scopes, separated by a
comma:
gmail.composesaves drafts, and sends one if you turn sending on;gmail.readonlyreads the thread a reply is drafted in. Both are needed: a scope that is asked for but not delegated makes every sign-in fail. - Connect Email on the Sales page: choose Gmail, paste the whole JSON key file, and give the mailbox follow-ups are drafted in — such as your own address. Leave Sending off to save drafts only.
- Choose Test connection. It signs in as that mailbox and reads its profile.
Microsoft Outlook (Sales)
- In the Microsoft Entra admin center, open Identity, then Applications, then App registrations, and choose New registration for mail alone, apart from the IT service desk’s. Single tenant; no redirect address.
- On its Overview, copy the Application (client) ID and the Directory (tenant) ID. Open Certificates and secrets, add a client secret, and copy its Value.
-
Open API permissions, choose Add a permission, then Microsoft Graph, then Application
permissions, and add:
Then choose Grant admin consent.
- An application permission covers every mailbox in the tenant. Limit it to your sales team’s mailboxes with an application access policy in Exchange Online.
- Connect Email on the Sales page: choose Microsoft Outlook, enter the tenant id, the application id and the client secret, and give the mailbox. Leave Sending off to save drafts only.
- Choose Test connection. It signs in and reads that mailbox’s Drafts folder.
Stripe (Finance)
- In the Stripe dashboard, open Developers, then API keys, and create a restricted key with Read access to Invoices, and nothing else.
- Copy it, which starts
rk_, and connect Invoices and payments on the Finance page.
QuickBooks Online (Finance)
QuickBooks has no token you can paste: you register your own Intuit app, and a person in the company consents once.- In the Intuit Developer portal, create an
app and choose the Accounting scope (
com.intuit.quickbooks.accounting). Nothing else. - Under Keys and credentials, add your deployment’s accounting redirect address to Redirect
URIs — your administrator gives it to you; it is the AI-employees address with
?integration=accounting, such ashttps://team.your-company.com/?integration=accounting. Use the Development keys with a sandbox company while you try it; production keys need Intuit’s app details filled in. - On the Finance page, connect Accounting and bookkeeping, choose QuickBooks Online, the environment (Sandbox or Production), and paste the app’s client id and client secret.
- Press Connect to QuickBooks Online, sign in as a company user who may add bills and invoices, and choose the company. You come back to the Finance page, connected. Press Test connection.
Xero (Finance)
- In Xero’s developer portal, create a Web app.
- Add the same accounting redirect address as its Redirect URI, generate a client secret,
and copy the client id. The app asks for
offline_access,accounting.transactions,accounting.contacts.readandaccounting.settings.read. If Xero only offers its newer granular scopes for your app, tell your administrator: they are not asked for yet. - On the Finance page, connect Accounting and bookkeeping, choose Xero, and paste the client id and secret. Xero has one environment; use a demo company while you try it.
- Press Connect to Xero and choose one organisation. An app connected to more than one is refused: connect a Xero app to the one organisation the Finance employee works in.
Ramp (Finance)
- In Ramp, open Company, then Developer, and create an app with the client credentials
grant and only the scopes
transactions:read,receipts:readandusers:read. - On the Finance page, connect Card spend and receipts, choose Ramp, the environment
(Sandbox for a Ramp sandbox, on
demo-api.ramp.com), and paste the client id and secret. - Optionally set the receipt threshold: a charge at or below it needs no receipt.
Expensify (Finance)
- In Expensify, sign in as a domain admin and open the Integration Server page to get a partner user id and secret. The secret is shown once.
- On the Finance page, connect Card spend and receipts, choose Expensify, and paste both.
- Optionally set the receipt threshold: an expense at or below it needs no receipt.
Okta (IT service desk)
- In the Okta Admin Console, create an administrator for MITHUNAI to act as — a dedicated user is best — with the Organization Administrator role, or a custom admin role that may manage users’ lifecycle, reset passwords and authenticators, and manage group membership. An API token acts with exactly the permissions of the administrator who creates it.
- Signed in as that administrator, open Security, then API, then Tokens, choose Create token, name it, and copy the value. Okta shows it once.
- Connect Identity and devices on the IT service desk page: choose Okta, enter your Okta
address — such as
your-company.okta.com— and paste the token. - Optionally give a group name prefix, such as
app-, so only those groups can be granted. - Choose Test connection. It reads the token’s own administrator and changes nothing.
okta.com address. Okta expires a token that is
unused for 30 days.
Google Workspace (IT service desk)
- In the Google Cloud console, pick or create a project, open APIs and services, then Library, and enable the Admin SDK API.
- Open IAM and admin, then Service accounts, and create a service account. It needs no roles in the project. On its Keys tab, choose Add key, then Create new key, then JSON, and keep the file. Note the service account’s numeric Unique ID (its client id).
-
In the Google Admin console, as a super administrator, open
Security, then Access and data control, then API controls, then Manage domain-wide
delegation, and choose Add new. Enter the client id and these OAuth scopes, separated by
commas:
All four are needed: a scope that is asked for but not delegated makes every sign-in fail.
- Connect Identity and devices on the IT service desk page: choose Google Workspace, paste the whole JSON key file, and enter the administrator’s email the service account acts as — a super administrator, or an administrator who may manage users and groups.
- Optionally give a group name prefix, then choose Test connection. It signs in and reads one user.
Microsoft Entra ID (IT service desk)
- In the Microsoft Entra admin center, open Identity, then Applications, then App registrations, and choose New registration. Single tenant; no redirect address.
- On its Overview, copy the Application (client) ID and the Directory (tenant) ID.
- Open Certificates and secrets, then Client secrets, choose New client secret, and copy its Value — not its Secret ID. Note when it expires.
-
Open API permissions, choose Add a permission, then Microsoft Graph, then Application
permissions, and add:
Then choose Grant admin consent.
- Connect Identity and devices on the IT service desk page: choose Microsoft Entra ID, and enter the tenant id, the application id and the client secret.
- Optionally give a group name prefix, then choose Test connection. It signs in and reads one user.
Not yet available
These say Not available yet. Each needs an app registered with the vendor, or a token kind MITHUNAI does not take yet:- Microsoft Teams, and approving from inside Slack.
- ServiceNow ticketing.
- Salesforce, and expense systems such as SAP Concur and Coupa.
- Device management, such as installing software on a laptop.
- Email for the support inbox.