Skip to content

Tangent

by tangent.directory · remote · no sign-in to list tools · v0.2.0 · published by directory.tangent

Hand-picked design references, UI patterns and the people behind them, each with why it fits.

Changes · 1

10 tools: 1 change things and 9 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http tangent https://tangent.directory/api/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

10 tools

Changes things 1Claude Code: ask
Only reads 9Claude Code: allow
  • browse_verticalThe newest resources in one section: inspiration, components, motion, build, visuals, tools or learn.Reads text others writeNo findings

    Why it is in this group

    • The name "browse_vertical" says "browse": a word for reading.

    What it can reach

    • untrusted-inputThe name "browse_vertical" says "browse": it reads web pages, which anyone can write.
    Description, as the server wrote it
    The newest resources in one section: inspiration, components, motion, build, visuals, tools or learn. Use it to browse without a query, with the same filters as search_resources and cursor paging. Example: {"vertical": "components", "technology": "react", "limit": 20}

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • find_inspirationTurns a design brief into a short list of references (default 8, at most 10), each with `why` it fits: the pattern, style, category, technology or platform it shares with the brief…No findings

    Why it is in this group

    • The name "find_inspiration" says "find": a word for reading.
    Description, as the server wrote it
    Turns a design brief into a short list of references (default 8, at most 10), each with `why` it fits: the pattern, style, category, technology or platform it shares with the brief, or how search matched it (e.g. "similar meaning"). It reads the brief against Tangent's taxonomy and synonyms and combines that with search; no AI calls. Use it when someone describes a screen or product they are about to design. `interpreted_as` shows how the brief was read. Example: {"brief": "onboarding for a fintech app, playful but clean", "platform": "mobile"}

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_patternOne UI pattern: its definition, its best examples, related patterns and the technologies the examples use.No findings

    Why it is in this group

    • The name "get_pattern" says "get": a word for reading.
    Description, as the server wrote it
    One UI pattern: its definition, its best examples, related patterns and the technologies the examples use. Use it before designing that pattern. Example: {"slug": "empty-state", "limit": 8}

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_personOne person's profile: role, bio, website, social links, studios, what their site is built with (confirmed technologies) and their work on Tangent.Reads text others writeNo findings

    Why it is in this group

    • The name "get_person" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    One person's profile: role, bio, website, social links, studios, what their site is built with (confirmed technologies) and their work on Tangent. Set include_image to also get a small preview of their site. Example: {"slug": "emil-kowalski"}

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_resourceEverything Tangent knows about one resource: descriptions, taxonomy, editorial notes, the people behind it, and its related resources (tangents) with reasons.Reads private dataNo findings

    Why it is in this group

    • The name "get_resource" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "note": it reads notes.
    Description, as the server wrote it
    Everything Tangent knows about one resource: descriptions, taxonomy, editorial notes, the people behind it, and its related resources (tangents) with reasons. Use it to go deeper on a search pick. Set include_image to also get a small screenshot. Example: {"slug": "linear"}

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_patternsEvery UI and interaction pattern resources are filed under (Command Menu, Onboarding, Empty State and more), with example counts.No findings

    Why it is in this group

    • The name "list_patterns" says "list": a word for reading.
    Description, as the server wrote it
    Every UI and interaction pattern resources are filed under (Command Menu, Onboarding, Empty State and more), with example counts. Use it to pick a slug for get_pattern. Example: {}

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_peopleDesigners and design engineers in the catalogue, featured first, then by name, with optional technology and role filters and cursor paging.No findings

    Why it is in this group

    • The name "list_people" says "list": a word for reading.
    Description, as the server wrote it
    Designers and design engineers in the catalogue, featured first, then by name, with optional technology and role filters and cursor paging. Use search_people to find someone by name or focus. Example: {"role": "design engineer", "technology": "nextjs", "limit": 20}

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_peopleFind designers and design engineers by name, role, focus or stack, ranked, with optional technology and role filters.No findings

    Why it is in this group

    • The name "search_people" says "search": a word for reading.
    Description, as the server wrote it
    Find designers and design engineers by name, role, focus or stack, ranked, with optional technology and role filters. Example: {"query": "motion", "role": "design engineer"}

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_resourcesRanked search over Tangent's catalogue of design and design-engineering resources (sites, products, component libraries, tools, articles).No findings

    Why it is in this group

    • The name "search_resources" says "search": a word for reading.
    Description, as the server wrote it
    Ranked search over Tangent's catalogue of design and design-engineering resources (sites, products, component libraries, tools, articles). Use it when you know roughly what you want; narrow with vertical, category, technology, type, pricing or open_source, and page with cursor. For a whole brief, use find_inspiration. Example: {"query": "command menu", "technology": "react", "limit": 5}

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads private data1
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write2
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Install

Pinned to version 0.2.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http tangent https://tangent.directory/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__tangent__find_inspiration",
      "mcp__tangent__search_resources",
      "mcp__tangent__browse_vertical",
      "mcp__tangent__get_resource",
      "mcp__tangent__list_patterns",
      "mcp__tangent__get_pattern",
      "mcp__tangent__search_people",
      "mcp__tangent__list_people",
      "mcp__tangent__get_person"
    ],
    "ask": [
      "mcp__tangent__related_resources"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as tangent. Review it before you use it.

Capability tags behind 3 rules
  • mcp__tangent__browse_vertical untrusted-input
  • mcp__tangent__get_resource private-data
  • mcp__tangent__get_person untrusted-input