← WebMCP Directory

Tool tree

loops-webmcp.vercel.app

Productivity & BusinessTools verified
Website
Loops
Explore capabilities
    list_loopsAnswer

    List open loops in compact form, plus folder counts. Optional status: owed, waiting, draft, done, or today (overdue + due today + drafts awaiting approval). Omit status for all open loops.

    View tool JSON
    {
      "name": "list_loops",
      "kind": "answer",
      "impl": "imperative",
      "description": "List open loops in compact form, plus folder counts. Optional status: owed, waiting, draft, done, or today (overdue + due today + drafts awaiting approval). Omit status for all open loops.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "owed",
              "waiting",
              "draft",
              "done",
              "today"
            ],
            "description": "Folder to list. today = overdue + due today + drafts."
          }
        }
      }
    }
    get_loopAnswer

    Get one loop in full: title, people, notes, pending draft, and the event timeline. Use before drafting or approving.

    View tool JSON
    {
      "name": "get_loop",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get one loop in full: title, people, notes, pending draft, and the event timeline. Use before drafting or approving.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Loop id"
          }
        }
      }
    }
    add_loopAction

    Open a new loop. The agent files it; a human still owns sending. Default status is owed.

    View tool JSON
    {
      "name": "add_loop",
      "kind": "act",
      "impl": "imperative",
      "description": "Open a new loop. The agent files it; a human still owns sending. Default status is owed.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "title"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "owed",
              "waiting",
              "draft",
              "done"
            ]
          },
          "due": {
            "type": "string",
            "description": "ISO date or relative (3d, 1w)"
          },
          "people": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notes": {
            "type": "string"
          }
        }
      }
    }
    update_loopAction

    Patch a loop's title, status, due date, notes, or people. Does not send mail.

    View tool JSON
    {
      "name": "update_loop",
      "kind": "act",
      "impl": "imperative",
      "description": "Patch a loop's title, status, due date, notes, or people. Does not send mail.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "owed",
              "waiting",
              "draft",
              "done"
            ]
          },
          "due": {
            "type": "string",
            "description": "ISO, relative, or empty to clear"
          },
          "notes": {
            "type": "string"
          },
          "people": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    }
    draft_messageAction

    Write a pending draft on a loop. Does NOT send. Status becomes draft if it was not already done. A human must approve in the UI or call approve_draft.

    View tool JSON
    {
      "name": "draft_message",
      "kind": "act",
      "impl": "imperative",
      "description": "Write a pending draft on a loop. Does NOT send. Status becomes draft if it was not already done. A human must approve in the UI or call approve_draft.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "body"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "body": {
            "type": "string",
            "description": "The unsent message. Keep it short and human."
          }
        }
      }
    }
    approve_draftSensitive Action

    CONSEQUENTIAL. Marks the pending draft as sent: appends a sent event, clears the draft, then closes the loop (one-shot) or sets it to waiting if a reply is expected. This is the only send. Equivalent to the human Approve button. Do not call unless the human asked to send, or the draft is clearly ready and they delegated approval.

    View tool JSON
    {
      "name": "approve_draft",
      "kind": "transact",
      "impl": "imperative",
      "description": "CONSEQUENTIAL. Marks the pending draft as sent: appends a sent event, clears the draft, then closes the loop (one-shot) or sets it to waiting if a reply is expected. This is the only send. Equivalent to the human Approve button. Do not call unless the human asked to send, or the draft is clearly ready and they delegated approval.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      }
    }
    snooze_loopAction

    Push a loop's due date. until is an ISO date or relative like 3d, 1w, 2m.

    View tool JSON
    {
      "name": "snooze_loop",
      "kind": "act",
      "impl": "imperative",
      "description": "Push a loop's due date. until is an ISO date or relative like 3d, 1w, 2m.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "until"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "until": {
            "type": "string",
            "description": "ISO datetime or relative: 3d, 1w, 2m"
          }
        }
      }
    }
    close_loopAction

    Mark a loop done. Optional reason is stored on the timeline.

    View tool JSON
    {
      "name": "close_loop",
      "kind": "act",
      "impl": "imperative",
      "description": "Mark a loop done. Optional reason is stored on the timeline.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        }
      }
    }
    search_loopsAnswer

    Search titles, people, notes, and drafts.

    View tool JSON
    {
      "name": "search_loops",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search titles, people, notes, and drafts.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string"
          }
        }
      }
    }
    plan_todayAnswer

    Return a prioritized plan of what to do now: overdue first, then drafts awaiting approval, then due today. Structured items an agent can act on with draft_message or get_loop.

    View tool JSON
    {
      "name": "plan_today",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return a prioritized plan of what to do now: overdue first, then drafts awaiting approval, then due today. Structured items an agent can act on with draft_message or get_loop.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }