Share Check docs

Share Check looks for secrets with a recognizable shape (API keys, tokens, private keys) in text you send it. You can call it over REST, or from an AI agent over MCP. Both use the same key, the same limits and the same credits.

Your key looks like ttk_ followed by a 10-character id, an underscore and 32 characters. It is shown once, when it is made. Keep it out of the text you share; Share Check reports its own keys too.

REST: POST /v1/check

POST https://vend.tasktoxica.com/v1/check
Authorization: Bearer ttk_...
Content-Type: application/json

{ "content": "the text you are about to share" }

The answer

{
  "receipt": {
    "id": "chk_01JABCDEFGHJKMNPQRSTVWXYZ",
    "created_at": "2026-10-20T15:04:05Z",
    "input_sha256": "<hex SHA-256 of the UTF-8 bytes you sent>",
    "input_bytes": 5123,
    "rules_version": "secret-scan@a566c7e+tt1",
    "result": "findings"
  },
  "summary": { "findings": 1, "high": 1, "medium": 0, "low": 0 },
  "findings": [
    {
      "rule": "aws-access-key-id",
      "type": "AWS access key ID",
      "severity": "high",
      "line": 1,
      "column": 14,
      "length": 20,
      "masked": "AK…WZ",
      "what_to_do": "Deactivate and delete this access key in AWS IAM and issue a new one."
    }
  ],
  "limitations": "Share Check looks for known secret patterns in the text you sent. ...",
  "credits": { "charged": 1, "free_remaining": 24, "balance": 0 }
}

MCP: connect your AI agent

The MCP server is at https://vend.tasktoxica.com/mcp, over Streamable HTTP. It speaks the 2026-07-28 revision, and the older initialize handshake for clients that still use it. Send your key as a bearer token. In a client that takes a JSON config:

{
  "mcpServers": {
    "share-check": {
      "url": "https://vend.tasktoxica.com/mcp",
      "headers": { "Authorization": "Bearer ttk_..." }
    }
  }
}

Tools

ToolArgumentsWhat it does
share_check{ "content": "..." }Exactly the REST check, with the same answer as structuredContent and a one-line summary that never quotes your text. One credit.
balance{}Free checks and credits left, the key's limits, and its checks today (UTC). Free.
buy_credits{ "pack": "10" | "40" | "150" }Returns a Stripe Checkout link for a pack. It never pays and never stores a card: a person must open the link and pay. Free.

Errors from a tool come back as a tool result with isError: true and the same code as REST, so your agent can read them and react.

Calls from a web page are refused unless they come from this site, so another site cannot use your key from a visitor's browser.

Errors

Every error has the shape { "error": { "code": "...", "message": "..." } } and is never charged.

StatusCodeWhen
400invalid_json, content_required, content_not_string, unknown_fieldThe request is malformed.
401key_missing, key_invalidNo key, or the key matches nothing.
402credits_exhaustedNo free checks or credits left.
403key_revoked, daily_limit_reached, total_limit_reachedThe key's own limits, set by you.
413too_largeThe body is over 32,768 bytes. The answer carries limit_bytes.
415unsupported_media_typeThe body is not sent as application/json.
429rate_limitedOver 60 checks a minute for the key, or 120 requests a minute from one IP address. Wait for Retry-After seconds.
503unavailableThe service is down. Nothing was checked or charged.

If you ever get an answer that is not JSON, treat the text as not scanned, and check your balance before you try again.

Limitations