MCPFree to start. $20 of tokens on us.

The best way to connect AI agents to tools. One endpoint. Zero keys.

Seam gives your agent the apps your users already use. Add one endpoint, and it can find and run actions in 113 apps. It never sees a password or a token.

agentseamPOST seam.in-parallel.com/mcp
What the agent sees
What Seam keeps
search_actions("open a bug in our repo")
→ github.create_issue   0.91
→ linear.create_issue   0.84
describe_action("github", "create_issue")
→ owner*, repo*, title*, body
execute_action("github", "create_issue",
  {owner: "acme", repo: "api",
   title: "Checkout 500 on EUR"})
→ {status: 201, number: 1482,
   url: "github.com/acme/api/issues/1482"}
connection  maria@acme · github
token       gho_•••••••••••••
expires     in 3 min → renew
check       fields ok ✓
address     api.github.com ✓ real
add key     Authorization: Bearer •••
send        POST /repos/acme/api/issues
reply       201 · key removed
return      clean result to agent
The dashed line is where the keys stop.
Connect in one step. Paste this into your agent's MCP settings.
{
  "mcpServers": {
    "seam": {
      "url": "https://seam.in-parallel.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}

113 apps, one connection. See the full list.

the problem

Every team builds the same plumbing

An agent that works inside Slack, HubSpot or GitHub needs a login for each app. Logins expire. Every app has its own rules. And it is easy to end up with passwords in your logs.

Logins expire

Access to an app runs out and has to be renewed. If two requests try to renew it at the same time, one of them fails and the user is logged out. Seam renews once, safely, for everyone.

renew once · retry once

Every app is different

GitHub pages results one way, Stripe another. Linear only speaks GraphQL. Each app has its own limits and error codes. Seam handles that so your agent does not have to.

paging · limits · retries

Secrets leak

If the agent builds the request itself, the password goes through the model. Then it shows up in logs, test data and support tickets. With Seam, the agent only ever sees the names of fields.

agent sees fields, not secrets

how it works

Four commands. That is the whole interface.

Giving an agent hundreds of commands fills up its memory before it starts. Seam gives it four. The agent uses them to find and run anything in the catalog.

Findsearch_actions(query)

The agent describes what it wants to do. Seam returns the best matching actions.

Learndescribe_action(provider, name)

Seam tells the agent which fields to fill in. Nothing more.

Doexecute_action(provider, name, args)

Seam runs it on the user's own account. If the user has not connected that app yet, Seam returns a link to do so.

Checklist_connections()

Which apps this user has connected, and whether each one still works.

Works with any agent that speaks MCP, the open standard for connecting AI to tools. Each user gets their own key. A user who has not connected GitHub cannot touch GitHub. They can never reach another user's account.

use cases

What people build with it

Each card is something you can ask an agent today. Underneath is what Seam actually runs. Every call is a real action in the catalog.

SlackGitHub
engineering

Turn a bug report into an issue

Someone reported a checkout bug in #support. File it in the api repo and reply with the link.
slack.conversations_historygithub.create_issueslack.chat_post_message
GitHubLinearResend
engineering

Write the release notes

What changed between v2.3 and v2.4? Match it to our Linear issues and email the summary to the team.
github.compare_commitslinear.list_issuesresend.send_email
VercelMicrosoft Teams
engineering

Check on a deploy

Did the last production deploy go through? If it failed, show me the logs and tell the channel.
vercel.list_deploymentsvercel.get_deployment_eventsmicrosoft-teams.send_channel_message
StripeLinear
support

Refund a customer

Find Maria's last charge, refund it, and open a ticket so finance knows why.
stripe.list_customersstripe.list_chargesstripe.create_refundlinear.create_issue
Microsoft Outlook
support

Answer from the inbox

Read the unanswered mail from this week and write draft replies for me to check.
microsoft-outlook.list_messagesmicrosoft-outlook.get_messagemicrosoft-outlook.create_reply
Google CalendarTodoist
operations

Follow up after a meeting

Look at today's meetings. Make a task for each thing I promised and find a free slot for the follow-up.
google-calendar.events_listtodoist.create_taskgoogle-calendar.freebusy_querygoogle-calendar.events_insert
VercelCloudflare
operations

Point a domain at a new project

Add staging.acme.com to the new project and create the DNS record for it.
vercel.add_domain_to_projectcloudflare.list_zonescloudflare.create_zone_dns_record
FirecrawlNotionSlack
research

Read the web, file the notes

Read these five competitor pricing pages. Put a summary in Notion and post the link.
firecrawl.batch_scrapenotion.create_pageslack.chat_post_message
FigmaLinear
design

Turn design comments into tickets

Go through the open comments on the checkout file and make an issue for each one.
figma.get_commentslinear.list_teamslinear.create_issue

security

The agent is on one side of the line. The keys are on the other.

This is the part to show your security team. Each promise below is built into how Seam works. There is no setting you could forget to turn on.

  1. The agent asksagent sideIt names the app, the action, and the fields it filled in. Nothing else.
  2. Seam finds the right accountseamOnly the account of the user making the request. Never anyone else's.
  3. Seam checks the requestseamAre the fields the right type? Is anything missing? Then it fills in the parts the agent is not allowed to set.
  4. Seam adds the key and sendskey sideRenews the login if needed. Checks the address is one the app owns. Adds the key. Sends.
  5. The answer comes back cleanagent sideKeys are removed from the reply before the agent sees it.
Keys are encryptedEach user's keys are stored encrypted and only unlocked at the moment of sending. They are never written to logs.
Keys never go in a web addressKeys only go in the request header. They cannot end up in a URL.
The agent cannot swap the keyIf the agent sends its own login header, Seam ignores it and uses the real one.
Requests only go to the real appEvery address is checked against a list of the app's own servers. Redirects are refused.
Incoming events are checked firstWhen an app sends Seam an event, the signature is checked before anything else happens.

under the hood

Every app is a text file you can read

There is no custom code for GitHub, Slack or Stripe. Each app is described in one short file: where to send requests, how to log in, and which actions exist. One engine reads those files and does the work.

# providers/github.exs (shortened)
%{
  slug: "github",
  auth_mode: :oauth2,
  proxy: %{
    "base_url" => "https://api.github.com",
    "hosts"    => ["api.github.com"]
  },
  retry: %{"statuses" => [429, 502, 503],
           "rate_limit_reset_header" => "x-ratelimit-reset"},
  pagination: %{"type" => "link"},
  actions: [
    %{"name"   => "create_issue",
      "method" => "post",
      "path"   => "/repos/{owner}/{repo}/issues",
      "params" => %{
        "body" => %{"required" => ["title"],
                    "visible"  => ["title", "body"]}}}
  ]
}

Add an app without writing code

Write the file, add a logo, open a pull request. Seam checks the file when it loads.

Choose what the agent may touch

Each field is either open to the agent or set by Seam. Remove a field from the visible list and the agent can no longer change it.

Complicated apps look simple

Linear and monday.com use GraphQL. The agent never sees it. It just fills in fields like anywhere else.

Easy to review

Because every app is a file, your security team can read exactly what Seam will do before you turn it on.

apps

113 apps. We say which ones are ready.

Every app here can be connected today. The ones with a number also have ready-made actions the agent can find and run. The rest can be reached, but the actions are still being written.

113 of 113
ActiveCampaign
Keyreachable
Airtable
Key7 actions
Amplitude
Keyreachable
Anthropic
Keyreachable
Apollo
Keyreachable
Asana
Login5 actions
Atlassian
Loginreachable
BambooHR
Loginreachable
Basecamp
Loginreachable
BigCommerce
Loginreachable
Bitbucket
Loginreachable
Box
Loginreachable
Brave Search
Key4 actions
Brevo
Keyreachable
Brex
Loginreachable
Cal.com
Keyreachable
Calendly
Login6 actions
Canva
Loginreachable
ClickUp
Login5 actions
Cloudflare
Key8 actions
Coda
Key4 actions
Contentful
Loginreachable
Datadog
Keyreachable
Discord
Login1 actions
DocuSign
Loginreachable
Dropbox
Loginreachable
ElevenLabs
Keyreachable
Exa
Keyreachable
Facebook
Loginreachable
Figma
Login11 actions
Firecrawl
Key12 actions
Freshdesk
Keyreachable
Front
Loginreachable
GitHub
Login48 actions
GitLab
Login14 actions
Gmail
Login19 actions
Gong
Keyreachable
Google
Loginreachable
Google Calendar
Login8 actions
Google Docs
Login3 actions
Google Drive
Loginreachable
Google Gemini
Keyreachable
Google Sheets
Loginreachable
Grafana
Keyreachable
Grafana Cloud
Keyreachable
Greenhouse
Loginreachable
Gusto
Loginreachable
Help Scout
Loginreachable
HeyGen
Loginreachable
HubSpot
Loginreachable
Instagram
Loginreachable
Intercom
Loginreachable
Jira
Login3 actions
Klaviyo
Keyreachable
Lever
Loginreachable
Linear
Login19 actions
LinkedIn
Loginreachable
Mailchimp
Loginreachable
Mailgun
Keyreachable
Microsoft OneDrive
Login20 actions
Microsoft Outlook
Login21 actions
Microsoft Teams
Login28 actions
Miro
Loginreachable
Mixpanel
Keyreachable
Monday
Login14 actions
Neon
Key8 actions
Netlify
Login16 actions
Notion
Login6 actions
OpenAI
Key3 actions
Paddle
Keyreachable
PagerDuty
Loginreachable
PayPal
Loginreachable
Perplexity
Keyreachable
Pinterest
Loginreachable
Pipedrive
Loginreachable
PostHog
Keyreachable
QuickBooks
Loginreachable
Ramp
Loginreachable
Reddit
Login5 actions
Render
Key37 actions
Replicate
Key2 actions
Resend
Key27 actions
Salesforce
Loginreachable
Segment
Loginreachable
SendGrid
Key63 actions
Sentry
Keyreachable
SerpApi
Key5 actions
SharePoint
Loginreachable
Shopify
Loginreachable
Shortcut
Keyreachable
Slack
Login7 actions
Smartsheet
Loginreachable
Spotify
Loginreachable
Square
Loginreachable
Strava
Loginreachable
Stripe
Key12 actions
Supabase
Keyreachable
Tavily
Key2 actions
Todoist
Login8 actions
Trello
Keyreachable
Twilio
Keyreachable
Twitch
Loginreachable
Twitter / X
Loginreachable
Typeform
Loginreachable
Vercel
Key20 actions
Webflow
Loginreachable
WordPress
Loginreachable
Wrike
Loginreachable
Xero
Loginreachable
YouTube
Login4 actions
Zendesk
Loginreachable
Zoho CRM
Loginreachable
Zoom
Loginreachable
37 services ready to use 76 services can be reached; actions still being written

where it runs

Keep your users' keys where they are allowed to be

Most tools like this only run in the US. Seam is one program with one database, so you can run it in three ways.

default

We host it, in the EU

You get a key and start. Data stays in the EU.

  • Use our app logins or your own
  • App setup done for you
  • Full record of what happened

for products

Inside your product

Seam runs as part of your own app. Your users, your rules, our engine.

  • Your login system
  • Same app files, same engine
  • Private files for your own internal tools

for strict rules

On your own servers

Run it in your own cloud or data centre. Keys never leave your network.

  • Use your own key store
  • Works without internet access
  • Yearly licence and support
Coming next · not built yet

One way to ask, whichever app the user has

Today the agent talks to each app in that app's own way. Next, Seam will let the agent say "list my open issues" once, and get the same answer whether the team uses Linear, Jira or GitHub.

Linearissues(filter: {state})
JiraGET /search?jql=status
GitHubGET /repos/…/issues?state
↓ joined at the seam
issues.list(status: "open", assignee: "me")

pricing

Pay for the tokens you use. Nothing else.

Free to start, with $20 of tokens. After that it is metered. You pay what it costs us to run, plus a fixed margin, so your bill is easy to predict.

free to start
$20

of tokens, on us

About 10 million tokens. No card needed. When the credit runs out, you choose whether to keep going.

Get a key

Work out your bill

tokens through the seam60.0M
rate per 1M tokens$2.00
first month, after $20 credit$100.00
per month$120.00

What a token is

The same unit your model uses. Seam counts what your agent sends in and what the app sends back. Nothing else is billed.

How the rate is set

Our cost to run a million tokens is $1.60. We add 25%. That is the whole formula: $1.60 × 1.25 = $2.00.

No seats, no tiers

Every app and every feature is included. Set a monthly cap and Seam stops at it. Running it on your own servers is a yearly licence; talk to us.

questions

What people ask first

Can the agent ever see a user's password or key?

No. The agent sends field names and values. Seam adds the key after checking the request, and removes it from the reply before the agent sees it.

What if an app we need is not on the list?

Write a file for it. If the app uses a normal login method, no code is needed. We can review your file for you.

Do we need our own app registrations?

Not to start. For real users we recommend your own, so people see your name when they connect. Seam can set them up for you.

What if my usage spikes?

Set a monthly cap. Seam stops at the cap and tells your agent why. You will never get a bill you did not agree to.

Which AI frameworks does it work with?

Any agent that speaks MCP. You can also try every action by hand in the browser before you connect an agent.

Give your agent the tools. We keep the keys.