skilly.
All skills
Automation / AGENT SKILL

recoup-platform-api-access

recoupable/skills
4.3K installs 7 GitHub stars
0

Access Recoup resources and run external connector actions for documents, email, and social platforms.
Call the Recoup API and external connectors directly — fetch any platform resource (artists, socials, organizations, research, documents) and run connector actions (Google Docs/Sheets/Drive edits, Gmail, TikTok, Instagram). Use whenever you need raw Recoup data, a platform resource, to write curl against api.recoupable.dev, or to read/write something outside Recoup like a Google Doc URL or a spreadsheet. The plumbing every other skill rides on. To onboard or operate on an artist use the recoup-roster-* skills; for first-run connection use recoup-platform-connect-account.

Low community score

recoup-platform-api-access: This skill has a community score below −5, meaning it has received more downvotes than upvotes. Review its source and assessment before installing. Community votes are not a security review.

BEFORE YOU INSTALL

Understand the trade-offs.

SECURITY REVIEW

Not yet assessed

Review the original instructions and requested permissions before installing.

No security review is available for this catalog entry yet.

SKILL QUALITY

Not yet assessed

How clearly the skill guides your agent, how complete its workflow is, and how you can check the outcome.

No quality assessment is available for this catalog entry yet.

The full skill.

Original instructions from the publisher’s SKILL.md

# Recoup — API Access

The platform access layer: authenticate, talk to the Recoup REST API, and
invoke external connectors. Base `https://api.recoupable.dev/api`; docs
`https://docs.recoupable.dev` (`/llms.txt`, `/llms-full.txt`, OpenAPI JSONs).

## Prefer authenticated MCP tools

Discover the host's Recoup MCP catalog first. Use a matching tool when its actual
schema and results cover the requested operation. Prefixes vary by host. Use
`list_artists` for roster discovery and bind subsequent requests to returned IDs.
Do not infer that every REST endpoint or external connector has an MCP equivalent.

The host manages OAuth. Do not extract its token, ask for it, or put it into REST
requests. A working MCP connection does not require environment variables.
If only the limited catalog is available, reconnect with `mcp:tools` consent and
refresh the host's tools. Do not initiate sends, publication, deletion or paid
work merely because the tools are available.

For an operation absent from MCP, retain the documented REST workflow below.
If REST credentials are missing, explain that specific limitation; do not claim
the entire Recoup connection is broken or create a throwaway account.

## REST fallback — one Bearer header, inline

Every REST call uses the same header, dropped straight into the `curl` (no setup step):
the sandbox sets one of the two vars, and the API accepts a `recoup_sk_` key or a
Privy JWT over `Bearer`.

```bash
curl -sS -H "Authorization: Bearer ${RECOUP_API_KEY:-$RECOUP_ACCESS_TOKEN}" \
  "https://api.recoupable.dev/api/artists/{id}/socials"
```

If neither variable is set, use an applicable connected MCP tool or request
separate REST setup for the missing capability. Do not retry unauthenticated.

## Pick the artist mode first (guessing here fabricates artists)

- **A — any-artist research** (a name; no roster lookup) → Research endpoints.
- **B — browse my roster** → Roster discovery (below).
- **C — a specific roster artist** → Roster discovery, match the name, capture
  the artist `account_id` (the current list `id` is its alias).
- **D — add an artist** → use recoup-roster-add-artist.

**Roster discovery:** `GET /accounts/id` → `GET /artists` (your roster; `org_id`
optional — orgs are often empty, so don't stop when `organizations` is `[]`).

> **Use the artist account UUID for every `/artists/{id}/*` sub-resource.**
> Current roster rows return that UUID in both `account_id` and `id`. Do not use
> an internal profile-row key, a Spotify ID or an opaque research ID. Verify
> older saved IDs against the current authenticated roster.
> **socials are embedded** in the `/artists` response as `account_socials`
> (`username`, `followerCount`, `profile_url`) — read them there before calling
> `/artists/{account_id}/socials` at all.

**Stop rule — never invent a roster:** if `GET /accounts/id` resolves to an
`agent+…@recoupable.com` email,
it's a throwaway key — say so and ask for a real-account key (or
recoup-platform-connect-account). Don't fabricate an artist/roster to keep moving.

