Shingle help
Connect your own agent
Let an agent you already use work in your team as you.
Connect your own agent
An agent you already use, such as Claude Code, Cursor or Codex, can work in your team in Shingle as you, under your role. It reads your sites and how each is doing, forms and bookings, customers, the Inbox, deals, prospects, workflows and Activity. It does your team's own work straight away, such as a note, a deal or a build. Before anything leaves your team, it asks you first.
There are two ways to connect one. An app signs in, with nothing to paste. A script, or a tool that can't sign in, uses a key. Either way you need an admin role or higher, and a confirmed email.
Connect an app by signing in
- Open Agents in the sidebar and choose Connect an app. It shows what to give your app, with Shingle's address filled in:
- Claude Code: run
claude mcp add --transport http shinglewith the address after it. Then type/mcpin Claude Code and choose shingle. - Cursor: add Shingle to
~/.cursor/mcp.jsonwith the address as itsurl, or choose Add to Cursor. - Codex: add Shingle to
~/.codex/config.tomlwith the address as itsurl. Then runcodex mcp login shingle. - Gemini CLI: run
gemini mcp add --transport http shinglewith the address after it. Then type/mcp auth shinglein Gemini CLI. - VS Code: run MCP: Add Server, choose HTTP and paste the address.
- Windsurf: in Cascade's MCP menu, choose Open MCP config file, add Shingle with the address as its
serverUrl, and press refresh. - Anything else: paste the address where the app asks for an MCP server.
- Claude Code: run
- Your app opens Shingle in your browser. Sign in if you're asked to.
- Check the app's name, where you'll go back to and the team it will work in. To connect another team, switch teams in the menu at the top first.
- Choose what the app may do:
- Read only, or Read and work.
- Ask me before every change, if you want to approve your team's own work too.
- Credits a day before it asks. It starts at 60, and you can choose anything from 0 to 1,000.
- Choose Connect. You go back to your app, and it's ready. Don't connect takes you back without connecting it.
The app then shows in Agents, with who connected it and what it may do. Connecting the same app again replaces the earlier connection. A connection lasts a year.
Connect with a key
- Open Agents in the sidebar.
- Choose Make a key. Name it after the agent and where it runs, and choose how long it lasts: 30 days, 90 days or 1 year.
- Set Credits a day before it asks. It starts at 60, and you can choose anything from 0 to 1,000.
- Choose Copy key. Shingle keeps no copy, so the key is shown this once.
- Under What to connect, choose your agent and copy what it shows: a command for Claude Code or Gemini CLI, settings for Cursor, Codex, VS Code or Windsurf, or the address and the header for anything else.
- Ask your agent something, such as "Which leads came in this week?". The same window says when your agent has made its first read.
A team can have up to twenty keys and connected apps working at once. Make a key for each script, so you can end one without stopping the others.
What an agent can read
Your agent finds a tool that shows the team at a glance: its plan and credits, the sites that are live, who is waiting for a reply and what is due today. Its other tools search Shingle's actions, describe one and run it. They cover sites, forms, bookings, the blog and newsletter, customers, the Inbox, deals, tasks, prospects, workflows, people, billing, Activity and Help. What an agent can do lists every action and how it runs.
A key or a connected app works at the role of the person who made it, each time it is used. If your role changes, it follows. If you leave the team, it stops. To find out what each role can see, see People.
Some things an agent can't read, whatever your role:
- exports of customers, submissions and subscribers, and a site's code
- a webhook's signing secret, a site's password and its review link
- the team's keys and connected apps
What customers and visitors wrote, such as a form answer or an email, is marked as written outside your team, so your agent can treat it as information and never as instructions.
What an agent does on its own
Work that stays inside your team runs straight away, as it does when you press the button:
- building a site, changing one, and saving or restoring a version. Nothing is live until it's published.
- writing a blog post, a newsletter or a reply in the Inbox, for you to publish or send
- customers, notes, calls, tasks and deals
- searching Radar, saving a business and building its demo
Building and changing with AI uses your team's credits, at the same prices. Each key or app can spend so many a day on its own: the number you set when you made or connected it. Past that, the work waits for your OK, and the request says what it would spend. Set it to 0 and it asks before any AI work.
An app you connected as Read only does none of this: it reads, and changes nothing. One set to Ask me before every change asks before each of these too.
Choose how much an agent does on its own
An admin or the owner can change this at any time. Open Agents in the sidebar, choose the key or the app, and pick a step under How much it does on its own:
- Only reads: it looks, and changes nothing.
- Asks every time: every change waits for your OK.
- Works, asks to send: it does your team's own work, and asks before anything leaves.
- A few things alone: it also does the few things you choose without asking, up to a number a day.
The first three save as soon as you pick one, and Undo puts the last step back. Moving down from A few things alone ends what the agent did without asking, so Shingle asks you first. The change holds from the agent's next request.
Under the steps, Credits today shows what its AI work has spent of its credits for the day. Choose Change to set a different number.
Dormer always works and asks before anything leaves or spends credits. That step is Shingle's, so it can't be changed.
What waits for your OK
Anything that leaves your team, can't be undone, or will act later on its own waits for a person:
- publishing a site, taking it down or deleting it, and its domain, password, review link and client access
- sending a reply to a customer, a newsletter or a client report
- deleting a blog post, a comment, a submission or a customer's record
- a live site's forms, webhooks and booking page
- adding, changing or deleting a workflow or a playbook
- your team's name and brand
Your agent is told that the request is waiting and where you can answer it. You'll find it in Ready for you, and on the agent's own page in Agents; the sidebar counts it beside both. The card says what the agent wants to do, which key or app asked and why it waits. Open What Shingle will send to read it word for word.
- OK: Shingle does exactly what you read, once, as the person the agent works for. The card shows it running, then Done, or that it didn't work and why.
- No: it never runs. Your agent can ask again.
A request waits one day, then expires. You answer the requests your own agents send. Admins and the owner can answer anyone's.
Let an agent do something without asking
If you keep saying OK to the same thing, an admin or the owner can let that key or app do it without asking, up to a number of times a day. Shingle then stops asking you for it.
- Open Agents in the sidebar, and choose the key or the app.
- Under How much it does on its own, choose A few things alone.
- Pick what it may do: publish a site, publish a blog post, reply to a customer, email a customer, add a booking, send a client report, make a review link, or send a test of a newsletter email.
- Set how many times a day, and choose Let it.
Its page then lists each thing it does without asking, with today's count against its number. The cross beside one makes the agent ask first for that again, and Add another… lets it do one more. Once the same key or app has had your OK ten times for the same thing, its card in Ready for you offers this too.
It still asks you in two cases:
- once it reaches the number for the day, which starts over at midnight UTC
- for 15 minutes after it reads something written outside your team, such as a customer's message, a form answer or a business's listing
Everything else always waits for your OK: deleting, domains and passwords, who a site is shared with, webhooks, workflows, and a newsletter to every subscriber. An agent that only reads, or asks every time, does nothing without asking: choosing A few things alone for it also lets it work.
What stays yours
No agent can do these, whatever you approve: billing and the plan, inviting or removing people and changing roles, making or ending keys, connecting or disconnecting apps, transferring or deleting the team, and pressing OK in Ready for you.
Try an agent in a practice team
A practice team is a team of your own with sample data: a made-up plumber's site, its customers and their messages, deals, form requests and bookings. Nothing is sent, nothing goes live and nothing is billed there, so it's the safe place to let an agent try everything.
- Open the team menu at the top of the sidebar and choose Make a practice team. You can make one once a team of yours has started its trial or its plan, and you have one at a time.
- Shingle takes you to it. The team menu says "Practice", and the sidebar says nothing is sent.
- Connect an app or make a key in Agents, as you would in any team.
Your agent can read and change everything in it, and what it asks for still waits for your OK in Ready for you. When it tries to publish a site, connect a domain, share a link, start a plan or ask for AI work, it's told that a practice team can't do that and a real team can. An email it sends reaches nobody, and nothing is delivered to another app.
To start over, delete its site in Sites, then the team in Settings, and make a fresh one.
Disconnect an app or end a key
In Agents, choose the app or the key, then Disconnect… or End… at the top of its page, and confirm. The agent stops at once, and a request it sent can no longer run.
An app you disconnected can connect again by signing in. Ending a key can't be undone: make a new one to connect again.
A key also stops on its own on the date it expires. Its page says when that is, and says so a week ahead.
Activity records an app being connected or disconnected by its name, and a key being made or ended with its name and never the key. What an agent changes is recorded under its name and the person it acts for, and says so when it was done without asking. Your OK or your no is recorded under you, and so is letting an agent do something without asking.
If your agent gets stuck
- Shingle says the app couldn't connect. The app sent a request Shingle can't use. Go back to the app and connect again.
- You can't connect an app. You need an admin role or higher and a confirmed email, and your team needs room for one more.
- It stopped working. The app may have been disconnected, or the key ended or expired. Connect the app again, or make a new key.
- It can't read something. Your role may not allow it, or it's one of the things no agent can read.
- It says it needs your OK. Open Ready for you and answer the request.
- It says a person has to do it. That's billing, people, keys and apps, or pressing OK. Do it in Shingle yourself.
- A key isn't taken. Check that the header is
Authorization: Bearer, a space, then the whole key. - It goes too fast. An agent can make 600 calls a minute. Past that, Shingle asks it to wait.
For developers
The agent's address is Shingle's MCP server, shown in Connect an app and with a key when you make it. It answers the Model Context Protocol over HTTP and keeps no session.
An app that signs in finds how to from the address itself: Shingle offers the standard sign-in for MCP servers, with PKCE, and an app registers itself. A key goes in the Authorization header instead.
The same key works with Shingle's API directly. Each read is a GET under /api/v1, with the same header:
curl https://<the address shown with your key>/workspaces/<your team's id>/sites \
-H "Authorization: Bearer <your key>"
A change is a POST, a PATCH or a DELETE to the same address a click in Shingle uses, with a JSON body. What an agent can do lists each route and its path. One that waits for your OK answers 403 with the code approval_required and an action: its id, why it waits in reason, what it would spend in credits, where a signed-in person answers it in approve_url, and when it expires. Read /agent-actions/<its id> to see where it stands and what it answered. Sending the same change again while it waits returns the same request.
Answers are JSON. A list comes with next_cursor and has_more. A failure says what went wrong in detail, with a code that doesn't change: unauthenticated for a key that doesn't work, forbidden for something an agent can't do, approval_required for a change that waits for you, not_found for anything outside your team, and rate_limited when it should wait.