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 agentmods add rules/evilfreelancer/zaezd/data-sourcesgit clone --depth 1 https://github.com/EvilFreelancer/zaezdWhat 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 | $0.00000 | $0.01429 |
| Opus 5 | $0.00000 | $0.00714 |
| Sonnet 5 | $0.00000 | $0.00286 |
| Haiku 4.5 | $0.00000 | $0.00143 |
Grade A, and why
data-sources 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 yesterday.
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 — 107 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Data sources: clients, normalization, degradation
src/sources/ speaks protocol and normalizes; src/enrich/ adds optional context. Raw
third-party JSON stops at this boundary: above it only domain types travel. Full reference
in specs/03-istochniki.md and ideas/01-tutu-mcp-obzor.md.
Traps that were measured, not guessed
- Hotel
geo_idand transportgeo_idare different namespaces. A hotel id may only come from a previoussearch_hotelsresponse (meta.geo_id/meta.resolved_geo). Passing a transport id yields an emptyhotels[]next to perfectly live transport. - Hotel price is the whole stay (
price_basis: "stay_total"). Never per night. search_multitransportfails softly per mode. An empty array for one mode while the others are populated is a partial failure. Log it; never report "there are no flights".- Multitransport counts adults only. Children require the per-mode searches, which the MVP does not do. Say so in the limitations, do not silently drop passengers.
- Ground transport takes a city, not a station, even though the response names the station.
checkout_ref,search_id, availability and prices expire. They are never cached and never stored in a snapshot; checkout links are rebuilt live at click time.- confcal requires a session.
mcp-session-idcomes frominitializeand is required afterwards; it dies with the process. Re-initialize once automatically on a session error and retry the call. Keep concurrency at one until parallel calls through one session are proven safe. Never mix confcal headers into the Tutu client, which has no session at all. - confcal has no coordinates.
venueis free text ("РУДН, Москва", "YADRO",null). Geocoding is mandatory and will fail often; falling back to the city centre is a normal mode of operation, not an exception. starts_atmay be null. Then only the date is known and feasibility relaxes.- confcal has no event end time at all. The field set is
id,title,url,start_date,end_date,starts_at,city,city_slug,venue,format,is_free,price,topics,tags,program_url,description. The check-out day is therefore alwaysend_dateplus one. - OSRM must run the foot profile. The public
router.project-osrm.orgserves the car profile only; measured on one pair of points in Kazan it answered 269 s whererouting.openstreetmap.de/routed-footanswered 847 s on the same pair. Labelling a car route "N мин пешком" is a lie. Use the foot profile, and when it is unavailable show no walking time at all. - Tutu responses arrive as a JSON string inside a text block, with no
outputSchema. Parse in one place, innormalize.ts.
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.
- yesterday First seen · 107 lines · 0 tokens per session scan A a0da04d44ae0
data-sources is a cursor rule published in the GitHub repository EvilFreelancer/zaezd (1 stars, last pushed 13d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,429 tokens. 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 cursor rules, from other repositories
swift-development
Swift development: SwiftUI, Combine, async/await, iOS patterns, and Apple platform conventions.
cursorrules
When the user asks about social media, use social-media-ai-mcp tools: schedulepost, generatehashtags, analyzeengagement, plancontentcalendar, getaudienceinsights.
cursorrules
This is an MCP (Model Context Protocol) server that provides Notion integration tools and AI agent workflows. Built with TypeScript, using the MCP SDK for server implementation.
lighter-safety
Safety contract for the Lighter MCP server. Apply whenever a lighter tool is invoked.
commits
Conventional Commits standards for clear, semantic commit messages.
nix-security
Nix Security and Sandboxing.