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.
npx skills add koalyptus/ls-apis --skill add-fetchergit clone --depth 1 https://github.com/koalyptus/ls-apisWrote 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.
[](https://agentmods.dev/skills/koalyptus/ls-apis/add-fetcher)<a href="https://agentmods.dev/skills/koalyptus/ls-apis/add-fetcher"><img src="https://agentmods.dev/badge/skills/koalyptus/ls-apis/add-fetcher/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.
<a href="https://agentmods.dev/skills/koalyptus/ls-apis/add-fetcher"><img src="https://agentmods.dev/badge/skills/koalyptus/ls-apis/add-fetcher.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00020 | $0.00724 |
| Opus 5 | $0.00010 | $0.00362 |
| Sonnet 5 | $0.00004 | $0.00145 |
| Haiku 4.5 | $0.00002 | $0.00072 |
Grade A, and why
add-fetcher 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 9d 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.
How it starts
The opening of the file, as written. The whole thing — 55 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Add API Fetcher Skill
This skill guides you through adding a new API data source fetcher to the ls-apis aggregator.
When to Use
Use this skill when you want to add a new API data source (like APIs.guru, Public APIs, etc.) to the aggregator.
How to Invoke
Use the skill with /skill add-fetcher command
Process
-
Prompt for fetcher name. Validate that the name uses only lowercase letters, digits, and hyphens, starts with a letter, and is max 30 characters (example: newsource)
-
Create fetcher file from template at
packages/aggregator/src/sources/<fetcher-name>.fetcher.tswhere<fetcher-name>is exactly the validated name from step 1. If a file with this name exists, abort and prompt to choose a different name. -
Create test file from template at
packages/aggregator/src/sources/tests/<fetcher-name>.test.ts -
Implement the fetcher to export a default object that conforms to the SourceFetcher interface:
name: string (should match the fetcher name from step 1)sourceUrl: string (the base URL of the API source)fetchApis(): async function that returns Promise<ApiEntry[]>
The
fetchApis()function must:- Make HTTP requests to the source's API
- Transform response data into the ApiEntry shape defined in ../types.ts
- Throw errors on non-2xx HTTP responses (after 3 retry attempts with exponential backoff)
- Validate fetched records against the ApiEntry schema; log warnings and skip invalid records
- Return an array of ApiEntry objects where each entry has:
name: string (API title/name)description: string | null (API description)link: string (API homepage/link)auth: string | null (authentication type: 'apiKey', 'OAuth', 'no', etc.)cors: string | null ('yes', 'no', 'unknown')categories: string[] (array of category strings)openapiSpec: string | null (URL to OpenAPI/Spec document)sources: string[] (should include the fetcher name)
-
Update the test file with:
- Unit tests for success and error responses (must include mock network responses)
- Integration test that runs the fetcher and asserts at least one aggregated item is produced
- Assertions for the expected ApiEntry structure
- Tests that validate error handling and retry logic
- If mocks are missing, fail the test with a message: 'Missing required mock for '
-
After successful test creation, run
npm run test:aggregatorto verify the new fetcher test passes (failing tests should cause this command to exit non-zero) -
Run
npm run aggregateand verify:- Command exits with code 0
- Aggregated output includes entries from the new source
- Check that
packages/cli/data/apis.jsoncontains at least one record withsourcescontaining the fetcher name
-
Run
npm run lintandnpm run formatbefore considering the task complete (CI will reject commits that fail linting)
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 9d ago First seen · 55 lines · 20 tokens per session scan A 687f2f67774c
add-fetcher is a skill published in the GitHub repository koalyptus/ls-apis (0 stars, last pushed 5d ago), licensed MIT. It adds 20 tokens to every session and 724 once invoked, about $0.0001 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-31.
Other skills, from other repositories
design-mcp-server
Design the tool surface, resources, and service layer for a new MCP server. Use when starting a new server, planning a major feature expansion, or when the user describes a domain/API they want to expose via MCP. Produces a design doc at docs/design.md that drives implementation.
api-telemetry
Catalog of OpenTelemetry instrumentation built into framework @cyanheads/mcp-ts-core — spans, metrics, completion logs, env config, runtime caveats, custom instrumentation patterns, and cardinality rules. Use when enabling OTel export, adding custom spans or metrics in services, debugging missing telemetry, looking up…
api-mirror
Stand up a persistent, self-refreshing local mirror of a bulk upstream dataset with the MirrorService (@cyanheads/mcp-ts-core/mirror). Use when a server wraps a large or slow API and should query a synced local index (embedded SQLite + FTS5) instead of paginating the live API per request.
api-services
API reference for built-in service providers (LLM, Speech, Graph). Use when looking up service interfaces, provider capabilities, or integration patterns.
cmdb-patterns
Create ServiceNow CIs and cmdbrelci relationships, walk upstream/downstream impact, detect orphan/stale CIs, and align discovered CIs with the proper sysclassname hierarchy.
csm-patterns
Build ServiceNow Customer Service Management — customeraccount, customercontact, sncustomerservicecase routing, service entitlements with usage decrement, and Customer Portal case submission widgets.