Platform

One platform for every system you work in.

Tinfirm connects your trackers, code hosts, chats and your own tools to the same specialists, and puts one set of rules over all of them: one inbox, one permission model, one budget per person and one audit log. It runs on your servers.

Systemsregistered onceAdmin
  • JiraCloud · 4 triggersConnected
  • GitHubshop-web, shop-api · 2 triggersConnected
  • GitLabSelf-managed · 1 triggerConnected
  • SlackBot in 4 channelsConnected
  • accountingMCP server · 12 tools, 4 of them writeConfirmed
Spend this monthyour LiteLLM gateway
Lena$38 of $100
svc-analyst$212 of $500
Ben$100 of $100
Ben's work waits until the budget resets. Nobody else's budget pays.
Every way in

Every system, the same way.

An admin registers each system once. From then on any specialist can take work from it, use it as a tool, or both, with the accounts each piece of work is allowed. Pick one to see what it does.

Jira

Cloud, and Data Center 8.14 or later

Starts work

An issue is created, updated, enters a status, gets or loses a label, is assigned, mentioned, commented on or closed.

Specialists can

Read and search issues; comment and transition them.

Results

A comment, a transition or attached documents, and a link to the conversation.

Example
1 · EventIn Jira, agent:refine is added to SHOP-241
2 · WorkAnalyst reads the story, related issues and the checkout code on GitHub
3 · ResultAcceptance criteria posted on SHOP-241

GitHub

GitHub.com and GitHub Enterprise Server

Starts work

An issue or a pull request is opened, updated, labelled, assigned, mentioned, commented on or closed.

Specialists can

Read and search; comment and label; work on its own branch and open a pull request.

Results

A comment, labels added or removed, the issue closed, a pull request.

Example
1 · EventOn GitHub, a pull request opens in shop-web
2 · WorkReviewer reads the change and the Jira story it names
3 · ResultA review comment on the pull request

GitLab

GitLab.com and self-managed

Starts work

An issue or a merge request is opened, updated, labelled, assigned, mentioned, commented on or closed.

Specialists can

Read and search; comment and label; work on its own branch and open a merge request.

Results

A comment, labels added or removed, the issue closed, a merge request.

Example
1 · EventOn GitLab, a merge request opens in shop-api
2 · WorkReviewer reads the change and runs the tests in its sandbox
3 · ResultA review comment on the merge request

Slack

One Tinfirm bot per workspace

Starts work

Someone mentions the bot in a channel, with a specialist's @handle or for the channel's default, or sends it a direct message.

Specialists can

Read the channel's history.

Results

A reply in the thread under the specialist’s name, and approval buttons for linked approvers.

Example
1 · EventIn Slack, someone asks @analyst in #product which stories touch gift cards
2 · WorkAnalyst searches Jira with the account the trigger's author chose
3 · ResultThe answer, in the Slack thread

Microsoft Teams

One Tinfirm bot per tenant

Starts work

Someone mentions the bot in a channel, or sends it a direct message. People are linked through Entra ID.

Specialists can

Answer in the thread it was asked in.

Results

A reply in the thread, and approval buttons for linked approvers.

Example
1 · EventIn Teams, you message the bot: draft the release note for 2.4
2 · WorkWriter reads the 2.4 issues in Jira, with your own account
3 · ResultThe draft, in your chat

Tinfirm app

Your own conversations

Starts work

You start a conversation with any specialist shared with you.

Specialists can

Everything the specialist may do, with your own accounts and your own budget.

Results

The conversation, live: watch the transcript, steer it, decide its questions and approvals.

Example
1 · EventIn the Tinfirm app, you ask Analyst which open stories lack acceptance criteria
2 · WorkAnalyst searches Jira with your own account and your budget
3 · ResultThe list, in your conversation in Tinfirm

Your AI client

Over MCP

Starts work

You start or continue a conversation from the AI client you already use, signed in with OAuth or a personal access token.

Specialists can

The same as in the app, with your accounts and your budget.

Results

The answer in your client. Decide your questions and approvals, and read or delete your memory notes there too.

Example
1 · EventFrom your own AI client, you ask Analyst to check SHOP-250
2 · WorkAnalyst reads the story in Jira, with your accounts and your budget
3 · ResultThe answer, back in your AI client

Schedule

A cron in your time zone

Starts work

At the times you set, at most every 15 minutes. While the last run is busy, the next one is skipped, or starts beside it if you choose.

Specialists can

Whatever its specialist may do.

Results

Outputs in Tinfirm, with a review before they go out when you ask for one. After downtime it catches up one missed run at most.

Example
1 · EventThe first working day of the month
2 · WorkFinance analyst evaluates each project against plan from your accounting MCP server
3 · ResultThe report waits for your review in the inbox

Webhook

For any other software

Starts work

Another system calls the webhook’s URL with a signed request. You map its JSON to the subject, the actor and the text, and set conditions on it.

Specialists can

Whatever its specialist may do.

Results

Outputs in Tinfirm, with a review when the trigger asks.

Example
1 · EventYour CRM calls the webhook: a deal is won
2 · WorkWriter drafts the customer's onboarding plan with your onboarding skill
3 · ResultThe plan waits for the team's review in the inbox

