api-context

api-context is a skill for Claude Code from cyanheads/usda-mcp-server. It costs 84 tokens per session (16,387 once invoked), scanned A, a copy of api-context, Apache-2.0.

A reference for the Context object passed to every tool and resource handler in @cyanheads/mcp-ts-core. The object carries request identity, logging, storage, input collection, cancellation, and related request data.

In plain words
What is it for?
Use it when writing handlers that need logs, tenant-scoped storage, additional user input, request identifiers, or cancellation.
Why use it?
It clarifies which request information and services are available inside a handler. This prevents handlers from using the wrong logging or storage access pattern.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: mentions CLAUDE.md; mentions AGENTS.md.

Part of the usda-mcp-server plugin — 35 skills, 1 MCP server shipped together

Good fit Use it when writing handlers that need logs, tenant-scoped storage, additional user input, request identifiers, or cancellation.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/cyanheads/usda-mcp-server/api-context
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.

Any agent
npx skills add cyanheads/usda-mcp-server --skill api-context
Clone the repo
git clone --depth 1 https://github.com/cyanheads/usda-mcp-server

Made for: Claude Code.

Or install usda-mcp-server, the plugin that ships this one along with the rest of its 35 skills, 1 MCP server.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for api-context

README.md
[![agentmods](https://agentmods.dev/badge/skills/cyanheads/usda-mcp-server/api-context/github.svg)](https://agentmods.dev/skills/cyanheads/usda-mcp-server/api-context)
Your own site
<a href="https://agentmods.dev/skills/cyanheads/usda-mcp-server/api-context"><img src="https://agentmods.dev/badge/skills/cyanheads/usda-mcp-server/api-context/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for api-context

Your own site · 80×15
<a href="https://agentmods.dev/skills/cyanheads/usda-mcp-server/api-context"><img src="https://agentmods.dev/badge/skills/cyanheads/usda-mcp-server/api-context.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 84 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 16,387 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin 100% copy Near-identical to another mod 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.1 $0.00084 $0.16387
Opus 5.5 $0.00034 $0.06555
Sonnet 5.5 $0.00017 $0.03277
Haiku 4.5 $0.00008 $0.01639

Measured 12d ago against content hash 42a55772d0b2, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

api-context scanned grade A with 1 finding 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 12d 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.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

const response = await fetch(url, { signal: ctx.signal });
Origin

This is a copy

100% identical to api-context — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

framework-skills/api-context/SKILL.md · 958 lines

How it starts

The opening of the file, as written. The whole thing — 958 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Overview

Every tool and resource handler receives a single Context (ctx) argument. It provides request identity, structured logging, tenant-scoped storage, multi-round-trip input collection, and cancellation — all auto-correlated to the current request.

The framework auto-instruments every handler call (OTel span, duration, payload metrics). Use ctx.log for domain-specific logging and ctx.state for storage inside handlers. Use the global logger and StorageService directly only in lifecycle/background code (setup(), services).


Context interface

import type { Context } from '@cyanheads/mcp-ts-core';

interface Context extends RequestContext {
  // Identity & tracing (inherited from RequestContext — see § RequestContext)
  readonly requestId: string;       // Per request; returned on its errors as data.requestId
  readonly timestamp: string;       // ISO 8601 request start time
  readonly tenantId?: string;       // JWT 'tid' claim; 'default' for stdio and HTTP+MCP_AUTH_MODE=none
  readonly sessionId?: string;      // Mcp-Session-Id (HTTP stateful/auto); undefined elsewhere unless opted in
  readonly traceId?: string;        // Trace containing this handler execution
  readonly spanId?: string;         // The handler's own execution span
  readonly auth?: AuthContext;      // Parsed auth claims (clientId, scopes, sub)
  readonly operation?: string;      // Label for the operation this context belongs to
  readonly extra?: Readonly<Record<string, unknown>>;  // Correlation bag — the one open field

  // Structured logging — auto-includes requestId, traceId, tenantId.
  // Dual-sink: Pino on the server, plus notifications/message to the client.
  readonly log: ContextLogger;

  // Tenant-scoped key-value storage
  readonly state: ContextState;

  // Multi-round-trip input — always present, both eras (see § ctx.requestInput)
  readonly requestInput: RequestInputFn;   // (spec, options?) => never — suspends and asks the caller
  readonly inputs: ContextInputs;          // the request's responses, limited to what the client declared
  // What the client declared: the SDK-parsed `initialize` value (2025 era) or the
  // request's envelope as sent (2026-07-28); undefined when no view exists
  // (see § ctx.clientCapabilities)
  readonly clientCapabilities: ClientCapabilities | undefined;

  // List-changed / resource-updated notifications — wired in every handler ctx;
  // delivery is request-scoped (see § list-changed notifications)
  readonly notifyResourceListChanged?: () => void;
  readonly notifyResourceUpdated?: (uri: string) => void;
  readonly notifyPromptListChanged?: () => void;
  readonly notifyToolListChanged?: () => void;

  // Cancellation
  readonly signal: AbortSignal;

  // Raw URI — present only for resource handlers
  readonly uri?: URL;

  // Agent-facing success-path enrichment — accumulates notices, query echo, totals
  // onto the request; reaches structuredContent + content[]. Always present (no-op
  // when no `enrichment` block), strictly typed on HandlerContext<R, E> against the
  // declared fields. Kind-tagged helpers: enrich.notice / .total / .echo.
  readonly enrich: Enrich;

  // Non-text content blocks (image/audio bytes) for the calling model — prepended
  // to content[] after format() runs, never placed in structuredContent. Always
  // present (no-op when never called). Helpers: content.image / .audio; content(block)
  // pushes a raw ContentBlock.
  readonly content: ContentCollect;

  // Contract resolver — always present (returns {} when no contract is attached or the
  // reason is unknown), strictly typed on HandlerContext<R> against declared reasons.
  // The framework already sends a declared hint with any failure carrying the reason.
  recoveryFor(reason: string): { recovery: { hint: string } } | {};
}

Read the full file on GitHub · 958 lines

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. 12d ago Changed · +3 lines 42a55772d0b2
  2. 14d ago Changed · +5 lines bb7fdf8302b7
  3. 1mo ago Changed · +129 lines · +5 tokens per session 08661b80ea4f
  4. 1mo ago Changed · +2 lines 6d67a08d2b4c
  5. 1mo ago Changed · +4 lines 55430c41cb75
  6. 2mo ago First seen · 815 lines · 79 tokens per session scan A c78158354f33

Subscribe to this mod's changes

api-context is a skill published in the GitHub repository cyanheads/usda-mcp-server (1 stars, last pushed 13d ago), licensed Apache-2.0. It adds 84 tokens to every session and 16,387 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). It is 100% identical to api-context, differing in 0 lines, and is treated as a copy.

Related

api-context compared with skills from other repositories

api-context next to 6 skills from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
api-contextcyanheads/usda-mcp-serverSkill113d agoApache-2.0A84Claude Code
openstreetmap-guidecyanheads/openstreetmap-mcp-serverSkill93d agoApache-2.0A50Claude Code
searchkalinbogatzevski/captain-memoSkill513d agoApache-2.0A49Claude Code
doctorkalinbogatzevski/captain-memoSkill513d agoApache-2.0A52Claude Code
socrata-guidecyanheads/socrata-mcp-serverSkill45d agoApache-2.0A51Claude Code
wikidata-guidecyanheads/wikidata-mcp-serverSkill311d agoApache-2.0A48Claude Code
treasury-fiscaldata-guidecyanheads/treasury-fiscaldata-mcp-serverSkill311d agoApache-2.0A38Claude Code