Your code calls the tools
Use the TypeScript or Python SDK when you are writing code or building connected services into your own product. Your backend, your agent loop, your framework.
Authenticated tool access in code, on behalf of your users. AppConnect runs the OAuth flows, refreshes the tokens, and keeps credentials encrypted, so your agent only has to decide what to do.
Diagram: your agent’s code calls the AppConnect SDK, which handles OAuth, token refresh, and encrypted credentials, and runs the call against services the user connected through a hosted Link, such as Google Calendar, Slack, and GitHub.
Use the SDK when you’re working in code or building AppConnect into your product. Use MCP to expose the same connections to AI apps that can’t run code. Link is how your users connect their apps in the first place.
Use the TypeScript or Python SDK when you are writing code or building connected services into your own product. Your backend, your agent loop, your framework.
Use the MCP endpoint to give connected services to AI clients such as Claude, ChatGPT, or Cursor that can't run your code.
A hosted connect flow you open from the SDK. Users authorize each provider on the provider's own screen and land back in your app.
The same interface works whether you write the integration yourself or hand the job to a coding agent.
Already working in Claude Code, Cursor, or Codex? Point your agent at the AppConnect agent skill and it wires up hosted Link, the token exchange, and a first tool call using your repo’s own conventions.
Add [service names] integrations to my product using AppConnect Platform mode. Read https://www.appconnecthq.com/.well-known/agent-skills/appconnect-platform-sdk/SKILL.md first. Implement hosted Link with credentials and token exchange kept on the backend, then verify one successful read-only provider operation.
Let your users connect Google, Slack, GitHub, and more from inside your product. You create a Link session and store the tokens you get back. Consent screens, callbacks, and refresh are handled for you.
Subscribe to provider events such as new commits or calendar changes and receive signed webhook deliveries you can verify with one SDK call.
Add the TypeScript or Python SDK to your backend and create a client with your partner credentials. The secret stays on your server.
Create a Link session, send the user to it, and exchange it when they return. They authorize on the provider's own consent screen, and tokens are refreshed for you after that.
Search or list the tools that user has access to, hand them to your model, and execute whatever it calls, all scoped to that user's connections.
// Server-side only: the client secret never ships to browsers or apps.
import { AppConnectClient } from "@appconnecthq/sdk";
const client = new AppConnectClient({
clientId: process.env.APPCONNECT_CLIENT_ID!,
clientSecret: process.env.APPCONNECT_CLIENT_SECRET!,
});One call turns a user’s connected tools into the shape your framework expects, and a second executes whatever the model decides to call.
@appconnecthq/sdk/ai-sdkimport { toOpenAITools, executeOpenAIToolCall } from "@appconnecthq/sdk";
const tools = await toOpenAITools({ client, accessToken });
const reply = await openai.chat.completions.create({
model: "gpt-4o-mini",
messages,
tools,
});
for (const call of reply.choices[0].message.tool_calls ?? []) {
messages.push(await executeOpenAIToolCall({ client, accessToken }, call));
}Build on the surfaces you and your agent already use. The hard parts of integrations run underneath.
Subscribe to provider events for a connected user. AppConnect delivers each one to your endpoint with an HMAC signature, and the SDK verifies it in one call.
import { verifyWebhookSignature } from "@appconnecthq/sdk";
const { signing_secret } = await client.subscribeTrigger(accessToken, {
service: "github-oauth",
trigger: "new_commit",
config: { owner: "acme", repo: "api" },
callbackUrl: "https://yourapp.com/webhooks/appconnect",
});
// Store signing_secret: it is returned only once.
// Later, in your webhook handler:
const valid = verifyWebhookSignature(
rawBody,
request.headers.get("x-appconnect-signature") ?? "",
signingSecret,
);We’re onboarding a limited number of teams. Tell us what you’re building and we’ll set up your partner credentials. Pricing isn’t published yet.
Request accessOne interface for your code and your agents. You write the logic, and we keep the connections working.