Your MCP servers

Your own systems as tools

Starts work

Nothing: MCP servers give specialists tools, not events.

Specialists can

Call the tools you grant each specialist. An admin confirms whether each tool reads or writes; until then it counts as a write.

Results

Results to the specialist. Writes ask a person first unless the specialist allows them.

Example
1 · EventThe first working day of the month
2 · WorkFinance analyst evaluates each project against plan from your accounting MCP server
3 · ResultThe report waits for your review in the inbox

Other git hosts work too, for repositories over HTTPS.

One set of rules

One set of rules over all of them.

An assistant built into each tool brings its own settings, bill and log. In Tinfirm the same rules hold whether the work came from Jira, a chat or a schedule.

Inbox3 need you
  • Question · SHOP-241Analyst: can the customer pay the rest by card?
  • Approval · #productWriter asks for the repository docs-site
  • Review · Monthly reviewFinance analyst's report, before it goes out

One inbox

Every question and approval, from every system, waits in one place per person, and also where the work started: on the issue, in the chat thread or in your own AI client. Failed turns and accounts to reconnect show up there too, with their cause. How decisions work

jira_commentone call, three checks
1EffectThe tool writes to JiraWrite
2Mode on AnalystEach call asks a personAsk
3Trigger's settings and accountCan only make it stricterAsk

One permission model

Every tool of every system reads or writes. A specialist lists the tools it may use and whether each runs at once or asks a person first; reads run and writes ask unless its editors decide otherwise. A person's settings, or a trigger's, can only narrow that. Tools in three layers

Budgetsone key each
LenaMember$38 of $100
svc-analystService identity$212 of $500
BenMember$100 of $100

One budget per person

Every member and service identity has one key on your LiteLLM gateway, with a budget your admins set: a company default, changed per person where needed. A spent budget stops only its owner's work. Admins see spend by person, specialist and trigger.

Audit logappend only
  • 09:14Analyst called jira_comment as svc-analystapproved by Lena7f3a
  • 09:12Turn on runner-02, paid by svc-analysttrigger Refine storiesc21e
  • 08:57Grant: GitHub to Analysts, readby an admin9b04

One audit log

Every tool call, with its conversation, the account it used and its holder, its effect and its approval. Every run, with who paid and the host that ran it. Every choice of authority: a trigger's accounts and payer, grants, budgets. Each entry carries the hash of the one before.

Access

Access follows the audience.

A specialist holds no credentials. Whom the work is for decides whose accounts it uses and who pays, and that stays fixed for the whole conversation: checked at every use, never switched, never a silent fallback.

  • Your own work acts as you. In the app, from your AI client or in a direct message, every system answers the specialist as it would answer you.
  • Shared work acts with what its author chose. A trigger names one account per system: its author's own, or a service identity's they may use.
  • No account, no guessing. Without one, a grant to one of your groups is named on screen, or you get a card to connect; a broken account stops the work with the reason.
LEYour conversationTinfirm app
Acts as
lenalena-dev
Paid by
Lena's budget
Approvals
Lena
Seen by
Lena. Owners may read it, and each read is shown to Lena
Trigger · Refine storiesSHOP
Acts as
svc-analystsvc-analyst
Paid by
svc-analyst's budget
Approvals
The Product team
Seen by
Its author, its team and admins
People and identities

People, groups and service identities.

Three roles, and accounts that belong to whoever they act for. Admins manage the company's own identities; members manage their own.

  • Members define specialists, write triggers, talk to specialists, and add their own MCP servers and runner host.
  • Admins register systems and manage service identities, groups, grants, budgets, company runner hosts and the gateway. Owners also run the company's settings.
  • Sign in your way: local accounts or your own OIDC identity provider, such as Entra ID, Keycloak or Okta.
svc-analystservice identityActive
Accounts
JiraGitHubGitLab
May use it
Product
Grants
Its GitHub account to Analysts, readWrite tools are refused and the workspace is read only.
Budget
$212 of $500 this month
 SuspendStops everything that uses its accounts or budget.
The difference

An assistant per tool, or one platform.

Your tools will get AI either way. The difference is whether you set it up, secure it, pay for it and audit it once, or again in every tool.

ComparedAn assistant in each toolWith Tinfirm
SetupConfigured again in every tool, with its own instructionsDefined once, used from every system and shared with the teams that need it
ReachWorks inside the tool it ships withOne job can use Jira, your repositories and your own MCP servers together
DecisionsQuestions wait in each tool's own screensEvery question and approval in one inbox, and where the work started
AccessPermissions set separately in every toolEach tool reads or writes, writes ask a person by default, and a person's settings only narrow
SpendA plan or seats per tool, billed by each vendorOne key and budget per person on your own gateway, with spend by person, specialist and trigger
AuditA separate log in every toolOne hash-chained log of every tool call, the account it used and who approved it
ModelsThe models its vendor offersAny model your LiteLLM gateway serves, on Claude Code, Codex, pi or OpenCode
Where it runsUsually in the vendor's cloudOn your own servers, and your systems' keys never enter the sandbox
NextHow it worksOne piece of work, step by step: the event, the trigger, the sandbox, the decisions, the result and the state it ends in.

Run it on your own infrastructure.

Request early access