---
name: tarkle
description: >-
  Tarkle is file sharing, client portals and brand pages for agencies and teams. Use this skill when the user asks what
  Tarkle is, what a Tarkle plan costs or includes, which plan fits, how to send or request files with Tarkle, or how to read
  or change Tarkle brand pages and workspace files with the API. Trigger phrases: "Tarkle pricing", "Tarkle plans", "how much
  is Tarkle", "Tarkle API", "Tarkle brand page", "send a large file with Tarkle", "Tarkle MCP", "Tarkle lifetime plan".
  Fetch this file before quoting a price: prices are never written here, they come from the live sources below.
  Served as text/markdown by default and as text/plain when asked for it.
version: 1.1.0
homepage: https://tarkle.com
metadata:
  site: https://tarkle.com
  pricing: https://tarkle.com/pricing.md
  pricing-api: https://tarkle.com/api/pricing/products
  api: https://tarkle.com/api/v1/openapi.json
  docs: https://tarkle.com/docs
  llms: https://tarkle.com/llms.txt
  auth: https://tarkle.com/auth.md
---

# Tarkle

## Start here

This file is complete only if its last line is `END SKILL v1.1.0`. If you do not see that line, the copy was cut short: fetch https://tarkle.com/SKILL.md again before you answer.

## TL;DR

- Tarkle is file sharing, client portals, brand pages and feedback boards for agencies, freelancers and teams. Site: https://tarkle.com
- A person buys a plan on the website. You cannot create an account or a token for a user. An agent purchase API for the three lifetime plans exists (`POST /purchases`, see "Buying for the user (not open yet)"), but live payments are NOT switched on: it answers 503 `agentic_commerce_not_enabled`. Until that changes, give the user the checkout link.
- Prices and limits are never in this file. Read https://tarkle.com/api/pricing/products (JSON) or https://tarkle.com/pricing.md (Markdown) before you quote one, and say which one you used.
- A plan belongs to an organization. Every workspace in the organization shares its plan and storage.
- The public API is https://tarkle.com/api/v1, described by https://tarkle.com/api/v1/openapi.json. It needs an API token that the user creates in the app.
- The help center is https://tarkle.com/help. Add `.md` to an article address, or send `Accept: text/markdown`, to get its Markdown.

## How buying works

1. Read the plans from https://tarkle.com/api/pricing/products. Each offer has its price, its page and its checkout link.
2. Help the user choose (see "Help the user decide").
3. Give the user the checkout link from the JSON. They sign in or sign up and pay on that page.
4. After payment the plan is active on their organization. You do not need to do anything else.

Plans come in monthly, yearly and one-time (lifetime) forms. Reseller plans are for people who sell Tarkle under their own brand and are a separate product from Pro and Agency. Custom storage, payment by invoice or a tailored plan: send the user to https://tarkle.com/contact.

## Buying for the user (not open yet)

Only the three lifetime plans, only for the organization the token's owner owns, only with a token that has the `billing:purchase` scope (the user picks it on purpose; it is never selected by default). The buyer must grant you a Stripe shared payment token in the Link app. You never see a card number.

