Skip to main content
Glama

Get a free API key (proof of work, no human approval)

get_api_key

Create a free Screwtape.ai API key (10 calls per UTC day) with no human approval. Call it only when no Screwtape key is configured and you can compute SHA-256 with a code tool, because the proof of work must be computed exactly, not guessed. Do NOT call it when a key already exists, to get more quota (it is limited to 5 keys per IP per hour and per UTC day), or without a valid pow_nonce. A missing nonce returns an error that describes the challenge. Inputs: pow_nonce (required string matching ^[A-Za-z0-9_-]{8,64}$; SHA-256 of the UTF-8 string screwtape-signup-v1:: must start with 12 zero bits, which is 3 hex zeros), email (optional), name (optional, at most 80 characters). Returns: api_key (shown once; store it securely and send it as Authorization: Bearer), key metadata and request_id. Only the key's SHA-256 hash is stored. Cost: free. Needs no key and no payment.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "pow_nonce": "<pow_nonce>"
    },
    "name": "get_api_key"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoOptional agent or client name, at most 80 characters.
emailNoOptional. Omit it to store no email.
pow_nonceYesRequired. SHA-256 of the UTF-8 string screwtape-signup-v1:YYYY-MM-DD:<nonce> must have 12 leading zero bits. Nonce matches ^[A-Za-z0-9_-]{8,64}$. YYYY-MM-DD is the UTC day.
data_sharingNoOptional, off by default. Only true turns on opt-in data sharing for the new key: redacted samples of its calls are kept 90 days. Turn it off anytime with PATCH /v1/keys/me/data-sharing. See https://screwtape.ai/privacy/#opt-in-data-sharing.

Output Schema

NameRequiredDescriptionDefault
keyYes
api_keyYes
request_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / data_sharing
      Added value: +{
      +  "description": "Optional, off by default. Only true turns on opt-in data sharing for the new key: redacted samples of its calls are kept 90 days. Turn it off anytime with PATCH /v1/keys/me/data-sharing. See https://screwtape.ai/privacy/#opt-in-data-sharing.",
      +  "type": "boolean"
      +}
  2. Changed3 schema fields changed
    • changedInput schema / properties / name / description
      Previous value: -"Optional agent or client name."New value: +"Optional agent or client name, at most 80 characters."
    • addedInput schema / properties / name / maxLength
      Added value: +80
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "api_key": {
      +      "type": "string"
      +    },
      +    "key": {
      +      "type": "object"
      +    },
      +    "request_id": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "api_key",
      +    "key",
      +    "request_id"
      +  ],
      +  "type": "object"
      +}
  3. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the generic profile (not read-only, not idempotent, not destructive); the description adds the operationally decisive facts: key is shown once, only its SHA-256 hash is stored, no auth or payment needed, rate limits per IP, and that a missing nonce returns a self-describing error. These are exactly the traits an agent cannot infer from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then when/when-not, then inputs, returns and cost — a sensible order with no filler sentences. There is minor redundancy ('free' stated twice, 'no human approval' echoed from the title) that keeps it short of perfect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a proof-of-work signup tool this covers everything an agent needs: the exact PoW predicate, the error path for a bad nonce, per-IP limits, auth scheme for the returned key, and storage semantics. Return values are also described despite an output schema already existing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents each field; the description nevertheless restates the PoW formula with the concrete 'current UTC YYYY-MM-DD' instantiation and stresses it must be computed exactly rather than guessed, which is real operational guidance. It does not mention data_sharing at all, leaving that parameter entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb and resource ('Create a free Screwtape.ai API key'), states the quota (10 calls per UTC day) and the no-approval property. This immediately separates it from paid siblings like buy_pack ('Cost: free. Needs no key and no payment').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit positive condition ('Call it only when no Screwtape key is configured and you can compute SHA-256 with a code tool') and explicit exclusions ('Do NOT call it when a key already exists, to get more quota... or without a valid pow_nonce'). The rate limits (5 keys per IP per hour and per UTC day) tell the agent when retrying is futile.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources