Tangent

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

사용해야 할까요

품질 및 안전성

A
설명 품질
97%
스키마 완전성
92%
이름 품질
96%
오염 위험
100%
권한 일치
90%
프로토콜 준수
100%

발견 사항 (2)

  • LOWTool 'related_resources' description lacks action verbrelated_resources에서
  • LOWTool 'browse_vertical' suggests web access but openWorldHint=falsebrowse_vertical에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~7,883토큰 (도구 정의)
~8.3 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 6.16%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "tangent": {
      "url": "https://tangent.directory/api/mcp"
    }
  }
}

원격 엔드포인트

https://tangent.directory/api/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (10)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢find_inspiration(brief, platform, limit)

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"}

입력 스키마

{
  "type": "object",
  "properties": {
    "brief": {
      "type": "string",
      "minLength": 3,
      "maxLength": 500,
      "description": "What you are designing, in plain words, e.g. \"onboarding for a fintech app, playful but clean\"."
    },
    "platform": {
      "description": "Prefer resources for this platform: \"web\", \"mobile\" or \"desktop\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "limit": {
      "default": 8,
      "description": "How many picks (1 to 10, default 8).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "required": [
    "brief"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "brief": {
      "type": "string"
    },
    "interpreted_as": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "matched": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "slug",
          "name",
          "matched"
        ],
        "additionalProperties": false
      },
      "description": "Taxonomy terms read from the brief."
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "Visit link for the site (tagged utm_source=tangent-mcp). Use this one when linking people to the site."
          },
          "site_url": {
            "type": "string",
            "description": "The site's own address, untagged. Use it to compare, dedupe or cite."
          },
          "tangent_url": {
            "type": "string",
            "description": "This resource's page on Tangent."
          },
          "domain": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "patterns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pricing": {
            "description": "free, freemium, paid or open_source; null when unknown.",
            "type": [
              "string",
              "null"
            ]
          },
          "open_source": {
            "description": "true: OSI-licensed; false: source-available or closed; null when unknown.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "license": {
            "description": "SPDX licence id, e.g. \"MIT\".",
            "type": [
              "string",
              "null"
            ]
          },
          "notable_for": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "description": "Full-size preview (screenshot, else the site's OG image): the stored image file, served directly.",
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "description": "A smaller stored copy of image_url (a screenshot's 720px-wide WebP) when one exists; otherwise the same URL as image_url.",
            "type": [
              "string",
              "null"
            ]
          },
          "match_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "why": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Reasons for the pick, e.g. \"pattern: Onboarding\", \"style: Playful\", \"similar meaning\"."
          },
          "score": {
            "type": "number"
          }
        },
        "required": [
          "slug",
          "name",
          "url",
          "site_url",
          "tangent_url",
          "domain",
          "type",
          "description",
          "category",
          "sections",
          "patterns",
          "pricing",
          "open_source",
          "license",
          "notable_for",
          "image_url",
          "thumbnail_url",
          "why",
          "score"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "brief",
    "interpreted_as",
    "results"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢search_resources(query, vertical, category, technology, type, ...)

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}

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "What to look for, e.g. \"command menu\" or \"dark dashboard\"."
    },
    "vertical": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Section: \"inspiration\", \"components\", \"motion\", \"build\", \"visuals\", \"tools\" or \"learn\"."
    },
    "category": {
      "description": "Category slug or name, e.g. \"finance\", \"component-libraries\", \"typography\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "technology": {
      "description": "Technology slug or name, e.g. \"react\", \"tailwind-css\", \"three-js\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "type": {
      "description": "Resource type, e.g. \"website\", \"product\", \"library\", \"tool\", \"gallery\", \"article\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "pricing": {
      "description": "Pricing model.",
      "type": "string",
      "enum": [
        "free",
        "freemium",
        "paid",
        "open_source"
      ]
    },
    "open_source": {
      "description": "true: only open-source resources; false: only ones known not to be.",
      "type": "boolean"
    },
    "limit": {
      "default": 10,
      "description": "Results per page (1 to 50, default 10).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "description": "next_cursor from the previous call, with the same query and filters. Omit for the first page.",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "Visit link for the site (tagged utm_source=tangent-mcp). Use this one when linking people to the site."
          },
          "site_url": {
            "type": "string",
            "description": "The site's own address, untagged. Use it to compare, dedupe or cite."
          },
          "tangent_url": {
            "type": "string",
            "description": "This resource's page on Tangent."
          },
          "domain": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "patterns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pricing": {
            "description": "free, freemium, paid or open_source; null when unknown.",
            "type": [
              "string",
              "null"
            ]
          },
          "open_source": {
            "description": "true: OSI-licensed; false: source-available or closed; null when unknown.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "license": {
            "description": "SPDX licence id, e.g. \"MIT\".",
            "type": [
              "string",
              "null"
            ]
          },
          "notable_for": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "description": "Full-size preview (screenshot, else the site's OG image): the stored image file, served directly.",
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "description": "A smaller stored copy of image_url (a screenshot's 720px-wide WebP) when one exists; otherwise the same URL as image_url.",
            "type": [
              "string",
              "null"
            ]
          },
          "match_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "slug",
          "name",
          "url",
          "site_url",
          "tangent_url",
          "domain",
          "type",
          "description",
          "category",
          "sections",
          "patterns",
          "pricing",
          "open_source",
          "license",
          "notable_for",
          "image_url",
          "thumbnail_url"
        ],
        "additionalProperties": false
      }
    },
    "related_terms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "slug",
          "name"
        ],
        "additionalProperties": false
      }
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    },
    "ignored_filters": {
      "description": "Filters this server could not apply yet; results are not narrowed by them.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "query",
    "results",
    "related_terms",
    "next_cursor"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢browse_vertical(vertical, category, technology, type, pricing, ...)

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}

