Tool Parameter Abuse
- Category
- Tool Misuse
- Confidence
- 80% confidence
- Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
- Content
md 4. **Every list endpoint is paginated; loop or lose data.** `page_size` maxes at 100. Loop while `has_more`, passing `next_cursor`. Budget it up front: a 4,000-row data source is 40 requests, ≈14s at 3 requests/second — a number you state before running, not discover after (`pagination.md`). 5. **Pace by design, retry only the exceptions.** The limit is ~3 requests per second per integration, averaged, with short bursts tolerated; a 429 carries `Retry-After` in seconds. Time = total requests ÷ `rate_limit_rps`. Writes are one request per page: 5,000 pages ≈ 28 minutes at 3/s *before* retries. The limit is integration-wide, so your cron job and your migration share it (`bulk.md`). 6. **Writes are per-object and never transactional.** There is no batch page endpoint; a job that dies halfway leaves half the pages. Every bulk write checkpoints its cursor and appends its id mapping as it goes, so the rerun resumes instead of duplicating. Idempotency = store the external id in a Notion property and filter on it before creating (`bulk.md`). 7. **Destructive calls state their blast radius first.** `archived: true` (`in_trash` in newer versions) sends a page to the trash, recoverable by the user; `DELETE /v1/blocks/{id}` removes content; removing a `select` option strips it from every page that had it, silently and irreversibly. Emit the affected count before the call, and honour `write_mode`. 8. **The page object is a summary, not the page.** Content lives in blocks, fetched separately and recursively via `has_children`. Relation, rollup and people properties are capped at 25 entries inside a page object — the rest needs `GET /v1/pages/{page_id}/properties/{property_id}`, itself paginated. Code that treats a page retrieve as "the whole page" drops exactly the biggest records (`properties.md`, `blocks.md`). ## Failure Signatures
