Skip to main content
Glama
sifter-ai

sifter-mcp

Official

list_sifts

Retrieve a list of sifts with their names, instructions, and document or record counts. Supports pagination with limit and offset parameters to control output size.

Instructions

List sifts with their name, instructions, and document/record counts.

Args:
    limit: Maximum number of sifts to return (default 50, max 200)
    offset: Number of sifts to skip for pagination

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Implementation Reference

  • Primary MCP tool handler for list_sifts – decorated with @mcp.tool(), calls the async SDK client and returns paginated sift data.
    @mcp.tool()
    async def list_sifts(limit: int = 50, offset: int = 0) -> dict:
        """List sifts with their name, instructions, and document/record counts.
    
        Args:
            limit: Maximum number of sifts to return (default 50, max 200)
            offset: Number of sifts to skip for pagination
        """
        async with _get_client() as client:
            page = await client.list_sifts(limit=min(limit, 200), offset=offset)
        return {"items": [h._data for h in page.items], "total": page.total, "limit": page.limit, "offset": page.offset}
  • JSON schema for list_sifts used as a tool definition for LLM agent tool calling (liteLLM).
    {
        "type": "function",
        "function": {
            "name": "list_sifts",
            "description": "List all sifts available to the user with their name, status, and record counts.",
            "parameters": {"type": "object", "properties": {}, "required": []},
        },
  • Registration via @mcp.tool() decorator on FastMCP instance in the MCP server.
    @mcp.tool()
    async def list_sifts(limit: int = 50, offset: int = 0) -> dict:
        """List sifts with their name, instructions, and document/record counts.
    
        Args:
            limit: Maximum number of sifts to return (default 50, max 200)
            offset: Number of sifts to skip for pagination
        """
        async with _get_client() as client:
            page = await client.list_sifts(limit=min(limit, 200), offset=offset)
        return {"items": [h._data for h in page.items], "total": page.total, "limit": page.limit, "offset": page.offset}
  • Alternative server-side handler in AgentToolRunner._dispatch for list_sifts, used by the Q&A and widget agents.
    if name == "list_sifts":
        sifts, _ = await self.sift_svc.list_all(limit=50, org_id=self.org_id)
        return [
            {
                "id": s.id,
                "name": s.name,
                "description": s.description,
                "status": s.status,
                "processed_documents": s.processed_documents,
                "total_documents": s.total_documents,
            }
            for s in sifts
        ]
  • FastAPI REST endpoint for listing sifts, called by SDK client.list_sifts under the hood.
    @router.get("", response_model=dict)
    async def list_sifts(
        limit: int = 50,
        offset: int = 0,
        principal: Principal = Depends(get_current_principal),
        db=Depends(get_db),
    ):
        svc = SiftService(db)
        sifts, total = await svc.list_all(skip=offset, limit=limit, org_id=principal.org_id)
        return paginated([_sift_to_dict(s) for s in sifts], total, limit, offset)
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description mentions return fields and parameter behavior but does not explicitly state it is a safe read operation. Since no annotations are provided, the description carries the burden, but it could be more explicit about being non-destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences plus parameter details. No unnecessary words. Every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the main output fields and pagination parameters. Lacks mention of possible pagination metadata like total count, but adequate given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although input schema has no descriptions, the description explains both 'limit' (default 50, max 200) and 'offset' (pagination skip), adding valuable context beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List sifts with their name, instructions, and document/record counts', specifying the verb 'list' and the resource 'sifts'. It distinguishes from siblings like 'get_sift' (single) and 'create_sift', though not explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'get_sift' or 'find_records'. No context about prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sifter-ai/sifter'

If you have feedback or need assistance with the MCP directory API, please join our Discord server