입력 스키마

{
  "type": "object",
  "properties": {
    "vertical": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Section: \"inspiration\", \"components\", \"motion\", \"build\", \"visuals\", \"tools\" or \"learn\"."
    },
    "category": {
      "description": "Category slug or name, e.g. \"finance\", \"component-libraries\", \"typography\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "technology": {
      "description": "Technology slug or name, e.g. \"react\", \"tailwind-css\", \"three-js\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "type": {
      "description": "Resource type, e.g. \"website\", \"product\", \"library\", \"tool\", \"gallery\", \"article\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "pricing": {
      "description": "Pricing model.",
      "type": "string",
      "enum": [
        "free",
        "freemium",
        "paid",
        "open_source"
      ]
    },
    "open_source": {
      "description": "true: only open-source resources; false: only ones known not to be.",
      "type": "boolean"
    },
    "limit": {
      "default": 20,
      "description": "Results per page (1 to 50, default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "description": "next_cursor from the previous call, with the same query and filters. Omit for the first page.",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "vertical"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "vertical": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "Visit link for the site (tagged utm_source=tangent-mcp). Use this one when linking people to the site."
          },
          "site_url": {
            "type": "string",
            "description": "The site's own address, untagged. Use it to compare, dedupe or cite."
          },
          "tangent_url": {
            "type": "string",
            "description": "This resource's page on Tangent."
          },
          "domain": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "patterns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pricing": {
            "description": "free, freemium, paid or open_source; null when unknown.",
            "type": [
              "string",
              "null"
            ]
          },
          "open_source": {
            "description": "true: OSI-licensed; false: source-available or closed; null when unknown.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "license": {
            "description": "SPDX licence id, e.g. \"MIT\".",
            "type": [
              "string",
              "null"
            ]
          },
          "notable_for": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "description": "Full-size preview (screenshot, else the site's OG image): the stored image file, served directly.",
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "description": "A smaller stored copy of image_url (a screenshot's 720px-wide WebP) when one exists; otherwise the same URL as image_url.",
            "type": [
              "string",
              "null"
            ]
          },
          "match_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "slug",
          "name",
          "url",
          "site_url",
          "tangent_url",
          "domain",
          "type",
          "description",
          "category",
          "sections",
          "patterns",
          "pricing",
          "open_source",
          "license",
          "notable_for",
          "image_url",
          "thumbnail_url"
        ],
        "additionalProperties": false
      }
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    },
    "ignored_filters": {
      "description": "Filters this server could not apply yet; results are not narrowed by them.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "vertical",
    "results",
    "next_cursor"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_resource(slug, include_image)

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"}

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "maxLength": 80,
      "pattern": "^[a-z0-9]+(?:[-_][a-z0-9]+)*$",
      "description": "Resource slug, e.g. \"linear\"."
    },
    "include_image": {
      "default": false,
      "description": "Also attach a small WebP thumbnail (under ~100 KB) as an image block. Off by default to save tokens.",
      "type": "boolean"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string",
      "description": "Visit link for the site (tagged utm_source=tangent-mcp). Use this one when linking people to the site."
    },
    "site_url": {
      "type": "string",
      "description": "The site's own address, untagged. Use it to compare, dedupe or cite."
    },
    "tangent_url": {
      "type": "string",
      "description": "This resource's page on Tangent."
    },
    "domain": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "category": {
      "type": [
        "string",
        "null"
      ]
    },
    "sections": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "patterns": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "pricing": {
      "description": "free, freemium, paid or open_source; null when unknown.",
      "type": [
        "string",
        "null"
      ]
    },
    "open_source": {
      "description": "true: OSI-licensed; false: source-available or closed; null when unknown.",
      "type": [
        "boolean",
        "null"
      ]
    },
    "license": {
      "description": "SPDX licence id, e.g. \"MIT\".",
      "type": [
        "string",
        "null"
      ]
    },
    "notable_for": {
      "type": [
        "string",
        "null"
      ]
    },
    "image_url": {
      "description": "Full-size preview (screenshot, else the site's OG image): the stored image file, served directly.",
      "type": [
        "string",
        "null"
      ]
    },
    "thumbnail_url": {
      "description": "A smaller stored copy of image_url (a screenshot's 720px-wide WebP) when one exists; otherwise the same URL as image_url.",
      "type": [
        "string",
        "null"
      ]
    },
    "match_reasons": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "long_description": {
      "type": [
        "string",
        "null"
      ]
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "styles": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "technologies": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "platforms": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "people": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": [
              "string",
              "null"
            ]
          },
          "tangent_url": {
            "type": "string"
          }
        },
        "required": [
          "slug",
          "name",
          "role",
          "tangent_url"
        ],
        "additionalProperties": false
      }
    },
    "studios": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "body": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "body"
        ],
        "additionalProperties": false
      }
    },
    "implementation": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "summary": {
              "type": "string"
            },
            "body": {
              "type": [
                "string",
                "null"
              ]
            },
            "difficulty": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "summary",
            "body",
            "difficulty"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "collections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "tangent_url": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "tangent_url"
        ],
        "additionalProperties": false
      }
    },
    "last_checked_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "tangents": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "Visit link for the site (tagged utm_source=tangent-mcp). Use this one when linking people to the site."
          },
          "site_url": {
            "type": "string",
            "description": "The site's own address, untagged. Use it to compare, dedupe or cite."
          },
          "tangent_url": {
            "type": "string",
            "description": "This resource's page on Tangent."
          },
          "domain": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "patterns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pricing": {
            "description": "free, freemium, paid or open_source; null when unknown.",
            "type": [
              "string",
              "null"
            ]
          },
          "open_source": {
            "description": "true: OSI-licensed; false: source-available or closed; null when unknown.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "license": {
            "description": "SPDX licence id, e.g. \"MIT\".",
            "type": [
              "string",
              "null"
            ]
          },
          "notable_for": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "description": "Full-size preview (screenshot, else the site's OG image): the stored image file, served directly.",
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "description": "A smaller stored copy of image_url (a screenshot's 720px-wide WebP) when one exists; otherwise the same URL as image_url.",
            "type": [
              "string",
              "null"
            ]
          },
          "match_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "why": {
            "type": "string",
            "description": "Why it is related, e.g. \"shares Command Menu\"."
          }
        },
        "required": [
          "slug",
          "name",
          "url",
          "site_url",
          "tangent_url",
          "domain",
          "type",
          "description",
          "category",
          "sections",
          "patterns",
          "pricing",
          "open_source",
          "license",
          "notable_for",
          "image_url",
          "thumbnail_url",
          "why"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "slug",
    "name",
    "url",
    "site_url",
    "tangent_url",
    "domain",
    "type",
    "description",
    "category",
    "sections",
    "patterns",
    "pricing",
    "open_source",
    "license",
    "notable_for",
    "image_url",
    "thumbnail_url",
    "long_description",
    "categories",
    "styles",
    "technologies",
    "platforms",
    "tags",
    "people",
    "studios",
    "notes",
    "implementation",
    "collections",
    "last_checked_at",
    "tangents"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢related_resources(slug)

Resources related to one resource, each with the reason (e.g. "shares Command Menu", "same maker"). Use it to follow tangents from a site you like. Example: {"slug": "stripe"}

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "maxLength": 80,
      "pattern": "^[a-z0-9]+(?:[-_][a-z0-9]+)*$",
      "description": "Resource slug, e.g. \"stripe\"."
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "Visit link for the site (tagged utm_source=tangent-mcp). Use this one when linking people to the site."
          },
          "site_url": {
            "type": "string",
            "description": "The site's own address, untagged. Use it to compare, dedupe or cite."
          },
          "tangent_url": {
            "type": "string",
            "description": "This resource's page on Tangent."
          },
          "domain": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "patterns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pricing": {
            "description": "free, freemium, paid or open_source; null when unknown.",
            "type": [
              "string",
              "null"
            ]
          },
          "open_source": {
            "description": "true: OSI-licensed; false: source-available or closed; null when unknown.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "license": {
            "description": "SPDX licence id, e.g. \"MIT\".",
            "type": [
              "string",
              "null"
            ]
          },
          "notable_for": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "description": "Full-size preview (screenshot, else the site's OG image): the stored image file, served directly.",
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "description": "A smaller stored copy of image_url (a screenshot's 720px-wide WebP) when one exists; otherwise the same URL as image_url.",
            "type": [
              "string",
              "null"
            ]
          },
          "match_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "why": {
            "type": "string",
            "description": "Why it is related, e.g. \"shares Command Menu\"."
          }
        },
        "required": [
          "slug",
          "name",
          "url",
          "site_url",
          "tangent_url",
          "domain",
          "type",
          "description",
          "category",
          "sections",
          "patterns",
          "pricing",
          "open_source",
          "license",
          "notable_for",
          "image_url",
          "thumbnail_url",
          "why"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "slug",
    "results"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_patterns

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: {}

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "summary": {
            "type": [
              "string",
              "null"
            ]
          },
          "examples": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "tangent_url": {
            "type": "string"
          }
        },
        "required": [
          "slug",
          "name",
          "summary",
          "examples",
          "tangent_url"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "results"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_pattern(slug, limit)

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}

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "maxLength": 80,
      "pattern": "^[a-z0-9]+(?:[-_][a-z0-9]+)*$",
      "description": "Pattern slug, e.g. \"command-menu\" or \"empty-state\"."
    },
    "limit": {
      "default": 12,
      "description": "How many examples to return (1 to 60, default 12).",
      "type": "integer",
      "minimum": 1,
      "maximum": 60
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "summary": {
      "type": [
        "string",
        "null"
      ]
    },
    "definition": {
      "type": [
        "string",
        "null"
      ]
    },
    "tangent_url": {
      "type": "string"
    },
    "examples": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "Visit link for the site (tagged utm_source=tangent-mcp). Use this one when linking people to the site."
          },
          "site_url": {
            "type": "string",
            "description": "The site's own address, untagged. Use it to compare, dedupe or cite."
          },
          "tangent_url": {
            "type": "string",
            "description": "This resource's page on Tangent."
          },
          "domain": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "patterns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pricing": {
            "description": "free, freemium, paid or open_source; null when unknown.",
            "type": [
              "string",
              "null"
            ]
          },
          "open_source": {
            "description": "true: OSI-licensed; false: source-available or closed; null when unknown.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "license": {
            "description": "SPDX licence id, e.g. \"MIT\".",
            "type": [
              "string",
              "null"
            ]
          },
          "notable_for": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "description": "Full-size preview (screenshot, else the site's OG image): the stored image file, served directly.",
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "description": "A smaller stored copy of image_url (a screenshot's 720px-wide WebP) when one exists; otherwise the same URL as image_url.",
            "type": [
              "string",
              "null"
            ]
          },
          "match_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "slug",
          "name",
          "url",
          "site_url",
          "tangent_url",
          "domain",
          "type",
          "description",
          "category",
          "sections",
          "patterns",
          "pricing",
          "open_source",
          "license",
          "notable_for",
          "image_url",
          "thumbnail_url"
        ],
        "additionalProperties": false
      }
    },
    "related_patterns": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "technologies": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "slug",
    "name",
    "summary",
    "definition",
    "tangent_url",
    "examples",
    "related_patterns",
    "technologies"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢search_people(query, technology, role, limit, cursor)