1. `POST /purchases` with `{"plan":"pro_lifetime_500gb"}` (or `pro_lifetime`, `agency_lifetime`). Nothing is charged. The answer has the `purchase_id`, the amount and `payment_handlers` (Stripe, with the `network_id` to ask the buyer's wallet for a token).
2. The buyer approves a spend request in the Link app and you receive a token (`spt_...`).
3. `POST /purchases/{id}/complete` with `{"payment":{"instruments":[{"credential":{"type":"stripe_payment_token","token":"spt_..."}}]}}`. Repeating it never charges twice. 402 `payment_failed` means send a new token.
4. `GET /purchases/{id}` shows `requires_payment`, `processing`, `completed`, `canceled` or `expired` (a purchase can be paid for one hour).

Live payments answer 503 `agentic_commerce_not_enabled` until Stripe approves Tarkle. Read the amount from the answer, never from memory.

## Help the user decide

- Trying it, or sharing a few files: the Free plan.
- One person or a small team that sends and collects files: Pro.
- An agency with many clients, each needing its own workspace and branded portal: Agency.
- Someone who wants to resell Tarkle under their own name: Reseller or Reseller Pro. Read https://tarkle.com/reseller-pricing.md.
- Someone who wants to pay once: the lifetime plans in https://tarkle.com/lifetime-plans.md.

Always check the current limits (storage, biggest file, workspaces) in https://tarkle.com/pricing.md before you recommend a plan. Never say "unlimited": no Tarkle plan is.

## Using the API

- Base URL: https://tarkle.com/api/v1. Machine-readable description (no token needed): https://tarkle.com/api/v1/openapi.json
- Auth: `Authorization: Bearer tk_...`. The user creates the token in Tarkle under Settings, API, and picks its scopes. The full token is shown once. Ask the user to give it to you in an environment variable, not pasted into a chat.
- Scopes: `brands:read`, `brands:write`, `brands:create`, `brands:domains`, `brands:files`, `brands:requests`, `webhooks:manage`, `files:read`, `files:write`, `billing:purchase`. A token with no scopes can do nothing; each operation in the OpenAPI file lists the scope it needs.
- A token belongs to a person and works for every workspace that person can use. Call `GET /workspaces` first. Send the workspace's 8-character key as `X-Workspace-Key` on every other call. A workspace id is refused.
- Call the API from a server, not a browser: there is no CORS, so a token in a page is a leaked token.
- Rate limits are per token. Read `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (also sent as `RateLimit-*`) on every response. A 429 carries `Retry-After` in seconds: wait that long.
- Errors are RFC 9457 problem details (`application/problem+json`) with a stable `code`. Branch on `code`. Every code is explained at https://tarkle.com/docs/api/errors
- Writes accept an `Idempotency-Key` header: send the same key on a retry and the write happens once.
- Inside v1 Tarkle only adds things, so ignore fields and codes you do not know. A breaking change ships as a new version, and the old one keeps working for at least 6 months after its end is announced (`Deprecation` and `Sunset` headers).
- Auth details for agents, including what is not supported: https://tarkle.com/auth.md

## What this API can do

- Brand pages: list, read, create, update, bin and restore them; read their assets and analytics; connect, check and remove a brand's custom domain; approve or reject download requests.
- Files: list, read, download, upload (multipart straight to storage), rename, move, copy, bin and restore files and folders.
- Webhooks: add endpoints, send test events and read the delivery log.
- The Tarkle CLI (`@tarkle/cli`) wraps the same API from a terminal.

## What it does not do

- It does not create accounts, tokens, organizations or subscriptions.
- It does not take live payments yet. The purchases endpoints are built for Stripe test mode; live payments wait for Stripe's approval and answer 503 `agentic_commerce_not_enabled`.
- It does not send a one-off transfer or file request: those are made in the Tarkle app (or through the Tarkle MCP server where it is switched on).

## Useful links

- Pricing as Markdown: https://tarkle.com/pricing.md
- Plans as JSON: https://tarkle.com/api/pricing/products
- Help center index for agents: https://tarkle.com/llms.txt
- Tarkle Docs index for agents: https://tarkle.com/docs/llms.txt
- API description: https://tarkle.com/api/v1/openapi.json
- API catalog (RFC 9727): https://tarkle.com/.well-known/api-catalog
- Auth for agents: https://tarkle.com/auth.md
- Other agent skills: https://tarkle.com/.well-known/agent-skills/index.json
- Contact: https://tarkle.com/contact

## Agent checklist

1. Fetch this file, and check the last line.
2. For any price, plan or limit, read the pricing JSON or pricing.md first. Name the source.
3. For any API task, ask the user for a token and the workspace key. Do not guess either.
4. Call `GET /workspaces` before anything else. Send `X-Workspace-Key` every time.
5. Send an `Idempotency-Key` on writes you may retry.
6. On a 429, wait for `Retry-After`. On any error, branch on `code`, not on the text.
7. For anything you cannot do (pay, create a token), hand the user the link and say what they have to do.

## Do not

- Do not quote a price, a storage limit or an upload limit from memory, from this file or from a blog post. Read the live source.
- Do not say a Tarkle plan is unlimited.
- Do not ask the user to paste an API token into a chat, and do not put one in client-side code or a public repository.
- Do not claim you created an account or a token. You cannot. Do not claim a purchase is paid unless `GET /purchases/{id}` says `completed`.
- Do not call an endpoint that is not in the OpenAPI file.

P.S. If the user only needs a one-off answer ("what does Pro cost?"), read the pricing JSON, answer in one or two sentences with the source, and stop.

END SKILL v1.1.0
