Introduction
Everything your AI product runs on, through one SDK and priced at cost: agents, your users' accounts, phone numbers, inboxes, domains, apps, databases and storage.
With the NoClick Platform you can:
- Run hosted agents on NoClick's own loop or a coding agent like Claude Code or Codex, answering your users by message, email and phone, with the tools you choose
- Let your users connect their own accounts (Gmail, Slack, Stripe and more) via a NoClick-generated link you can share with them
- Give agents what they act with: phone numbers, inboxes, browsers and domains
- Build and host apps on your domains, from code repos, with sandboxes and machines to run code in
- Keep data in databases, storage, volumes, queues and secrets
- See every operation, tool call, request and dollar, per user, with spend caps and policy
There's nothing to configure outside your code. Your users, their connections, your agents and the rules they follow are all API calls.
Here's a complete example: an assistant that works with one of your users' own Gmail.
import noclick
# One of your users, by your id for them, created the first time it's used
user = noclick.User.from_id("user_42", create_if_missing=True, email="ana@example.com")
with noclick.as_user(user):
# Ana's Gmail, under a name your code uses. Pending until she connects it.
gmail = noclick.Connection.from_name("gmail", integration="gmail", create_if_missing=True)
# Ana's assistant, acting in exactly that account
assistant = noclick.Agent.from_name(
"assistant",
create_if_missing=True,
instructions="You help the user with their email. Be brief.",
tools=[gmail],
)
reply = assistant.message("What did my accountant send this week?")
print(reply.text)gmail is a named connection: one account, which the agent always acts in. Ana hasn't connected it yet, so the agent's Gmail tools answer with the connection's link and the agent passes it on in its reply (your code can also show gmail.connect_url itself). Once she connects, the same call reads her inbox. Run the same code for any other user and they get their own connection and their own assistant.
How does it work?
NoClick runs the agents, stores your users' connected accounts encrypted, keeps OAuth tokens fresh, and executes each integration operation. Your code holds a secret API key and calls the API. You never store a user's token or run an agent loop yourself.
Anything that waits on the world returns an operation: a connect link waits for the user, an approval for a person, an agent turn for the model. You can block on it with wait() or come back to it later by id.
Everything is scoped. A user is someone your product acts for, a person or a company, known by your own id for them. Inside noclick.as_user(user), every call acts for that user, with their connections, their agents, their conversations and their spend cap.
Languages
Every example in this guide is in Python and TypeScript: pick one in the menu at the top and the whole guide follows. The TypeScript client runs in Node, Deno, Bun and browsers.
pip install noclickAny language can call the HTTP API directly, and agents in Claude, Cursor or any MCP client can use the platform through its MCP server.
Getting started
- Sign in to NoClick and open the developer console.
- Create an API key under API keys. Creating one accepts the Developer Terms and the Acceptable Use Policy.
- Install the SDK and set
NOCLICK_API_KEYin your environment.
Then follow Getting started to make your first calls, or jump to what you're building:
- An assistant your users talk to: Agents
- Your own LLM calling your users' apps: Toolkits
- A workflow that needs a person's sign-off: Asking people
- An agent with its own inbox or phone number: Inboxes, Phone numbers