Find designers and design engineers by name, role, focus or stack, ranked, with optional technology and role filters. Example: {"query": "motion", "role": "design engineer"}

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Name, role, focus or stack, e.g. \"motion\" or \"Rauno\"."
    },
    "technology": {
      "description": "Only people whose site is built with this technology, e.g. \"nextjs\", \"astro\", \"framer\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "role": {
      "description": "Words in their role, e.g. \"design engineer\" or \"product designer\".",
      "type": "string",
      "minLength": 2,
      "maxLength": 60
    },
    "limit": {
      "default": 10,
      "description": "Results per page (1 to 50, default 10).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "description": "next_cursor from the previous call, with the same query and filters. Omit for the first page.",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": [
              "string",
              "null"
            ]
          },
          "bio": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "description": "Visit link for their site (tagged utm_source=tangent-mcp).",
            "type": [
              "string",
              "null"
            ]
          },
          "site_url": {
            "description": "Their site's own address, untagged.",
            "type": [
              "string",
              "null"
            ]
          },
          "tangent_url": {
            "type": "string",
            "description": "Their profile on Tangent."
          },
          "image_url": {
            "description": "Their site's OG image, else their avatar: the stored image file, served directly.",
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "description": "The same URL as image_url (people's images have no smaller stored copy).",
            "type": [
              "string",
              "null"
            ]
          },
          "avatar_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "resource_count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "slug",
          "name",
          "role",
          "bio",
          "website",
          "site_url",
          "tangent_url",
          "image_url",
          "thumbnail_url",
          "avatar_url",
          "resource_count"
        ],
        "additionalProperties": false
      }
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "query",
    "results",
    "next_cursor"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_people(technology, role, limit, cursor)

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}