**Stop rule — never invent metrics/data:** report only figures you retrieved from a
successful call this run. If a call errors or returns empty, or no connector exists
for a metric (`GET /connectors/actions` → check `isConnected`), **say so and omit
it** — never estimate, use "industry averages", or fill gaps with
sample/placeholder numbers. A short accurate report beats a padded, invented one.

**Before you give up on missing data — get it, or hand back a connect link.** When a
metric's source isn't connected, work down this list before omitting:
1. **Scrape the public data you can get** — `POST /api/socials/{social_id}/scrape`
   (one profile) or `POST /api/artist/socials/scrape` (all of an artist's). Works
   for TikTok / Instagram / X / YouTube / Threads / Facebook. Report those real
   public numbers.
2. **Check connection status** — `GET /api/connectors` → each connector's
   `isConnected`.
3. **Mint a connect link** — `POST /api/connectors {"connector":"youtube"}` returns
   `{ redirectUrl }` (a Composio OAuth URL). Surface it to the caller so the user can
   self-connect: *"CPM/revenue needs YouTube Analytics — connect here: {redirectUrl}"*.

Return the real public data **plus** the connect link — that beats both a fabricated
report and an empty/omitted one.

## Docs map (pull the section you need; don't guess paths)

Account & Identity · Artists & Content · Research (Songstats + Web) · Social
Integrations · Chat & Agents · Developer/Infra. Find the exact path/params by
grepping `llms-full.txt` or pulling the OpenAPI JSON for the area, e.g.:

```bash
curl -s https://docs.recoupable.dev/llms-full.txt | grep -A 30 -i "similar artists"
curl -s https://docs.recoupable.dev/api-reference/openapi/research.json | jq '.paths | keys'
```

Geography comes from `audience`; discovery from `similar` + `web`.

## Connector actions (Google Docs/Sheets/Drive, Gmail, TikTok, Instagram)

For reads/writes **outside** Recoup:
- `GET /connectors/actions` — catalog (each action's `slug`, `parameters`
  schema, `connectorSlug`, `isConnected`).
- `POST /connectors/actions` `{actionSlug, parameters}` — execute one.

Slugs are `UPPERCASE_SNAKE_CASE` (e.g. `GOOGLEDOCS_UPDATE_DOCUMENT_MARKDOWN`,
`GMAIL_FETCH_EMAILS`). **Always pull the parameters schema from the catalog before
executing** — shapes vary per action. Trigger heuristic: a pasted
`docs.google.com`/`drive.google.com`/`sheets.google.com` URL, or "edit this doc",
"send an email", "post on TikTok".

## Send an email (from Recoup)

`POST /api/emails` sends an email from `Agent by Recoup <agent@recoupable.com>` via
Recoup — works headless with your API key, no Gmail connector needed. Use it for
reports, alerts, and scheduled-task output.

Run it with `bash` (not `web_fetch` — that hides the response and you can't confirm
the recipient):

```bash
curl -sS -X POST -H "Authorization: Bearer ${RECOUP_API_KEY:-$RECOUP_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"to":["someone@example.com"],"subject":"Weekly report","text":"# Summary\n…"}' \
  "https://api.recoupable.dev/api/emails"
# → {"success":true,"message":"Email sent successfully … to someone@example.com.","id":"<resend-id>"}
```

`to` is a JSON array of email strings (`["a@b.com"]` — not a bare string, not
`[{"email":…}]`). The only keys are `to`, `cc`, `subject`, `text`, `html`,
`chat_id`, `account_id`; an unknown key (e.g. `recipients`) is dropped, and `to`
then defaults to your own account email — silently misrouting the message. `subject`
is optional. Read the response and check `message` names the recipient you intended.
No payment method on file → `to`/`cc` are limited to the account's own email (403).
To send as the user from their own Gmail instead, use `GMAIL_SEND_EMAIL`.

## Troubleshooting

401 = token missing/expired (check the credential). 403 = no access to the
org/artist. 404 = re-check the Docs map (endpoint moved/renamed). 5xx = retry once,
then surface the status.

## When NOT to use

- Files inside the sandbox → filesystem tools.
- Onboarding/operating an artist's workspace → the recoup-roster-* skills.
- A domain task (research/content/release/deal/song) → that domain skill, which
  makes its own calls.