← WebMCP Directory

Tool tree

trygoodfolder.com

Productivity & BusinessTools verified
Website
GoodFolder gives a folder on your computer a history you can read. See what an agent or a person changed, who did it, and return to any earlier version. Your files stay where they are and keep their…
Explore capabilities
    list_foldersAnswer

    List the person's folders already connected to GoodFolder with protection status and when each was last saved. This dashboard cannot connect or save a local filesystem folder.

    View tool JSON
    {
      "name": "list_folders",
      "kind": "answer",
      "impl": "imperative",
      "description": "List the person's folders already connected to GoodFolder with protection status and when each was last saved. This dashboard cannot connect or save a local filesystem folder.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    get_local_save_guidanceAnswer

    Explain how to protect and save an existing folder on the local computer. Use this when someone asks to save or protect a local folder: the dashboard is not a save surface and this tool makes no changes.

    View tool JSON
    {
      "name": "get_local_save_guidance",
      "kind": "answer",
      "impl": "imperative",
      "description": "Explain how to protect and save an existing folder on the local computer. Use this when someone asks to save or protect a local folder: the dashboard is not a save surface and this tool makes no changes.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    get_workspace_contextAnswer

    Read which GoodFolder, document, and Change Proposal the person currently has open.

    View tool JSON
    {
      "name": "get_workspace_context",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read which GoodFolder, document, and Change Proposal the person currently has open.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    list_filesAnswer

    List every file in the GoodFolder currently open, including which documents can be read or edited in the dashboard.

    View tool JSON
    {
      "name": "list_files",
      "kind": "answer",
      "impl": "imperative",
      "description": "List every file in the GoodFolder currently open, including which documents can be read or edited in the dashboard.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    read_document_outlineAnswer

    Read the headings and structure of the document currently open. This does not change the document.

    View tool JSON
    {
      "name": "read_document_outline",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the headings and structure of the document currently open. This does not change the document.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    read_selected_textAnswer

    Read the passage the person has selected in the open document. Returns no text when there is no active selection.

    View tool JSON
    {
      "name": "read_selected_text",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the passage the person has selected in the open document. Returns no text when there is no active selection.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    read_file_contextAnswer

    Read a bounded line range from the open text file or a named text file. This never changes the file.

    View tool JSON
    {
      "name": "read_file_context",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read a bounded line range from the open text file or a named text file. This never changes the file.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "document": {
            "type": "string",
            "description": "Optional file path; defaults to the file currently open."
          },
          "startLine": {
            "type": "number",
            "description": "One-based first line, default 1."
          },
          "lineCount": {
            "type": "number",
            "description": "Number of lines, default 80 and at most 200."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    read_table_rangeAnswer

    Read a bounded, structured range from a CSV or TSV file, including cell addresses and values. This never changes the table.

    View tool JSON
    {
      "name": "read_table_range",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read a bounded, structured range from a CSV or TSV file, including cell addresses and values. This never changes the table.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "document": {
            "type": "string",
            "description": "Optional CSV or TSV path; defaults to the file currently open."
          },
          "startRow": {
            "type": "number",
            "description": "One-based first row, default 1 and at most 200."
          },
          "startColumn": {
            "type": "number",
            "description": "One-based first column, default 1 and at most 40."
          },
          "rowCount": {
            "type": "number",
            "description": "Number of rows, default 25."
          },
          "columnCount": {
            "type": "number",
            "description": "Number of columns, default 12."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    read_imageAnswer

    Read a small image from the open GoodFolder as a data URL, so it can be used in a reviewable visual proposal. This never changes the folder.

    View tool JSON
    {
      "name": "read_image",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read a small image from the open GoodFolder as a data URL, so it can be used in a reviewable visual proposal. This never changes the folder.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Image path in the open GoodFolder."
          }
        },
        "required": [
          "path"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    get_page_render_reportAnswer

    Read what happened when the web page currently open was rendered in the dashboard: which files beside it were used, which it asked for and did not find, and any errors its own scripts reported. Use this after proposing a change to a web page. This never changes the folder.

    View tool JSON
    {
      "name": "get_page_render_report",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read what happened when the web page currently open was rendered in the dashboard: which files beside it were used, which it asked for and did not find, and any errors its own scripts reported. Use this after proposing a change to a web page. This never changes the folder.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    get_document_historyAnswer

    Read saves that mention the document currently open, newest first.

    View tool JSON
    {
      "name": "get_document_history",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read saves that mention the document currently open, newest first.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "Maximum entries, default 10 and at most 25."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    propose_new_goodfolderAction

    Prepare a reviewable request for a brand-new empty GoodFolder. The owner must accept it in the dashboard before any folder is created. Never use this for an existing local folder.

    View tool JSON
    {
      "name": "propose_new_goodfolder",
      "kind": "act",
      "impl": "imperative",
      "description": "Prepare a reviewable request for a brand-new empty GoodFolder. The owner must accept it in the dashboard before any folder is created. Never use this for an existing local folder.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name for the brand-new empty GoodFolder, at most 80 characters."
          },
          "explanation": {
            "type": "string",
            "description": "Why this new workspace is needed, at most 1,000 characters."
          }
        },
        "required": [
          "name",
          "explanation"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    list_change_proposalsAnswer

    List Change Proposals for the GoodFolder currently open, including their review status and affected documents.

    View tool JSON
    {
      "name": "list_change_proposals",
      "kind": "answer",
      "impl": "imperative",
      "description": "List Change Proposals for the GoodFolder currently open, including their review status and affected documents.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Optional status: open, accepted, rejected, or needs-review."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    explain_change_proposalAction

    Explain one Change Proposal with the exact before and suggested text for human review.

    View tool JSON
    {
      "name": "explain_change_proposal",
      "kind": "act",
      "impl": "imperative",
      "description": "Explain one Change Proposal with the exact before and suggested text for human review.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "proposalId": {
            "type": "string",
            "description": "Change Proposal id."
          }
        },
        "required": [
          "proposalId"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    propose_file_changeAction

    Create a reviewable one-file suggestion. text_replace works on any file readable as text, source files included; table_update takes exact CSV/TSV cells; asset_replace puts a file somebody already sent up in place of this one. This never changes the file; only the folder owner can accept it.

    View tool JSON
    {
      "name": "propose_file_change",
      "kind": "act",
      "impl": "imperative",
      "description": "Create a reviewable one-file suggestion. text_replace works on any file readable as text, source files included; table_update takes exact CSV/TSV cells; asset_replace puts a file somebody already sent up in place of this one. This never changes the file; only the folder owner can accept it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "document": {
            "type": "string",
            "description": "Exact file path in the current GoodFolder."
          },
          "operation": {
            "type": "string",
            "enum": [
              "text_replace",
              "table_update",
              "asset_replace"
            ],
            "description": "The kind of reviewable change."
          },
          "section": {
            "type": "string",
            "description": "Optional named section or context for a text replacement."
          },
          "originalText": {
            "type": "string",
            "description": "Exact current text for text_replace, at most 20,000 characters."
          },
          "replacementText": {
            "type": "string",
            "description": "Suggested text for text_replace, at most 20,000 characters."
          },
          "changes": {
            "type": "array",
            "maxItems": 100,
            "description": "Exact CSV/TSV cell changes for table_update.",
            "items": {
              "type": "object",
              "properties": {
                "address": {
                  "type": "string"
                },
                "before": {
                  "type": "string"
                },
                "replacement": {
                  "type": "string"
                }
              },
              "required": [
                "address",
                "before",
                "replacement"
              ],
              "additionalProperties": false
            }
          },
          "stagingAssetId": {
            "type": "string",
            "description": "Short-lived temporary upload id for a later asset_replace operation."
          },
          "mimeType": {
            "type": "string",
            "description": "Uploaded asset MIME type for a later asset_replace operation."
          },
          "extension": {
            "type": "string",
            "description": "Uploaded asset extension for a later asset_replace operation."
          },
          "explanation": {
            "type": "string",
            "description": "Why the change is useful, at most 500 characters."
          },
          "title": {
            "type": "string",
            "description": "Short Change Proposal title."
          }
        },
        "required": [
          "document",
          "operation",
          "explanation",
          "title"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    propose_document_changeAction

    Compatibility alias for propose_file_change with the text_replace operation. This does not change the document; only the folder owner can accept it.

    View tool JSON
    {
      "name": "propose_document_change",
      "kind": "act",
      "impl": "imperative",
      "description": "Compatibility alias for propose_file_change with the text_replace operation. This does not change the document; only the folder owner can accept it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "document": {
            "type": "string",
            "description": "Document path in the current GoodFolder."
          },
          "section": {
            "type": "string",
            "description": "Selected passage or named section."
          },
          "originalText": {
            "type": "string",
            "description": "Exact current text, at most 20,000 characters."
          },
          "replacementText": {
            "type": "string",
            "description": "Suggested replacement, at most 20,000 characters."
          },
          "explanation": {
            "type": "string",
            "description": "Short reason for the suggestion, at most 500 characters."
          },
          "title": {
            "type": "string",
            "description": "Short Change Proposal title."
          }
        },
        "required": [
          "document",
          "section",
          "originalText",
          "replacementText",
          "explanation",
          "title"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    propose_document_mediaAction

    Create one reviewable Change Proposal that adds generated media and inserts its Markdown or HTML reference into a text document. The bytes wait outside the folder; accepting the whole proposal adds the media and edits the document in one Save. This never changes the folder by itself.

    View tool JSON
    {
      "name": "propose_document_media",
      "kind": "act",
      "impl": "imperative",
      "description": "Create one reviewable Change Proposal that adds generated media and inserts its Markdown or HTML reference into a text document. The bytes wait outside the folder; accepting the whole proposal adds the media and edits the document in one Save. This never changes the folder by itself.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "document": {
            "type": "string",
            "description": "Exact path of the text document in the open GoodFolder."
          },
          "assetPath": {
            "type": "string",
            "description": "New path the image, video, or audio file will have if accepted, including its extension."
          },
          "assetDataUrl": {
            "type": "string",
            "description": "The generated image, video, or audio as a base64 data URL. Inline media is limited to 25 MB."
          },
          "anchorText": {
            "type": "string",
            "description": "Exact existing document text to anchor the insertion, at most 20,000 characters."
          },
          "insertionText": {
            "type": "string",
            "description": "Markdown or HTML that refers to assetPath, at most 20,000 characters."
          },
          "placement": {
            "type": "string",
            "enum": [
              "before",
              "after"
            ],
            "description": "Put insertionText before or after anchorText."
          },
          "section": {
            "type": "string",
            "description": "Optional section name shown during review."
          },
          "explanation": {
            "type": "string",
            "description": "Why the media belongs here, at most 500 characters."
          },
          "title": {
            "type": "string",
            "description": "Short Change Proposal title."
          }
        },
        "required": [
          "document",
          "assetPath",
          "assetDataUrl",
          "anchorText",
          "insertionText",
          "placement",
          "explanation",
          "title"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    propose_generated_fileAction

    Create a reviewable DOCX, XLSX, PDF, PowerPoint, or bitmap image from structured content. The complete file waits outside the folder for the owner to preview and accept; this never changes the folder by itself.

    View tool JSON
    {
      "name": "propose_generated_file",
      "kind": "act",
      "impl": "imperative",
      "description": "Create a reviewable DOCX, XLSX, PDF, PowerPoint, or bitmap image from structured content. The complete file waits outside the folder for the owner to preview and accept; this never changes the folder by itself.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "New or existing path in the open GoodFolder, with a matching .docx, .xlsx, .pdf, .pptx, .png, .jpg, .jpeg, or .webp extension."
          },
          "artifactType": {
            "type": "string",
            "enum": [
              "document",
              "spreadsheet",
              "pdf",
              "presentation",
              "image"
            ],
            "description": "Type of complete file to prepare."
          },
          "content": {
            "type": "object",
            "description": "Structured file content: blocks for document/PDF, sheets for spreadsheet, slides for presentation, or a PNG/JPEG/WebP dataUrl for image."
          },
          "brand": {
            "type": "object",
            "description": "Optional common brand kit with name, backgroundColor, accentColor, and a PNG/JPEG/WebP logoDataUrl returned by read_image."
          },
          "explanation": {
            "type": "string",
            "description": "Why this complete file was prepared, at most 500 characters."
          },
          "title": {
            "type": "string",
            "description": "Short Change Proposal title."
          }
        },
        "required": [
          "path",
          "artifactType",
          "content",
          "explanation",
          "title"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    comment_on_change_proposalSensitive Action

    Add a comment to a Change Proposal for the people reviewing it. This adds discussion but does not change any document.

    View tool JSON
    {
      "name": "comment_on_change_proposal",
      "kind": "transact",
      "impl": "imperative",
      "description": "Add a comment to a Change Proposal for the people reviewing it. This adds discussion but does not change any document.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "proposalId": {
            "type": "string",
            "description": "Change Proposal id."
          },
          "comment": {
            "type": "string",
            "description": "Comment, at most 4,000 characters."
          }
        },
        "required": [
          "proposalId",
          "comment"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    comment_on_documentAction

    Leave a review comment on a selected passage in the open document. This does not change the document.

    View tool JSON
    {
      "name": "comment_on_document",
      "kind": "act",
      "impl": "imperative",
      "description": "Leave a review comment on a selected passage in the open document. This does not change the document.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "quotedText": {
            "type": "string",
            "description": "Exact selected passage, at most 20,000 characters."
          },
          "comment": {
            "type": "string",
            "description": "Comment, at most 4,000 characters."
          }
        },
        "required": [
          "quotedText",
          "comment"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    get_timelineAnswer

    Read a folder's timeline of saves, newest first. Each entry says who saved it, what changed in plain language, and which files mattered most.

    View tool JSON
    {
      "name": "get_timeline",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read a folder's timeline of saves, newest first. Each entry says who saved it, what changed in plain language, and which files mattered most.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "folder": {
            "type": "string",
            "description": "Folder name. Leave off for the first folder."
          },
          "limit": {
            "type": "number",
            "description": "How many entries (default 10, max 25)."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    find_savesAnswer

    Search one folder's timeline by text in a save's label or by file path. Answers like “when did we touch the invoice?”.

    View tool JSON
    {
      "name": "find_saves",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search one folder's timeline by text in a save's label or by file path. Answers like “when did we touch the invoice?”.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Text to look for in labels or file paths."
          },
          "folder": {
            "type": "string",
            "description": "Folder name. Leave off for the first folder."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    explain_saveAction

    Explain one save in plain language: who made it, when, what changed, and which files were involved.

    View tool JSON
    {
      "name": "explain_save",
      "kind": "act",
      "impl": "imperative",
      "description": "Explain one save in plain language: who made it, when, what changed, and which files were involved.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "number": {
            "type": "number",
            "description": "The save's number from the timeline."
          },
          "folder": {
            "type": "string",
            "description": "Folder name. Leave off for the first folder."
          }
        },
        "required": [
          "number"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    preview_restoreAnswer

    Preview going back to an earlier save: which files would be brought back. For one previewable file, use propose_restore_file to open a reviewable browser proposal; a connected computer can restore the whole folder. This never changes anything by itself.

    View tool JSON
    {
      "name": "preview_restore",
      "kind": "answer",
      "impl": "imperative",
      "description": "Preview going back to an earlier save: which files would be brought back. For one previewable file, use propose_restore_file to open a reviewable browser proposal; a connected computer can restore the whole folder. This never changes anything by itself.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "number": {
            "type": "number",
            "description": "The save number to go back to."
          },
          "folder": {
            "type": "string",
            "description": "Folder name. Leave off for the first folder."
          }
        },
        "required": [
          "number"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }
    propose_restore_fileAction

    Prepare a reviewable replacement of one previewable file with its exact bytes from an earlier save. The folder changes only if its owner accepts the proposal.

    View tool JSON
    {
      "name": "propose_restore_file",
      "kind": "act",
      "impl": "imperative",
      "description": "Prepare a reviewable replacement of one previewable file with its exact bytes from an earlier save. The folder changes only if its owner accepts the proposal.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Exact file path to bring back from the earlier save."
          },
          "number": {
            "type": "number",
            "description": "Earlier save number to use."
          },
          "folder": {
            "type": "string",
            "description": "Folder name. Leave off for the open folder."
          }
        },
        "required": [
          "path",
          "number"
        ],
        "additionalProperties": false
      },
      "page": "/dashboard?demo=1"
    }