입력 스키마

{
  "type": "object",
  "properties": {
    "technology": {
      "description": "Only people whose site is built with this technology, e.g. \"nextjs\", \"astro\", \"framer\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "role": {
      "description": "Words in their role, e.g. \"design engineer\" or \"product designer\".",
      "type": "string",
      "minLength": 2,
      "maxLength": 60
    },
    "limit": {
      "default": 20,
      "description": "Results per page (1 to 50, default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "description": "next_cursor from the previous call, with the same query and filters. Omit for the first page.",
      "type": "string",
      "maxLength": 2000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": [
              "string",
              "null"
            ]
          },
          "bio": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "description": "Visit link for their site (tagged utm_source=tangent-mcp).",
            "type": [
              "string",
              "null"
            ]
          },
          "site_url": {
            "description": "Their site's own address, untagged.",
            "type": [
              "string",
              "null"
            ]
          },
          "tangent_url": {
            "type": "string",
            "description": "Their profile on Tangent."
          },
          "image_url": {
            "description": "Their site's OG image, else their avatar: the stored image file, served directly.",
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "description": "The same URL as image_url (people's images have no smaller stored copy).",
            "type": [
              "string",
              "null"
            ]
          },
          "avatar_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "resource_count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "slug",
          "name",
          "role",
          "bio",
          "website",
          "site_url",
          "tangent_url",
          "image_url",
          "thumbnail_url",
          "avatar_url",
          "resource_count"
        ],
        "additionalProperties": false
      }
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "results",
    "next_cursor"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_person(slug, include_image)

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"}

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "maxLength": 80,
      "pattern": "^[a-z0-9]+(?:[-_][a-z0-9]+)*$",
      "description": "Person slug, e.g. \"rauno-freiberg\"."
    },
    "include_image": {
      "default": false,
      "description": "Also attach a small WebP thumbnail (under ~100 KB) as an image block. Off by default to save tokens.",
      "type": "boolean"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "role": {
      "type": [
        "string",
        "null"
      ]
    },
    "bio": {
      "type": [
        "string",
        "null"
      ]
    },
    "website": {
      "description": "Visit link for their site (tagged utm_source=tangent-mcp).",
      "type": [
        "string",
        "null"
      ]
    },
    "site_url": {
      "description": "Their site's own address, untagged.",
      "type": [
        "string",
        "null"
      ]
    },
    "tangent_url": {
      "type": "string",
      "description": "Their profile on Tangent."
    },
    "image_url": {
      "description": "Their site's OG image, else their avatar: the stored image file, served directly.",
      "type": [
        "string",
        "null"
      ]
    },
    "thumbnail_url": {
      "description": "The same URL as image_url (people's images have no smaller stored copy).",
      "type": [
        "string",
        "null"
      ]
    },
    "avatar_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "resource_count": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "links": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "label",
          "url"
        ],
        "additionalProperties": false
      }
    },
    "studios": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "built_with": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Confirmed technologies their site is built with."
    },
    "added_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "work": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "Visit link for the site (tagged utm_source=tangent-mcp). Use this one when linking people to the site."
          },
          "site_url": {
            "type": "string",
            "description": "The site's own address, untagged. Use it to compare, dedupe or cite."
          },
          "tangent_url": {
            "type": "string",
            "description": "This resource's page on Tangent."
          },
          "domain": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "patterns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pricing": {
            "description": "free, freemium, paid or open_source; null when unknown.",
            "type": [
              "string",
              "null"
            ]
          },
          "open_source": {
            "description": "true: OSI-licensed; false: source-available or closed; null when unknown.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "license": {
            "description": "SPDX licence id, e.g. \"MIT\".",
            "type": [
              "string",
              "null"
            ]
          },
          "notable_for": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "description": "Full-size preview (screenshot, else the site's OG image): the stored image file, served directly.",
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "description": "A smaller stored copy of image_url (a screenshot's 720px-wide WebP) when one exists; otherwise the same URL as image_url.",
            "type": [
              "string",
              "null"
            ]
          },
          "match_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "slug",
          "name",
          "url",
          "site_url",
          "tangent_url",
          "domain",
          "type",
          "description",
          "category",
          "sections",
          "patterns",
          "pricing",
          "open_source",
          "license",
          "notable_for",
          "image_url",
          "thumbnail_url"
        ],
        "additionalProperties": false
      },
      "description": "Their published work on Tangent, newest first."
    }
  },
  "required": [
    "slug",
    "name",
    "role",
    "bio",
    "website",
    "site_url",
    "tangent_url",
    "image_url",
    "thumbnail_url",
    "avatar_url",
    "resource_count",
    "links",
    "studios",
    "built_with",
    "added_at",
    "work"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 10개