Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    aj-geddes

    api-pagination

    aj-geddes/api-pagination
    Coding
    59

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Implement efficient pagination strategies for large datasets using offset/limit, cursor-based, and keyset pagination...

    SKILL.md

    API Pagination

    Table of Contents

    • Overview
    • When to Use
    • Quick Start
    • Reference Guides
    • Best Practices

    Overview

    Implement scalable pagination strategies for handling large datasets with efficient querying, navigation, and performance optimization.

    When to Use

    • Returning large collections of resources
    • Implementing search results pagination
    • Building infinite scroll interfaces
    • Optimizing large dataset queries
    • Managing memory in client applications
    • Improving API response times

    Quick Start

    Minimal working example:

    // Node.js offset/limit implementation
    app.get('/api/users', async (req, res) => {
      const page = parseInt(req.query.page) || 1;
      const limit = Math.min(parseInt(req.query.limit) || 20, 100); // Max 100
      const offset = (page - 1) * limit;
    
      try {
        const [users, total] = await Promise.all([
          User.find()
            .skip(offset)
            .limit(limit)
            .select('id email firstName lastName createdAt'),
          User.countDocuments()
        ]);
    
        const totalPages = Math.ceil(total / limit);
    
        res.json({
          data: users,
          pagination: {
            page,
            limit,
            total,
            totalPages,
            hasNext: page < totalPages,
    // ... (see reference guides for full implementation)
    

    Reference Guides

    Detailed implementations in the references/ directory:

    Guide Contents
    Offset/Limit Pagination Offset/Limit Pagination
    Cursor-Based Pagination Cursor-Based Pagination
    Keyset Pagination Keyset Pagination
    Search Pagination Search Pagination
    Pagination Response Formats Pagination Response Formats
    Python Pagination (SQLAlchemy) Python Pagination (SQLAlchemy)

    Best Practices

    ✅ DO

    • Use cursor pagination for large datasets
    • Set reasonable maximum limits (e.g., 100)
    • Include total count when feasible
    • Provide navigation links
    • Document pagination strategy
    • Use indexed fields for sorting
    • Cache pagination results when appropriate
    • Handle edge cases (empty results)
    • Implement consistent pagination formats
    • Use keyset for extremely large datasets

    ❌ DON'T

    • Use offset with billions of rows
    • Allow unlimited page sizes
    • Count rows for every request
    • Paginate without sorting
    • Change sort order mid-pagination
    • Use deep pagination without cursor
    • Skip pagination for large datasets
    • Expose database pagination directly
    • Mix pagination strategies
    • Ignore performance implications
    Recommended Servers
    Vercel Grep
    Vercel Grep
    Parallel Tasks
    Parallel Tasks
    Hugging Face
    Hugging Face
    Repository
    aj-geddes/useful-ai-prompts
    Files