Moodmark

Let your AI agent build moodboards of real websites: save, search, tag and share design references.

Should I use this

Quality & Safety

A
Description quality
94%
Schema completeness
77%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'list_tags' description lacks action verbin list_tags

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,125Tokens (tool definitions)
~715 BTypical response size
Moderate attention impact (0.88% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "moodmark": {
      "url": "https://app.moodmark.design/mcp"
    }
  }
}

Remote endpoints

https://app.moodmark.design/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟑save_websites(urls, items, collection, create_collection, tags)

Save websites to the user's Moodmark library, optionally into a collection (created if missing). Moodmark captures a screenshot, title, favicon, fonts and tech stack for each; the colour palette is extracted when the user opens the library. Up to 50 URLs per call. Already-saved sites are not duplicated.

Input Schema

{
  "type": "object",
  "properties": {
    "urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Website addresses to save."
    },
    "items": {
      "type": "array",
      "description": "Alternative to urls, with a title, note or tags per site.",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "note": {
            "type": "string",
            "description": "Why this site is worth keeping."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "url"
        ]
      }
    },
    "collection": {
      "type": "string",
      "description": "Collection name or id, e.g. \"Portfolio 27\"."
    },
    "create_collection": {
      "type": "boolean",
      "description": "Create the collection if it doesn't exist (default true)."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Existing tag names to apply to every site (see list_tags)."
    }
  }
}
🟒search_library(query, color, tags, collection, limit)

Find bookmarks the user already saved β€” by text (title, URL, note, tags, fonts, tech), colour family, tags or collection. Returns newest first.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "color": {
      "type": "string",
      "enum": [
        "red",
        "orange",
        "yellow",
        "green",
        "teal",
        "blue",
        "purple",
        "pink",
        "brown",
        "gray",
        "black",
        "white"
      ]
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "collection": {
      "type": "string"
    },
    "limit": {
      "type": "number",
      "description": "1–100, default 25."
    }
  }
}
🟒list_collections

The user's collections with bookmark counts and links.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟑create_collection(name, description)

Create an empty collection (returns the existing one if the name is taken).

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ]
}
🟒list_tags

The user's tags by category (industry, style, layout…). Only these names can be applied when saving.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟒get_design_brief(bookmark, refresh)

Turn one saved reference into design.md: palette roles, typography, layout, components, a paste-ready prompt for AI builders (v0, Cursor, Lovable, Bolt) and CSS/Tailwind tokens. Cached on the bookmark; Premium only.

Input Schema

{
  "type": "object",
  "properties": {
    "bookmark": {
      "type": "string",
      "description": "Bookmark id (from search_library) or its URL."
    },
    "refresh": {
      "type": "boolean",
      "description": "Regenerate even if a brief is cached."
    }
  },
  "required": [
    "bookmark"
  ]
}
🟑update_bookmarks(bookmarks, add_tags, append_note, add_to_collection)

Additive edits to saved bookmarks: add existing tags, append a note, add to a collection (created if missing). Never removes anything the user set.

Input Schema

{
  "type": "object",
  "properties": {
    "bookmarks": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Bookmark ids or URLs (max 100)."
    },
    "add_tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Existing tag names (see list_tags)."
    },
    "append_note": {
      "type": "string"
    },
    "add_to_collection": {
      "type": "string"
    }
  },
  "required": [
    "bookmarks"
  ]
}
🟒suggest_tags(bookmarks)

AI tag suggestions for up to 10 saved bookmarks, chosen from the user's own tags, each with a short reason. Suggestions only; apply the ones that fit with update_bookmarks.

Input Schema

{
  "type": "object",
  "properties": {
    "bookmarks": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Bookmark ids or URLs (max 10)."
    }
  },
  "required": [
    "bookmarks"
  ]
}
🟒share_collection(collection)

Turn on the public, read-only link for a collection so it can be sent to a client (they can browse and vote). Only call this when the user explicitly asks to share.

Input Schema

{
  "type": "object",
  "properties": {
    "collection": {
      "type": "string",
      "description": "Collection name or id."
    }
  },
  "required": [
    "collection"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools