Skip to main content
Glama

issue_api_key

Read-onlyIdempotent

Get the link to the ThinAir DATA console where you create and manage your API keys (ta_data_*), plus your current plan. This tool does NOT create, rotate or return a key: you create the key yourself in the console, where it is shown to you once, and every key you already have keeps working unchanged. Use it when an integration needs a key and you want to point the user at the right place. NOTE: keys created in this console work ONLY against ThinAir Data - they do NOT authenticate against ThinAir Geo, which has its own console and an identically-named issue_api_key tool.

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
planNoThe account's current plan. Existing keys keep working on it, unchanged.
errorNo
statusYes
console_urlNoThe ThinAir Data console page where you create and manage API keys. Open it, sign in, and create a key there; it is shown to you once, in the console. This tool never creates, rotates or returns a key.
instructionsNoPlain-language next step for the user, including which product this is: a key created in this console works ONLY against ThinAir Data, not ThinAir Geo.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / additionalProperties
      Previous value: -trueNew value: +{}
  2. Changed13 schema fields changed
    • removedOutput schema / properties / api_key
      Removed value: -{
      -  "description": "One-time API key secret. Returned only on successful creation, in both structuredContent.api_key and content[0].text. Save this key now. It is shown once. ThinAir authenticates using a hash of the key. Matches AWS IAM / Stripe / GitHub PAT one-time-reveal semantics.",
      -  "type": "string"
      -}
    • addedOutput schema / properties / console_url
      Added value: +{
      +  "description": "The ThinAir Data console page where you create and manage API keys. Open it, sign in, and create a key there; it is shown to you once, in the console. This tool never creates, rotates or returns a key.",
      +  "type": "string"
      +}
    • removedOutput schema / properties / credential_returned_once
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / instructions
      Added value: +{
      +  "description": "Plain-language next step for the user, including which product this is: a key created in this console works ONLY against ThinAir Data, not ThinAir Geo.",
      +  "type": "string"
      +}
    • removedOutput schema / properties / key_id
      Removed value: -{
      -  "description": "Non-secret fingerprint of the issued key. Safe to log and surface in UI.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / note
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / plan / description
      Added value: +"The account's current plan. Existing keys keep working on it, unchanged."
    • removedOutput schema / properties / previous_keys_retire_at
      Removed value: -{
      -  "description": "ISO 8601 instant when the previous keys stop working (one hour after this mint). Present only when previous_keys_retiring > 0. Update anything still using them before this time.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / previous_keys_retiring
      Removed value: -{
      -  "description": "How many previously-live keys this mint scheduled to retire. issue_api_key rotates: after the grace window the returned key is the only live key on the tenant. 0 means there was nothing else.",
      -  "minimum": 0,
      -  "type": "integer"
      -}
    • removedOutput schema / properties / retry_after_s
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / tenantId
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / usage
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / user
      Removed value: -{
      -  "type": "string"
      -}
  3. Changed1 schema field changed
    • changedOutput schema / properties / api_key / description
      Previous value: -"One-time API key secret. Returned only on successful creation, in both structuredContent.api_key and content[0].text — save it immediately. The server stores only sha-256 of the secret; once this response is lost, the key is unrecoverable and must be rotated. Matches AWS IAM / Stripe / GitHub PAT one-time-reveal semantics."New value: +"One-time API key secret. Returned only on successful creation, in both structuredContent.api_key and content[0].text. Save this key now. It is shown once. ThinAir authenticates using a hash of the key. Matches AWS IAM / Stripe / GitHub PAT one-time-reveal semantics."
  4. Changed3 schema fields changed
    • addedOutput schema / properties / previous_keys_retire_at
      Added value: +{
      +  "description": "ISO 8601 instant when the previous keys stop working (one hour after this mint). Present only when previous_keys_retiring > 0. Update anything still using them before this time.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / previous_keys_retiring
      Added value: +{
      +  "description": "How many previously-live keys this mint scheduled to retire. issue_api_key rotates: after the grace window the returned key is the only live key on the tenant. 0 means there was nothing else.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • removedOutput schema / properties / revoked_previous
      Removed value: -{
      -  "description": "How many previously-live keys this mint revoked. issue_api_key rotates: the returned key is the only live key on the tenant. 0 means there was nothing else to revoke.",
      -  "minimum": 0,
      -  "type": "integer"
      -}
  5. Changed1 schema field changed
    • addedOutput schema / properties / revoked_previous
      Added value: +{
      +  "description": "How many previously-live keys this mint revoked. issue_api_key rotates: the returned key is the only live key on the tenant. 0 means there was nothing else to revoke.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
  6. Changed1 schema field changed
    • changedOutput schema / properties / api_key / description
      Previous value: -"One-time API key secret. Returned only on successful creation. Treat as a credential — never log, echo, or render in text channels."New value: +"One-time API key secret. Returned only on successful creation, in both structuredContent.api_key and content[0].text — save it immediately. The server stores only sha-256 of the secret; once this response is lost, the key is unrecoverable and must be rotated. Matches AWS IAM / Stripe / GitHub PAT one-time-reveal semantics."
  7. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "api_key": {
      +      "description": "One-time API key secret. Returned only on successful creation. Treat as a credential — never log, echo, or render in text channels.",
      +      "type": "string"
      +    },
      +    "credential_returned_once": {
      +      "type": "boolean"
      +    },
      +    "error": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "code": {
      +          "type": "string"
      +        },
      +        "message": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "code",
      +        "message"
      +      ],
      +      "type": "object"
      +    },
      +    "key_id": {
      +      "description": "Non-secret fingerprint of the issued key. Safe to log and surface in UI.",
      +      "type": "string"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "plan": {
      +      "type": "string"
      +    },
      +    "retry_after_s": {
      +      "type": "number"
      +    },
      +    "status": {
      +      "enum": [
      +        "success",
      +        "error"
      +      ],
      +      "type": "string"
      +    },
      +    "tenantId": {
      +      "type": "string"
      +    },
      +    "usage": {
      +      "type": "string"
      +    },
      +    "user": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status"
      +  ],
      +  "type": "object"
      +}
  8. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds real context beyond them: the key is shown once in the console, existing keys keep working unchanged, the tool only returns a link and plan, and DATA keys do not authenticate against ThinAir Geo. That cross-product scoping caveat is exactly the kind of behavioral detail structured fields cannot express.

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 the action and result, then the disclaimers. Slightly repetitive in restating the no-key-creation point twice ('does NOT create, rotate or return a key' and 'you create the key yourself'), but every sentence carries decision-relevant information and the critical Geo caveat is clearly signposted.

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 zero-parameter, read-only helper with an output schema, the agent needs to know what it returns and when to reach for it — both are covered, along with the cross-product limitation that would otherwise cause a wrong-tool selection.

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?

There are zero parameters, so there is nothing to disambiguate and the baseline is 4. The description still explains what the call yields (console link plus current plan), though it does not go further into format since an output schema is present.

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?

States a specific verb and resource: return the DATA console link plus current plan. It also preempts the obvious misreading of the name by declaring that the tool does NOT create, rotate or return a key, which lets an agent distinguish it from any real key-minting tool without opening the schema.

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?

Explicit trigger is given ('use it when an integration needs a key and you want to point the user at the right place') along with the negative case (it does not create, rotate or return keys). The closing NOTE further routes the agent correctly by warning that an identically-named tool exists for ThinAir Geo with a different console.

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