{{g.category}}{{g.total}}
{{g.hint}}| {{p.display_name}}{{p.summary}} | {{p.auth_kind==='key'?'API key':(p.auth_kind==='token'?'your own bot':'one-click')}} | {{connCount[p.service]}} connected not configured not connected |
← Catalog · Social
The links a creator lists on their link-in-bio page, across Linktree-style services. 5 endpoints from ScrapeCreators, from $0.00188 per call. Jobs that several providers do sit on one row, so you can compare price and coverage before you spend a call — choosing is yours; olywork does not route between providers automatically.

A teammate shared this {{shareGate.kind}} with you. Sign in and you'll land right on its page — no API key ever touches your machine.

2,800+ endpoints across 59 providers — SEO and backlinks, social and trends, people and company enrichment, ads — priced per call, from a cent, with no provider signup. Plus your own team's keys and skills, callable by every teammate's agent, with the credential never leaving the server.
The same secret, needed in more and more places - and every place is a copy that can leak.
.env, and machine. One leak exposes them all.Your team's tools and your agents' skills, all one revocable token away, and no key ever on a machine — alongside the 2,800+ catalog tools you don't need a key for at all.

Connect an account once. olywork holds credentials server-side and relays upstream requests at exact 0% provider rates — zero keys land on agent machines.
| {{p.display_name}}{{p.summary}} | {{p.auth_kind==='key'?'API key':(p.auth_kind==='token'?'your own bot':'one-click')}} | {{connCount[p.service]}} connected not configured not connected |
{{mkProvider.category}} · {{mkProvider.base_url}}
{{mkProvider.summary}}
| {{c.identity_label || c.name}} {{c.resource_name || c.resource_ref || (c.supports_discovery ? 'no '+(c.resource_label||'account')+' chosen yet' : 'whole account')}} | {{c.name}} | working setup required failing expired expiring manual renew needs a second credential {{cap}} |
{{mkCapabilityIntro(cap)}}
Every endpoint olywork knows for this platform, one ledger, filed by subject — jobs several providers do sit on a single row, so you can compare price and coverage before you spend a call.
| What it does | Providers / route | Price | ✓ | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{sec.domain}} {{sec.rows.length}} | |||||||||||
|
▸
{{r.title}}
|
{{pill.name}}{{pill.price}}✓
+{{r.pillsMore}}
{{r.endpoints[0].provider_display||r.endpoints[0].provider}}
{{r.endpoints[0].method}}{{r.endpoints[0].path}}{{r.endpoints[0].kind}}
|
{{r.price}}({{r.priceNative}}) | ✓· | ||||||||
|
{{e.provider_display||e.provider}}
{{e.method}}{{e.path}}
{{costShort(e.cost)}}({{costNative(e.cost)}})
verified {{e.verified}}
unverified
your account
any account
{{e.tier}}
{{e.summary||'No summary in the catalog for this endpoint.'}} Parameters
{{e.input.note}} {{s.label}}{{s.type}}
The catalog has no parameter reference for this endpoint yet — the provider's docs have them.
{{e.call_template}}
{{e.id}}
Loading the captured response…
{{platEx[e.id].err}}
{{platEx[e.id].text}}
|
|||||||||||
Call any of these with no key on your machine. Copy a snippet, or Try it here.
Register an upstream API here, then call it with no key on your machine.
| {{t.name}} | {{t.host}} | ⌘ run{{t.cli.enabled?'':' off'}}serverlocal-only{{w.label}} |
| {{r.name}} | olywork skill install {{r.name}} | ||
Nothing here{{q?' matches "'+q+'"':' yet'}}. This is your personal space - your team's tools live under another org. Switch to a team →
Your team starts with $1.00 of free credit, so the catalog works before you register anything: find a tool by what it does, see the price, call it. Browse the catalog →
When you're ready to add your own keys and skills — your .env and skill folders — load them here and they become callable tools for the whole team.
curl -fsSL {{proxy}}/install.sh | sh olywork login
# preview what's here (read-only) olywork scan # register keys + skills olywork upload --all
One line, token included — your agent reads llms.txt, installs the CLI, signs in, and registers your skills + keys (read-only scan first, you approve).
{{buildAgentPrompt('agent', true)}}Loading…
Send someone this page's link, or paste this into a coding agent (Claude Code / Codex / Gemini) — it installs the CLI, signs them in as themselves, and pulls just this skill. Its credential{{detailData.secrets.length>1?'s stay':' stays'}} server-side — calls go through the proxy, no key lands on their machine.
{{detailPrompt}}
Send someone this page's link, or paste this into a coding agent. Calls go through the proxy — the credential is injected server-side, never on their machine.
{{detailPrompt}}
{{detailData.base_url}}
{{w.label}} injected server-side on every call — the value never appears here or on a caller's machine.
none — a public upstream, no credential needed.
olywork run {{detail.name}} -- <args> server local-only ⌘ run off
runs matching these patterns are refused before the key is injected: {{p}}
{{detailParentSkill.name}} — the recipe + files that registered this tool.
The credentials your tools inject. Values are encrypted server-side and never shown.
| {{s.name}} | {{s.kind}} | owner: {{short(s.owner)}} |
No secrets yet — add one below, or bulk-load everything at once (setup guide under the form).
Name a key after its catalog provider — e.g. {{keyNameSuggestions.slice(0,3).map(p=>p.service).join(', ')}} — and catalog calls use it automatically. The name field suggests every provider that takes a pasted key.
Tip: paste a whole .env into the name field — it splits into rows automatically.
A param is non-secret config (project id, org id) — injected alongside a credential into CLI env or an HTTP query.
Bulk-load your keys (and skills) from your machine — each lands here encrypted, referenced by name.
curl -fsSL {{proxy}}/install.sh | sh olywork login
# preview what's here (read-only) olywork scan # register keys + skills olywork upload --all
One line, token included — your agent reads llms.txt, installs the CLI, signs in, and registers your skills + keys (read-only scan first, you approve).
{{buildAgentPrompt('agent', true)}}You are {{activeRole}} here. Switch, create or join a team from the picker at the top of the sidebar.
Members, projects and policy are visible to admins.
Your usage today: {{myUsage.used_today}} / {{myUsage.cap}} calls.
This is the only time it is shown. Put it in the agent's OLYWORK_TOKEN.
✓ connected — {{newAgent.name}} called in as itself
waiting for its first check-in…
Snippets carry the real token (minted this page-load — the server only keeps a hash).
The server stores only a hash of the token, so it can't be shown again — these snippets use $OLYWORK_TOKEN. (the old token stops working)
{{agentSnippet}}
Put this wherever the agent runs — a .env, a CI secret, or its config.
Daily cap = how many calls + runs a member may make per day. -1 = unlimited.
Tools = which endpoints/CLIs a member may call or run. Local run = may run CLIs on their own machine (off = server only). The owner always has full access.
| Role | Today | Daily cap | Tools | Local run | ||
|---|---|---|---|---|---|---|
| ↳ {{m.client}} detected
runs as {{short(m.member)}} — inherits their full access |
— | {{m.used_today}} | {{m.calls_30d}} calls in 30 days · last seen {{when(m.last_seen)}} | |||
|
↳ {{m.name}} agent
{{m.created_by?('owned by '+short(m.created_by)):'machine identity'}}
{{m.email}}
|
{{m.role}} | {{m.used_today}} | All | |||
|
Tools & skills {{m.email}} may use/see — uncheck to withhold. All checked = full access (and new ones apply automatically).
No tools registered yet.
Projects {{m.email}} may use — all checked = every project (and new ones apply automatically). Tools with no project stay visible to everyone.
Tip: create a project to scope members to just part of the team's tools. |
||||||
A member is a person who signs in. An agent is a machine identity with its own token — capped, scoped and logged as itself. Scope either with Tools and Projects above.
{{promoteHint}}
Cap -1 = unlimited. An agent can never be an owner, and can never sign in — its token is the only way to act as it.
{{lastInvite.code}}| Role | Invited by | Expires | ||
|---|---|---|---|---|
| {{inv.email}} | {{inv.role}} | {{short(inv.invited_by)}} | {{inv.expires_at?until(inv.expires_at):'never'}} |
No pending invites.
Top-ups aren't configured on this deployment.
Auto top-up is set up and will switch on as soon as a top-up saves your card.
On - we add {{money(billing.autotopup.amount_micro)}} whenever the balance drops below {{money(billing.autotopup.threshold_micro)}}. This month: {{money(billing.autotopup.month_spend_micro)}}. {{autoOpen?'Cancel':'Edit'}} Keep agents running without watching the balance. We charge your saved card only when it dips below your threshold.
Loading…
No top-ups yet. Once you add funds, every payment shows up here with its invoice.
| {{bhistDate(i.created_at)}} | {{money(i.amount_micro)}} | {{i.auto?'auto':''}}+{{money(i.bonus_micro)}} bonus | {{bhistLabel(i)}} — |
Invoice links are temporarily unavailable — the amounts above are correct. Try again shortly, or use Manage billing for the full archive.
Loading…
A project groups tools inside this team, so a member or agent can be scoped to just part of it. A tool with no project stays visible to everyone. Secrets stay team-level — one shared credential can back tools in several projects; scope who uses them via member access.
No projects yet — every tool is team-wide.
| Project | Slug | Tools | |
|---|---|---|---|
| {{p.name}} | {{p.slug}} | ||
|
Tools in {{p.name}} — check to add, uncheck to make team-wide again. Checking a tool that lives in another project moves it here.
No tools registered yet.
|
|||
Block calls to a host, a path, or a method. Leave a field empty to mean any. Applies to the proxy and to runs — and to everyone, including owners.
No rules — nothing is blocked.
| Method | Host | Path | Applies to | Project | Note | |
|---|---|---|---|---|---|---|
| {{r.method||'any'}} | {{r.host||'any'}} | {{r.path_prefix||'any'}} | {{r.scope==='org'?'whole team':(denyWho(r.user_id))}} | {{r.project_id?projName(r.project_id):'any'}} | {{r.note}} |
olywork blocks at three layers: the rules above (HTTP host/path/method, this team's policy), these per-tool argument patterns (from the skill's olywork.json or the olywork catalog — edit them there), and the OS sandbox around isolated local runs.
| Tool | Blocked argument patterns |
|---|---|
| {{t.tool}}off | {{pat.pattern}}· {{pat.source}} |
The most this team can spend per day on olywork's keys. Resets at 00:00 UTC. It's the blast radius of a runaway agent — worth keeping even with auto top-up on, since a balance that refills itself can't stop one.
You can lower this freely. Raising it past {{money(capCfg.platform_ceiling_micro)}}/day needs a word with us — that's the ceiling we allow a team.
Cap or block one of your own customers by the tags your calls carry
(X-Olywork-Meta). Limits stack — a workspace ceiling and a
per-customer ceiling both apply, and a refusal names which one hit. They are
advisory: concurrent calls can overshoot slightly, and your balance is the
hard limit.
| {{dim}} | Daily limit | Status | |
|---|---|---|---|
| every {{dim}} (default) | {{defaultFor(dim)?fmtCap(defaultFor(dim)):'no limit'}} | — | |
| {{b.val}} | {{fmtCap(b)}} | {{b.status}} | |
| no exceptions — every {{dim}} follows the default | |||
A personal team cannot be left or deleted. Create or join other teams from the picker at the top of the sidebar.
{{actOkOnly?'Successful calls and runs in this org.':'Every proxy call and server CLI run in this org.'}}
| When | Who | Tagged | Tool | Action | Status | Cost |
|---|---|---|---|---|---|---|
| {{when(a.created_at)}} | {{short(a.user_email)}}via {{a.client}} | {{k}}={{v}}— | {{a.tool}} | {{a.where||'run'}}{{a.action}}result ↗result via CLI{{a.task.ttl_note?'expires in '+a.task.ttl_note:'time-limited link'}} | {{a.status}}{{taskStateLabel(a.task)}}result › | hold {{a.cost!=null?money(a.cost):'—'}} |
No activity yet.
No successful calls yet — show all {{activityRows.length}}.
Calls & runs per member over the last {{usageDays}} days. Counts only - no request or response content is stored.
| Member | API | Local | Server | Total |
|---|---|---|---|---|
| {{short(u.user_email)}} | {{u.call}} | {{u.local_run}} | {{u.server_run}} | {{u.total}} |
No usage in this window.
| Tool | Events |
|---|---|
| {{t.name}} | {{t.total}} |
| Day | Events |
|---|---|
| {{d.day}} | {{d.total}} |
What each {{key}} spent, from the ledger. A call is credited in full to every tag it carries, so these sections are different slices of the same money — never add two of them together.
| {{key}} | Calls | Spend |
|---|---|---|
| {{r.value}} | {{r.calls}} | {{money(r.charged_micro)}} |
| untagged | — | {{money(tagUsage[key].unattributed_micro)}} |
Nothing tagged {{key}} in this window.
Loading…
Cross-tenant control (super-admin). Suspend locks members out; delete cascades.
| Org | Members | Tools | Status | |
|---|---|---|---|---|
| {{o.name}} | {{o.members}} | {{o.tools}} | {{o.suspended?'suspended':'active'}} |
| Orgs | Flags | ||
|---|---|---|---|
| {{u.email}}you | {{u.orgs.length}} | super-admin suspended - | - you - |
Setting up olywork for {{welcomeAgent.name}}
First, install the olywork plugin:
{{welcomeAgent.plugin ? "Then, in your Bot's chat, send:" : "In your agent's chat, send:"}}
{{welcomeSetupCmd}}Already created. Setup signs your agent in automatically — but if it ever asks for a key, give it this one (header X-Olywork-Token).
{{startTokenShow ? myToken : (myToken.slice(0,14)+'••••••••••••••••')}}olywork is ready with your agent. Copy any example below and send it to your agent.
Optional, for two other kinds of user. Each is a skill file — paste the line into your coding agent, in your own repo, and it implements the rest.
Put your API in front of every olywork agent. Your agent reads the guide, writes the catalog entry for your endpoints and prices, and opens the PR.
Read {{proxy}}/vendor-listing.md and add our API to the
olywork catalog, then open a PR.
Give your users 2,800+ tools without owning the keys — and bill each of your customers for what they used. Covers the call methods (HTTP, MCP, CLI), per-customer tagging, spend limits and invoicing.
Read {{proxy}}/integrate.md and integrate olywork into our
product, including per-customer usage tracking and billing.
2,800+ catalogued endpoints: SEO and backlinks, social and trends, people and company enrichment, ads. Find one by what it does, see its price, call it — no provider signup. Your team's $1.00 free credit covers hundreds of calls.
One line, token included — your agent reads llms.txt and does the rest: installs the CLI, signs in as you, and makes its first call.
{{buildAgentPrompt('agent', true)}}Installs the olywork command and points it at this server. Upgrade later with olywork update.
curl -fsSL {{proxy}}/install.sh | sh
Opens your browser — GitHub, Google, or an email code. Your first sign-in also registers you.
olywork loginSearch the catalog by what you need done, check the price, call it, and see exactly what it cost.
olywork catalog search "backlinks for a domain" olywork call tikhub.tiktok.user.profile --query uniqueId=tiktok olywork balance # see exactly what it cost
Share your skills & API keys with the team — your .env keys and skill folders become tools every teammate's agent can call, without the key ever leaving the server.
One line, token included — your agent reads llms.txt, installs the CLI, signs in as you, and can register your local skills + keys as shared tools (read-only scan first, you approve).
{{buildAgentPrompt('agent', true)}}Installs the olywork command and points it at this server. Upgrade later with olywork update.
curl -fsSL {{proxy}}/install.sh | sh
Opens your browser — GitHub, Google, or an email code. Your first sign-in also registers you.
olywork loginTwo ways to give your agents power: share a whole skill, or register a single API endpoint. Preview with olywork scan first. Idempotent — re-run freely.
olywork upload # both .env + skills in this dir olywork upload env --select openai,stripe olywork upload skills --dir ~/.claude/skills --all # register skill from a specific path
Your team's own tools: a teammate pulls a shared skill and calls any registered API, with no keys on their machine. These are never metered — your team already pays for them.
Browse the shared library, pull a skill, and call a tool — the credential stays on the server, never on your machine.
olywork skill ls olywork skill install seo-blog-writer olywork call https://api.stripe.com/v1/charges
They get {{money(ref.terms.referred_micro)}} when they add {{money(ref.terms.min_topup_micro)}}. You get {{money(ref.terms.referrer_micro)}}, {{ref.terms.hold_days}} days later.
Loading…
Referral rewards are paid as credit into a team you own, so you'll need one first.
Your reward lands in {{ref.credit_org.name}}.
{{money(ref.totals.pending_micro)}} on the way — rewards land {{ref.terms.hold_days}} days after your friend adds funds.
That's as far as the self-serve program goes. If you're sending real volume, email support@olywork.com — we pay partners in cash.
Nobody yet. Share your link above.
| Who | Signed up | Status | Reward |
|---|---|---|---|
| {{r.email || '—'}} | {{bhistDate(r.signed_up_at)}} | {{refStatus(r)}} | {{money(r.reward_micro)}} — |
Four ways to learn olywork - pick one.
The whole registry from your terminal - copy each command and follow along. {{tutSteps.length}} steps.
Everything you can do in this web UI, a screenshot per step. {{tourSteps.length}} steps.
Turn the CLIs on your machine into team tools, then use them in a shell where they just work - plus the security sandbox. {{(tutData.importShell||[]).length}} steps.
Choose which tools each member may use, and whether they may run CLIs locally. {{(tutData.access||[]).length}} steps.
Tried the demo? Remove demo teammates →
| Action | {{c}} |
|---|---|
| {{r[0]}} | {{v?'✔':'✘'}} |
You bring your own {{tokenAsk.provider.auth_kind==='key'?'API key':'bot'}}, so it stays yours — olywork holds it server-side and injects it on every call.
{{tokenAsk.provider.setup_action_label||'Create the app'}}{{tokenAsk.provider.setup_note}}
Choose an amount. Bigger top-ups earn bonus credit; you can always add more later.
Whole dollars, ${{billing.topup.min_usd}}–${{billing.topup.max_usd.toLocaleString()}}.
{{topupErr}}
You'll pay on Stripe's secure page. The balance updates the moment the payment lands.
What should your agent be allowed to do with this account? Widening it later means going through the provider's consent screen again.
{{capAsk.provider.consent_notice}}
Calls on this connection are metered from your team balance — {{capAsk.provider.display_name}} bills per use (reads ~${{capAsk.provider.billed_rates.read_per_result_usd}}/result, posts ${{capAsk.provider.billed_rates.write_per_call_usd}}, ${{capAsk.provider.billed_rates.write_with_link_usd}} when the post links out). Connecting your own developer app instead is never metered.
| {{capLabel(cap,capAsk)}} In review {{capHelp(cap,capAsk)}} |
Choose how this account should connect. You can add the other method separately later.
The {{resPick.label}} your agent uses by default. It can still use another one per call — this just saves it guessing.
No {{resPick.plural}} found — this account may not have access to any.
| {{r.label||r.id}}{{r.id}} |
Pick a skill folder (or a folder of skills). olywork reads each SKILL.md and detects whether it's a recipe, a tool, or needs credentials - exactly like olywork upload skills - and shows you before anything is registered.
Raw bundle payload (recipe + secrets + tools); bindings reference a secret by its local_name. back to folder import
An endpoint = an upstream base URL + one or more credential bindings (how olywork injects each key). Need a key? Close this and open ⚿ Secrets first.
{secret} becomes the credential - e.g. header Authorization: Bearer {secret}, or query api_key={secret}. Every binding applies on each call (multi-credential upstreams).
Optional. Team-wide is the default. A project only narrows things for members you have scoped to it.
Members run olywork run {{tForm.cli.bin||'<cli>'}} -- <args> — olywork injects the key into that run's environment only; it never lands on their machine.
Each row is a regex, matched against the whole command line AND each argument — block subcommands that execute arbitrary code ((^|\s)run(\s|$)) or flags that redirect the key (--publish-url\b).
No guardrails — any {{tForm.cli.bin||'CLI'}} invocation gets the key.
Paste the one-time code an admin gave you. It must match your email ({{me}}). Invites addressed to you also appear automatically as a banner.

{{pendingInvites.length===1 ? 'Accept to call the team\'s tools with' : 'You have '+pendingInvites.length+' pending invites — pick the teams to join and call their tools with'}} no API keys on your machine.

Create your team — it's where you keep API keys and skills so your teammates and their agents can call them without holding the keys. You can invite people and add secrets right after.

Choose your agent for the best setup instructions.
Setting up olywork for {{welcomeAgent.name}}
{{welcomeSetupMasked}}{{welcomeAgent.plugin ? 'Your Bot reads that file and signs in with your team & token — then it can call every tool in the catalog.' : 'Your agent reads that file and signs in with your team & token — it installs the CLI and starts calling tools.'}}
You'll be its owner - invite teammates after.
Paste that org's token (each org has its own).
One call to the proxy - your key is injected server-side. PATH is the {{copyTool.host}} path you'd normally call.
A recipe is know-how (a SKILL.md), not an API - you don't call it, you install it into .claude/skills/ so an agent can use it.
Paste this into your coding agent (Claude Code / Codex / Gemini). One line — the agent reads llms.txt and does the rest: installs the CLI, signs in as you, and makes its first call. No API keys land on your machine.
{{agentPromptText}}
Sell an API? This is an instruction for your coding agent, not for you — paste it into Claude Code, Codex or any coding agent. The agent reads the hosted instructions, prepares the listing files, and opens a pull request on the olywork repo — with your contact email so we can arrange live verification.
{{vendorPromptText}}
Missing a provider or capability? Requests go straight to the catalog team — the most-asked-for tools get added first.
Got it — thanks.
Requests are reviewed as they come in; the most-asked-for tools get added first.
✓ Invite sent to {{share.sent.email}} — the email's button signs them in and lands them right on this page.
Or DM them this link — it opens the sign-in with their email prefilled; once they sign in, the invite accepts itself and this page opens:
{{shareInviteUrl}}
Already on the team? Just send them the page link (⧉ Copy link). This invites someone new — after one click in the email they land on this exact page.
Full access = they see and can use everything the team has registered. Uncheck to scope them to just {{detail.kind==='skill'?'this skill':'this tool'}} — they'll only see and call what you're sharing. Local CLI runs stay off either way.
{{viewRecipe.recipe}}
Enter the API path for {{tryTool.host}} (everything after the domain) and Send - it runs through the proxy with the key injected. You never send the key.
{{tryResp}}Runs {{(tryTool.cli&&tryTool.cli.bin)||tryTool.name}} on the registry server with the credential injected there - the key never reaches your machine. Same as olywork run --server {{tryTool.name}}.
{{runOut.stdout}}
{{runOut.stderr}}
{{runOut.detail}}
Loading…
{{callView.error}}
{{callView.note}}
{{callView.request.method}} {{callView.request.url}}
{{pretty(callView.request.body_text)}}
{{callBodyShown}}
Show full response ({{fmtBytes(callView.response.body_text.length)}})
The stored answer is not text — copy is unavailable for binary bodies.
{{epTry.method||'GET'}} {{epTryDisplayPath}}
{{epTry.summary}}
⚡ {{epTryAccess.detail||'No key needed — served on olywork\'s key, billed to the team balance.'}} 🔑 Served with your team's own {{epTry.provider_display||epTry.provider}} credential — billed by the provider, not the team balance. {{epTryAccess.detail||'Not callable from this team yet.'}}
One line — the agent reads llms.txt, installs the CLI and signs in as you. Token & team are baked in.
{{epTrySetupLine}}Paste this next — the agent calls the endpoint through olywork, no key on its machine.
{{epTryAgentUse}}curl -fsSL {{proxy}}/install.sh | sh
olywork loginolywork catalog get {{epTry.id}}{{epTryCliCall}}One endpoint, one token. olywork injects the credential server-side and relays the response verbatim.
{{epTryCurl}}$OLYWORK_TOKEN is a placeholder — set it to your API token (copy it on Getting started).
No parameters — just run it.
{{epTryResp}}
After sign-in, review the requested access before you approve it.
Sign in with {{invitePrefill}} and you'll drop straight into the team.
You'll land on “{{shareGate.name}}” right after.
Create a free team and call any of these — $1.00 free credit, no card required.
Enter your email to sign in or get started with $1.00 free credit.
Code sent to {{emailInput}} · dev code {{devCode}} · change