You ask your assistant for a dashboard of this week's numbers. Two minutes later there is a real URL serving a real page. Then you go to send it to four colleagues and stop, because the link works for anyone who has it, and "anyone who has it" includes anyone it gets forwarded to.
That has been the honest gap in agent-built internal tools. The URL is either public or it is nothing.
Quick answer
A project now has two separate settings. Visibility decides whether its URL serves at all. Link access decides who gets through once it does. Set access to "my team" and opening the URL takes a sign-in, and only people you have invited to your account get in. Everyone else sees a page telling them they do not have access, and never sees the tool.
Invite your team from Team in the dashboard, pick a role for each person, and share the link.
The two settings, and why they are separate
It is tempting to make this one dropdown with three values. It is not one setting, because the two questions have different answers at different times.
Visibility is about whether the thing is live. A private project still exists, still has a workspace, still has files and history, and its URL simply does not serve. This is where every new project starts.
Link access only means anything once the URL serves. It is public by default, which is anyone with the link, exactly how every project behaved before this existed. Set it to team and the URL asks for a sign-in first.
Keeping them apart means you can flip a tool offline for a week without losing who it was shared with, and you can tighten who can see it without taking it down.
Setting it up
Open the project, go to Settings, and set visibility to public. A second control appears: Who can open it.
- Anyone with the link. The default. No sign-in, the URL just works. Right for a status page, a landing page, a public demo.
- My team. Sign-in required, and only for people in your account.
Pick "My team" and save. The project's badge changes from Public to Team only, which matters more than it sounds: a green "Public" badge on a tool that is actually gated is the kind of small lie that gets someone to paste a link somewhere they should not.
If you want it narrower than the whole team, tick specific people. Nothing ticked means everyone in the account. You are always on the list, so you cannot lock yourself out of your own tool.
What your colleague sees
They open the link. They get bounced to sign in, they sign in, and they land on the tool. That is the whole experience. There is no separate password to circulate, no shared credential in a group chat, no VPN.
If they are not on your team, they get a page that says they do not have access and names the account they are signed in as, in case they have two. They never see the tool itself, and they learn nothing about it.
Inviting people
Team in the sidebar. Enter an email, pick a role, send.
- Member. Builds. Servers, projects, secrets, keys, all inside your account. This is the default and the right pick for anyone doing the work.
- Admin. Everything a member can do, plus inviting and removing people.
- Viewer. Only the links shared with them. A viewer signing in does not get a dashboard at all: they get a list of the tools you have shared, and nothing else.
That last role is the one worth knowing about. If you want a client, a stakeholder, or someone in another department to see one dashboard, you do not have to give them the keys to your infrastructure to do it. Invite them as a viewer.
Invites are sent by email and only work for the address they were sent to. Forwarding one to a colleague does not let the colleague in.
Seats
Free is a single-person account, so inviting anyone means moving to a paid plan. Every paid plan includes seats, and the number on the pricing page is the whole team including you.
If you later drop to a smaller plan, nobody is removed. Members past the new limit simply cannot open the account until you upgrade again or free a seat. Your team survives a downgrade, which is not the same as your team keeping access during one.
Doing it from your assistant
If you drive Server4Agent through your assistant rather than the dashboard, this is a field like any other. Ask for it in plain English and the assistant sets it:
> Make the ops dashboard live, but only for our team.
Under the hood that is access: "team" on the project. Both create_project and update_project take it, every read returns it, and it is in all four SDKs. See the MCP guide for the tool signatures.
When to use which
Anyone with the link is right more often than people expect. A status page, a public form, a demo you want to send to a prospect, a landing page. If discovering it is harmless, do not add a login.
My team is for the things where the audience is the point: revenue dashboards, ops consoles, anything reading from a live system, drafts you want a colleague to look at before they go out.
Private is still right for work in progress. If nobody should be looking yet, do not serve it at all.
FAQ
Does the sign-in slow the tool down?
The first visit does a redirect to sign in and back. After that it is a signed cookie and there is no extra round trip on the page itself.
What happens when someone leaves the team?
Remove them from the Team page. Their API keys and any connected apps stop reaching your account on their next call. A team-only link they already have open closes within the hour.
Can I use my own domain?
Not yet. Every project ships to its own subdomain with managed TLS today, and bring-your-own-domain is on the roadmap. See security and trust for what is live versus planned.
Is this the same as a password on the page?
No, and the difference matters. A shared password is one secret everyone knows and nobody can revoke individually. This is per-person: you can see who has access, change someone's role, or remove one person without disturbing anyone else.
Can a viewer see my other projects?
No. A viewer sees only the projects you have shared with them, and no dashboard at all. Members see the account's work, because that is what you invited them to do.
Related reading
- 5 internal tools your startup should not waste engineering time on
- Why every AI agent should return a URL
- A manager's guide to delegating work to an AI assistant
- I asked an AI agent for an internal sales dashboard