← WebMCP Directory

Tool tree

material.sc

Productivity & BusinessTools verified
Website
A live Material canvas that exposes WebMCP tools. Open it in an agent browser and ask your agent to read, create, and arrange cards with you.
Explore capabilities
    get_current_canvasAnswer

    Return this Material canvas: its space, the canvas bounds, and EVERY card in the space with its placement ({x,y} or null when not yet placed). A blank canvas with unplaced cards is your cue to organize: read the cards, group them by theme, then place each theme as a spatial cluster (see place_cards_on_canvas). unplacedCardIds lists what still needs a home.

    View tool JSON
    {
      "name": "get_current_canvas",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return this Material canvas: its space, the canvas bounds, and EVERY card in the space with its placement ({x,y} or null when not yet placed). A blank canvas with unplaced cards is your cue to organize: read the cards, group them by theme, then place each theme as a spatial cluster (see place_cards_on_canvas). unplacedCardIds lists what still needs a home.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/webmcp-demo"
    }
    get_selected_cardsAnswer

    Return the cards the user selected on the current Material canvas. Use this when the user says these, this group, selected cards, or cards I pointed at.

    View tool JSON
    {
      "name": "get_selected_cards",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return the cards the user selected on the current Material canvas. Use this when the user says these, this group, selected cards, or cards I pointed at.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/webmcp-demo"
    }
    find_cardsAnswer

    Search the user's Material cards by keyword. Scope to the current canvas by passing its spaceId when the user asks about this canvas only.

    View tool JSON
    {
      "name": "find_cards",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search the user's Material cards by keyword. Scope to the current canvas by passing its spaceId when the user asks about this canvas only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Keyword query. Empty returns recent cards."
          },
          "spaceId": {
            "type": "string",
            "description": "Optional Material space id. Use the current canvas id to search only here."
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 25,
            "default": 10
          }
        },
        "additionalProperties": false
      },
      "page": "/webmcp-demo"
    }
    fetch_card_contentAnswer

    Fetch one Material card with its full captured markdown when available. Use this after get_selected_cards or find_cards when excerpt, title, and metadata are not enough to answer the user.

    View tool JSON
    {
      "name": "fetch_card_content",
      "kind": "answer",
      "impl": "imperative",
      "description": "Fetch one Material card with its full captured markdown when available. Use this after get_selected_cards or find_cards when excerpt, title, and metadata are not enough to answer the user.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "itemId": {
            "type": "string",
            "description": "Material card/item id."
          }
        },
        "required": [
          "itemId"
        ],
        "additionalProperties": false
      },
      "page": "/webmcp-demo"
    }
    create_cardAction

    Create a URL reference or an editable note in Material. Use a note for any synthesized or authored writing (it is editable by you and the user); use url for an external reference. When organizing a canvas by theme, create one note per theme as a cluster header and give it a placement above its cluster. Demo canvas — the change is visible live but ephemeral (resets on reload).

    View tool JSON
    {
      "name": "create_card",
      "kind": "act",
      "impl": "imperative",
      "description": "Create a URL reference or an editable note in Material. Use a note for any synthesized or authored writing (it is editable by you and the user); use url for an external reference. When organizing a canvas by theme, create one note per theme as a cluster header and give it a placement above its cluster. Demo canvas — the change is visible live but ephemeral (resets on reload).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "url",
              "note"
            ]
          },
          "url": {
            "type": "string",
            "description": "Required when kind is url."
          },
          "text": {
            "type": "string",
            "description": "The note body. Required when kind is note."
          },
          "title": {
            "type": "string"
          },
          "annotation": {
            "type": "string"
          },
          "spaceId": {
            "type": "string",
            "description": "Optional Material space id. Defaults should usually be the current canvas id."
          },
          "placement": {
            "type": "object",
            "description": "Canvas coordinates for the new card. Omit to auto-place at a free spot below the board (the card ALWAYS appears on the canvas).",
            "properties": {
              "spaceId": {
                "type": "string",
                "description": "Optional; the demo has one canvas."
              },
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              }
            },
            "required": [
              "x",
              "y"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "kind"
        ],
        "additionalProperties": false
      },
      "page": "/webmcp-demo"
    }
    place_card_on_canvasAction

    Add an existing Material card to a canvas and place it at x/y coordinates. Use this to arrange search results or synthesis notes beside selected cards. Demo canvas — the change is visible live but ephemeral (resets on reload).

    View tool JSON
    {
      "name": "place_card_on_canvas",
      "kind": "act",
      "impl": "imperative",
      "description": "Add an existing Material card to a canvas and place it at x/y coordinates. Use this to arrange search results or synthesis notes beside selected cards. Demo canvas — the change is visible live but ephemeral (resets on reload).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "itemId": {
            "type": "string"
          },
          "spaceId": {
            "type": "string",
            "description": "Material space/canvas id."
          },
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          }
        },
        "required": [
          "itemId",
          "spaceId",
          "x",
          "y"
        ],
        "additionalProperties": false
      },
      "page": "/webmcp-demo"
    }
    place_cards_on_canvasAction

    Place multiple existing cards in one call — the efficient way to lay out a whole canvas. Each entry is {itemId, x, y} in canvas coordinates. Use after grouping cards into themes: put each theme's cards in a tight grid cluster, leave a gap between clusters, and add a note header above each cluster with create_card. Bounds, card width, and suggested gap come from get_current_canvas. Demo canvas — the change is visible live but ephemeral (resets on reload).

    View tool JSON
    {
      "name": "place_cards_on_canvas",
      "kind": "act",
      "impl": "imperative",
      "description": "Place multiple existing cards in one call — the efficient way to lay out a whole canvas. Each entry is {itemId, x, y} in canvas coordinates. Use after grouping cards into themes: put each theme's cards in a tight grid cluster, leave a gap between clusters, and add a note header above each cluster with create_card. Bounds, card width, and suggested gap come from get_current_canvas. Demo canvas — the change is visible live but ephemeral (resets on reload).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "placements": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "properties": {
                "itemId": {
                  "type": "string",
                  "description": "The card's id from get_current_canvas (its `id` field, not `spaceCardId`)."
                },
                "x": {
                  "type": "number"
                },
                "y": {
                  "type": "number"
                }
              },
              "required": [
                "itemId",
                "x",
                "y"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "placements"
        ],
        "additionalProperties": false
      },
      "page": "/webmcp-demo"
    }
    edit_cardAction

    Edit user-authored fields on a Material card. title and annotation work on any card; noteText only works on note cards and does not mutate captured source text. Demo canvas — the change is visible live but ephemeral (resets on reload).

    View tool JSON
    {
      "name": "edit_card",
      "kind": "act",
      "impl": "imperative",
      "description": "Edit user-authored fields on a Material card. title and annotation work on any card; noteText only works on note cards and does not mutate captured source text. Demo canvas — the change is visible live but ephemeral (resets on reload).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "itemId": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "annotation": {
            "type": "string"
          },
          "noteText": {
            "type": "string",
            "description": "Plain text body for note cards only."
          }
        },
        "required": [
          "itemId"
        ],
        "additionalProperties": false
      },
      "page": "/webmcp-demo"
    }