external-apis

A set of coding rules for clients that call external APIs, including response handling, typing, documentation, logging, and validation.

In plain words
What is it for?
Use it when implementing or reviewing API clients and their error-handling behavior.
Why use it?
It gives developers consistent patterns for handling missing data and API or network errors.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/technickai/claude_telemetry/external-apis
Clone the repo
git clone --depth 1 https://github.com/TechNickAI/claude_telemetry

Made for: Cursor.

Per session 4 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 343 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00004 $0.00343
Opus 5 $0.00002 $0.00171
Sonnet 5 $0.00001 $0.00069
Haiku 4.5 $0.00000 $0.00034

Measured 2d ago against content hash 5a2f243f47f3, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

external-apis scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

Copies of this mod

1 near-identical copy found in the catalogue:

.cursor/rules/external-apis.mdc · 59 lines

What it actually says

External API Client Guidelines

These guidelines ensure consistent, reliable, and maintainable API clients.

Core Principles

  • We return None on API errors (don't raise exceptions)
  • We use type hints consistently
  • We document methods with helpful docstrings (skip redundant Args/Returns)
  • We use appropriate logging levels
  • We let exceptions bubble up unless we're truly handling them

Method Pattern

def get_something(self, param: str) -> dict | None:
    """Fetch something from the API.

    Returns None if the API returns no data or encounters an error.
    """
    logger.info(f"Fetching something for {param}")

    response = self.request("/endpoint", params={"key": param})
    if not response:
        logger.warning(f"No data returned for {param}")
        return None

    return response["data"]

Error Handling

We let the base HTTP client handle HTTP/network errors. We only use try/except for specific scenarios with actual handling. We validate response structure before access.

Validation Pattern

response = self.request("/endpoint", params={"key": value})
if not response or "data" not in response:
    logger.warning(f"No data returned for {value}")
    return None

Response Processing

We validate response structure before access, convert to standard types (Decimal for financial data), clean and normalize data, and return None for errors (not empty dicts).

Testing

We mock all external calls in unit tests, use @pytest.mark.flaky for live API tests, and test both success and error cases.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 59 lines · 4 tokens per session scan A 5a2f243f47f3

Subscribe to this mod's changes

external-apis is a cursor rule published in the GitHub repository TechNickAI/claude_telemetry (30 stars, last pushed 10mo ago), licensed MIT. It adds 4 tokens to every session and 343 once invoked, about $0.0000 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.