teguma
This server enables AI agents to interact with Penpot design files through MCP, providing brand context, design tokens, components, layout constraints, and CRUD operations on elements, plus Figma import. Specifically, you can:
Discover accessible Penpot files (
list_files).Extract compressed brand context (
get_design_context), design tokens (get_tokens), components (get_components), layout constraints (get_constraints), and page layout (get_page_layout).Create, update, and delete design elements (
create_element,update_element,delete_element).Import Figma designs with a dry-run option (
import_figma).Verify connectivity and authentication (
check_connection).
Provides tools for interacting with Penpot's design files and brand context, allowing AI agents to read and write Penpot designs while maintaining brand context.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tegumaget design context for the main dashboard file"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
teguma
AI-native design bridge — Penpot MCP + brand context engine.
Figma/Claude Design의 페인포인트를 오픈소스로 해결합니다. AI 에이전트가 브랜드 컨텍스트를 유지하면서 Penpot 디자인을 읽고 쓸 수 있게 하는 MCP 서버입니다.
왜 teguma?
Figma + Claude Design | Penpot 내장 MCP | teguma | |
브라우저 필요 | ✅ | ✅ (플러그인) | ❌ |
디자인 시스템 임포트 | ❌ 토큰 파괴 | ⚠️ 수동 프롬프트 | ✅ 자동 압축 |
토큰 효율 | ❌ 전체 HTML | ⚠️ 중간 | ✅ 압축 표현 |
오픈소스 | ❌ | ✅ | ✅ |
셀프호스트 | ❌ | ✅ | ✅ |
Related MCP server: ds-pilot
빠른 시작
설치
npm install -g teguma
# 또는
npx teguma설정
환경변수:
export PENPOT_URL=https://your-penpot-instance.com
export PENPOT_TOKEN=your-mcp-keyPenpot에서 MCP 키 발급: 계정 → Integrations → MCP Server → 키 생성
Claude Code / Cursor에서 사용
.claude/settings.json 또는 MCP 설정에 추가:
{
"mcpServers": {
"teguma": {
"command": "npx",
"args": ["teguma"],
"env": {
"PENPOT_URL": "https://your-penpot.com",
"PENPOT_TOKEN": "your-key"
}
}
}
}MCP 도구
도구 | 설명 |
| 파일 전체 브랜드 컨텍스트 추출 (압축) |
| 디자인 토큰 (색상/타이포/간격) |
| 컴포넌트 목록 + 변형 |
| 접근 가능한 파일 목록 |
| Penpot 페이지에 도형·텍스트·보드·SVG 생성 |
| Penpot 레이아웃 가드레일 조회 |
| Penpot 페이지 레이아웃 트리 조회 |
| Figma 디자인 시스템을 Penpot으로 변환·가져오기 |
| Open Design handoff 번들(SVG + tokens.css)을 Penpot 페이지로 반입 |
| Penpot 요소 속성 수정 |
| Penpot 요소 삭제 |
| Penpot 연결·인증 확인 |
| 채널별 캔버스 사이즈 프리셋 14종 |
| 다중 페이지 문서 검증 + 자동 QA 리포트 |
| 워크스페이스 정책 위반 목록과 출고 허용 여부 확인 |
| 12종 파라미터화된 채널 템플릿에서 문서·QA 생성 |
| 텍스트 래핑·축소·안전영역 내 성장 또는 요청 시 말줄임 |
| 선택 레이어 정렬·분배·측정 스택·세로 리듬 배치 |
| 프리셋·수치 리사이즈 (fill/fit/original/adapt) |
| SVG / PNG / JPG / 다중 페이지 PDF / 편집 가능한 PPTX / GIF / MP4 내보내기 |
| 결정론적 crop·scale·pad·단색 배경 제거·투명 여백 trim |
| QA 상태를 함께 반환하며 로컬 DRAFT 프로젝트 저장 |
| 저장한 프로젝트 envelope 로드 |
| 저장 프로젝트를 id 순서로 조회 |
총 24개 MCP 도구이며, 위 표의 디자인 엔진 도구는 12개다.
디자인 엔진
선언형 문서를 받아 채널별 사이즈로 리사이즈하고, 브랜드 키트를 적용하고, 검증한 뒤 내보내는 엔진입니다. Penpot 연결 없이도 동작합니다.
npm run design:demo # 카드뉴스 3면 → PNG + PDF + 3개 채널 리사이즈
npm run design:gallery # 12종 템플릿 PNG·104px 미리보기·리사이즈 비교·contact sheet사이즈 프리셋 — 네이버 블로그 3종을 포함한 14종: 유튜브·인스타그램·페이스북·블로그·프레젠테이션·A4
리사이즈 4-모드 —
fill채우기,fit맞추기,original원본,adapt종횡비 재구성.adapt는 원본 캔버스 전체(0,0·양축 일치)를 덮는 사각형만 가로 확장하고, 장식용 가로 밴드는 비율을 유지한다.fit의 무크롭 보장은 원본이 캔버스 안에 있을 때만 성립하며, 원래 밖의 레이어는 QA가 잡는다.브랜드 키트 — 팔레트·폰트·로고 등록, 이탈 색상 자동 정규화와 로고 ID·소스까지 확인하는 위반 리포트
텍스트 측정·줄바꿈 — 등록 글꼴은 sfnt glyph advance로 측정한다. 굵기 미지정 시 등록 face 중 가장 넓은 advance를 쓰고, 등록되지 않은 글꼴은 문자군별 3em fallback을 쓴다. 음수
letterSpacing은 유한 수이면 허용하되 측정 폭을 가장 넓은 글리프 폭 아래로 내리지 않아, 과도한 음수 자간이 QA의 false fit을 만들지 않는다. 긴 토큰 분할, 줄 수 제한과 말줄임표를 지원한다.자동 레이아웃·프리미티브·템플릿 — 41단계 결정론 글꼴 후보(기본 최소 60%), 기본 안전영역 내 성장 정책, 정렬·분배·측정 스택·세로 리듬, 12종 원본 채널 템플릿
자동 QA — 캔버스 이탈, 안전영역, 텍스트 불투명도를 배경과 합성한 4.5:1 대비·프레임 적합·완전 가림, 브랜드 준수. 둥근 사각형은 텍스트 프레임 전체가 유효 반지름 안쪽에 있을 때만 배경으로 인정하고, 그 밖과 이미지 배경은 fail-closed.
exportDocument는 기본적으로 QA 실패를 거부하며enforceQa: false로만 원시 렌더 가능워크스페이스 정책 —
check_design_policy는 NFKC 정규화 금지어·필수 문구, 승인 상태, 이미지·브랜드 색상·등록 프리셋·페이지 수 제한을 검사해 위반과 출고 허용 여부를 반환한다. regex는 리터럴·안전한 문자 클래스·^/$·리터럴/클래스 뒤의{n}(0–64)만 허용하며 bare.·그룹·교대·escape class·{n,}/{n,m}는 거부한다. 줄바꿈으로 나뉜 한 텍스트 레이어의 용어는 잡지만, 레이어 간에는 읽기 순서를 신뢰할 수 없어 연결하지 않는다.고전 이미지 처리 —
process_design_image는 resolver 승인 원본을 순서대로 crop·scale·pad·단색 배경 제거·trim하고 동일한 hardened export writer로 PNG를 쓴다. 축 8,192px·16,000,000px 제한을 적용한다.이미지·글꼴·저장 경계 — 이미지 resolver는
O_NOFOLLOWdescriptor의 inode·크기(20MiB)를 확인해 제한된 바이트만 읽고, 출력은 디렉터리 inode 재검증·독점 no-follow 생성·regular file/link count 확인을 한다. Node에openat가 없어 최종 검증 뒤 디렉터리 교체 시 외부 빈 파일이 생길 수 있고, 같은 자격 증명 주체는 검사 뒤 hardlink를 추가할 수 있으므로 절대적 containment는 보장하지 않는다. 번들 IBM Plex Sans KR는loadSystemFonts: false로 자동 해석한다.내보내기 제한 — SVG, PNG, JPG, PDF, PPTX, GIF, MP4를 지원한다. 축 8,192px, 페이지당 16,000,000px, 최대 10페이지·1,000레이어이며, GIF와 MP4는 문서 페이지를 프레임으로 묶어 각각 총 32,000,000 프레임 픽셀까지 허용한다. PDF는 FlateDecode 이미지와 UTF-16BE 메타데이터를 사용. PPTX는 고정 timestamp ZIP/PresentationML로 슬라이드별 단색 페이지 배경과 텍스트·사각형·이미지를 개별 편집 객체로 기록한다.
결정론 — 동일 입력 바이트 동일성은 회귀 테스트로 검증
jpg 형식 요청은 알파를 페이지 배경(또는 backgroundColor)에 평탄화한 실제 baseline JPEG를 .jpg 확장자로 반환한다. 내장 인코더는 의존성을 추가하지 않으며 기본 quality는 85(1–100 지정 가능), 텍스트의 컬러 가장자리를 보존하기 위해 4:4:4 chroma sampling을 쓴다. pptx는 슬라이드 자체의 <p:bg>에 페이지 배경을 기록하고 텍스트·사각형·이미지를 PowerPoint·Keynote·Google Slides에서 개별 편집할 수 있는 PresentationML 객체로 내보낸다. 복잡한 path·둥근 사각형 반지름·이미지 cover/contain crop·필터·그라데이션·애니메이션·전환은 아직 지원하지 않는다. GIF는 결정론적 GIF89a이며 문서 페이지가 프레임이 된다. 공용 팔레트는 최대 256색의 가중 median-cut 양자화와 명시적 동률 순서를 사용하고, 기본 지연은 10 centiseconds(100ms)다. Floyd–Steinberg 디더링은 평면 브랜드 패널을 거칠게 만들 수 있어 라이브러리 exportDocument의 gifDither에서만 선택적으로 켜며 기본은 꺼져 있다. 단일 페이지는 NETSCAPE2.0 루프 확장을 쓰지 않고, 여러 페이지는 무한 반복한다. 현재 MCP export_design_document 스키마는 gifFrameDelay·gifDither·mp4FrameDuration을 노출하지 않는다. MP4는 같은 페이지 순서를 Motion JPEG intra frame으로 담고 기본 프레임 길이는 100ms이며, 라이브러리 exportDocument에서는 mp4FrameDuration에 공통 값 또는 페이지별 값을 줄 수 있다. 고정 timestamp라 바이트 결정론적이고 홀수 치수도 된다. 다만 H.264 동등 품질보다 파일이 훨씬 크며 ffmpeg·QuickTime·VLC는 재생하지만 대부분 브라우저는 Motion JPEG MP4를 네이티브 재생하지 않는다. 짧은 인라인 루프에는 GIF, 비디오 파이프라인 전달에는 MP4를 권장한다. #15는 PPTX·GIF·MP4까지 완료되어 해결되었고, 12종 템플릿의 추가 확장은 선택 사항이며 #16에, 웹 에디터 UI는 #18에 남는다.
조사와 명세: 미리캔버스 파리티 조사, 디자인 엔진 명세
Open Design → Penpot 핸드오프
Open Design 산출물(SVG 엔트리 + CSS 커스텀 프로퍼티 토큰)을 handoff 번들 계약으로 Penpot 페이지에 반입합니다. 명세: docs/specs/019-open-design-handoff.md, 실측 근거: docs/research/019-open-design-export.md.
사용 순서 (생성 → 번들 → 반입 → 재조회)
생성 — open-design MCP 도구가 노출된 새 Codex 태스크에서
collect_brief→start_run→get_run으로 비식별 샘플 생성 (SVG 엔트리 1개 +tokens.css).산출물 획득 —
get_artifact({ project, entry })로 SVG 엔트리 + 참조 파일 획득,truncated여부 확인.번들 구성 — 5장 계약으로
manifest.json+ 파일 구성 (content hash는 CLI가 검증):
mkdir -p my-bundle
cp hero-section.svg tokens.css my-bundle/
# manifest.json 작성 — source.mode: user-handoff 또는 MCP 경로 metadata반입 미리보기 — Penpot 쓰기 없이 변환·loss report·action 확인:
teguma import-open-design --bundle ./my-bundle --dry-run반입 — Penpot 파일에 페이지 생성/교체 (idempotency:
od-handoff-<sourceId12>-<hash12>이름 기준):
PENPOT_URL=http://192.168.0.183:9001 PENPOT_SESSION_COOKIE=... teguma \
import-open-design --bundle ./my-bundle --penpot-file-id <file-id>재조회 —
get_page_layout(셰이프 트리)·get_tokens(압축 토큰)로 반입 결과 확인. canonical 문서는data/imports/open-design/<sourceIdSlug>/tokens.canonical.json에 저장되어 재조회 검증의 기준이 된다 (POC 한계:includeCanonical왕복은 #30 후속 — 13장).idempotency 재현 — 같은 번들 재실행 →
action: "unchanged", 번들 수정 후 재실행 →action: "replaced".--force는 Penpot 수동 편집 drift 복구용.
import_open_design 인자·출력
인자 | 설명 |
| handoff 번들 디렉터리 (manifest.json 필수) |
| 대상 Penpot 파일 (미제공 시 미리보기만) |
| 기본 |
| 같은 hash여도 삭제·재생성 (기본 |
| canonical 토큰 role override ( |
출력 예시 (요약):
{
"action": "created",
"pageName": "od-handoff-3830495a6aa9-ae9219aad83a",
"summary": { "layers": { "source": 10, "imported": 9, "unsupported": 1 } },
"lossReport": { "schemaVersion": "0.1.0", "items": [ { "category": "image", "severity": "unsupported", "code": "external-url-asset" } ] },
"canonical": { "tokenCount": 8, "mode": "default" }
}시크릿 경계 (6.1)
PENPOT_SESSION_COOKIE·PENPOT_TOKEN은 환경변수로만 주입 (~/.codex/config.toml또는 셸) — 문서·커밋·번들·채팅 노출 금지.Open Design cloud/BYOK 크레덴셜은 MCP 내부 전용 — chat·파일·번들·커밋에 기록 금지.
fixture·번들에 개인·회사 시크릿 금지 (외부 URL 이미지는
example.invalid같은 가짜 도메인만).
live smoke
scripts/smoke-open-design-handoff.sh — opt-in, CI 미포함 (13장). 네트워크·시크릿 필요:
PENPOT_URL=... PENPOT_SESSION_COOKIE=... PENPOT_FILE_ID=<id> \
./scripts/smoke-open-design-handoff.sh --bundle ./my-bundle아키텍처
AI Agent (Claude Code / Cursor / Codex)
│ MCP Protocol (stdio)
▼
┌─── teguma MCP Server ───┐
│ Brand Context Engine │
│ Design Token Compressor │
│ Layout Constraints │
└──────────┬───────────────┘
│ HTTP RPC API
▼
Penpot (self-hosted)개발
npm install
npm run dev # 개발 모드 (tsx)
npm run build # TypeScript 컴파일
npm test # Vitest운영환경
AGENTS.md — 이슈 기반 개발, semver 릴리스, 리뷰 파이프라인.
리서치
실험
회사 홍보 썸네일 테스트베드 — SEVASA, 슈퍼쇼츠, 주식회사 로드맵 1080×1080 시안과 재현 가능한 SVG 렌더러
회사 홍보 에디토리얼 v2 — 자연광·현장 맥락·중립 타이포로 AI 특유의 시각 단서를 줄인 시안과 v1/v2 비교
네이버 실노출 썸네일 v3 — 104×104px 검색 결과와 홈피드 크롭에 맞춘 한 피사체·한 문구 대표 이미지
스톡 자산
생성형 회사 홍보 배경 원본 — 원본 PNG, 프롬프트, SHA-256, 파생 자산 관계
회사 홍보 v2 배경 원본 — 다큐멘터리형 원본 PNG와 AI provenance
회사 홍보 v3 배경 원본 — 네이버 대표 이미지용 클로즈업 원본과 AI provenance
라이선스
MIT
디렉토리
경로 | 용도 |
| 리서치 결과물 |
| 기획·명세 |
| 버전별 업데이트 리포트 |
| 수집 데이터 (JSON/YAML) |
| 자동화 스크립트 |
| 출처와 생성 이력이 검증되는 재사용 자산 |
라이선스
TBD
Available Tools
24 toolsarrange_design_layersA
Arrange selected page layers with deterministic alignment, distribution, measured text stacking, or semantic vertical rhythm. The document canvas safe margin is always respected and the response includes fresh QA.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | Page containing all selected layer ids | |
| document | Yes | Design document containing the layers to arrange | |
| layerIds | Yes | Layer ids in the intended layout order | |
| operation | Yes | Deterministic layout operation to apply |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses deterministic behavior, safe margin respect, and fresh QA, but does not state mutation effects, permissions, or return format beyond the vague 'fresh QA'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and then adds two significant behavioral constraints. Every sentence earns its place with no wasteful content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a complex schema and no output schema, the description covers main behaviors but leaves gaps: no mention of return structure beyond 'fresh QA', no explanation of 'measured text stacking' or 'semantic vertical rhythm', and no clarification of whether the document is mutated in-place.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all 4 parameters, so the baseline is 3. The description adds conceptual mapping to the operation parameter by naming the four operation families (alignment, distribution, stacking, vertical rhythm), which helps the agent select the right operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('arrange') and resource ('selected page layers') and enumerates distinct operation types (alignment, distribution, text stacking, vertical rhythm) that clearly differentiate it from sibling tools like resize or autolayout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for arranging selected layers and lists supported operations, providing clear context. However, it does not explicitly name alternatives or exclusion criteria, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autolayout_design_documentA
Hard-wrap overflowing text, shrink it deterministically, then grow its frame inside the safe area or truncate only when requested. Returns the adjusted document, decisions, and QA report.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | Design document whose text frames should be repaired | |
| onOverflow | No | After shrinking to the floor: fail, grow inside the safe area, or truncate with an ellipsis | grow |
| minimumFontScale | No | Smallest allowed text size as a fraction of its authored size |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on full burden. It discloses the processing order (hard-wrap, shrink, grow, truncate only when requested), the deterministic nature, and the return value (adjusted document, decisions, QA report). It does not explicitly state whether the input is mutated, but 'Returns the adjusted document' suggests a non-destructive operation, adding value beyond a simple mutation statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action ('Hard-wrap overflowing text'), and every word earns its place. It efficiently summarizes the process and return value without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested document structure, three parameters, no output schema), the description provides essential context: the algorithm, the condition for truncation, and the composition of the return value. It does not detail failure modes or the QA report structure, but the rich input schema and clear behavioral overview make it sufficiently complete for an agent to understand the tool's role and outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with parameters onOverflow and minimumFontScale already well-described and the document param described as 'Design document whose text frames should be repaired'. The tool description adds minimal extra meaning beyond the schema, such as the order of operations, but does not clarify parameter syntax or additional constraints. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific action ('Hard-wrap', 'shrink', 'grow', 'truncate') on a clear resource ('overflowing text' in a design document), distinguishing it from siblings like resize_design_document or update_element. It clearly conveys what the tool does and its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for repairing overflowing text but does not explicitly state when to choose this over alternatives or provide exclusions. It lacks direct guidance on suitable scenarios or related tools, so usage context is only implied rather than clearly specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_connectionA
Verify Penpot connectivity and authentication. Run this first if other tools fail. Returns latency, accessible files, and troubleshooting suggestions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses returns latency, accessible files, and troubleshooting suggestions. Does not mention side effects, but likely read-only. Adequate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. Clearly front-loaded with purpose and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description covers purpose, usage, and key return items. Could elaborate on return format but adequate for a simple diagnostic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters defined, schema coverage is 100% trivially. Baseline of 4 per guidelines for 0 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Verify Penpot connectivity and authentication', using a specific verb and resource. It distinguishes from sibling tools like list_files or import_figma by being a diagnostic/health check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Run this first if other tools fail', providing clear usage context. Does not mention when not to use but is sufficient for a diagnostic tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_design_policyA
Evaluate a design document against configurable banned terms, required terms, approval, and workspace capability restrictions. Returns violations and whether export is permitted.
| Name | Required | Description | Default |
|---|---|---|---|
| policy | Yes | Configurable workspace brand and approval policy | |
| document | Yes | Design document to evaluate against a workspace policy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the transparency burden. It states that the tool 'evaluates' and 'returns' results, strongly implying a read-only operation, but it does not explicitly confirm that no mutation occurs, nor does it describe any prerequisites, error behavior, or side effects. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb 'Evaluate' and immediately specifies the resource and context. It wastes no words and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a complex nested schema and no output schema, so the description is the only source for return information. It states that violations and export permission are returned, which is useful but incomplete: the agent does not learn the structure of violations or the exact shape of the export permission flag. Given the complexity, additional context about the output or behavior would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both 'document' and 'policy' have descriptions). The tool description adds value by enumerating the policy categories ('banned terms, required terms, approval, and workspace capability restrictions'), which helps an agent understand the policy structure, but it does not provide additional semantics beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function: evaluating a design document against a configurable policy covering banned terms, required terms, approval, and capability restrictions. It also states the output (violations and export permission), which distinguishes it from sibling tools like export_design_document or get_constraints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear use case (checking a document before export or as part of policy compliance), but it does not explicitly state when to use this tool versus alternatives, nor does it mention when not to use it. No exclusion conditions are given, so the context is partially clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_design_documentA
Validate a multi-page design document and return an automated QA report covering canvas bounds, safe area, text contrast, and brand kit compliance. Use this before exporting.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | Design document to validate | |
| applyBrandKitNormalization | No | Rewrite colors and fonts to the nearest brand kit entry before QA |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. While it indicates the tool returns a report, it fails to mention the 'applyBrandKitNormalization' parameter that can rewrite colors and fonts, a side effect with mutation potential. Without this disclosure, an agent might invoke the tool with normalization enabled and inadvertently modify the document. The description also does not explain the report's return format or whether the input is mutated in any other way.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the primary action and scope, followed by a clear usage instruction. Every word contributes value—no filler or redundant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a validation tool with a complex nested input schema, the description explains the report's key coverage areas but omits the report's structure or format (no output schema exists). It also fails to mention the side-effect potential of applyBrandKitNormalization. The 'before exporting' context is helpful, but the gaps around return format and mutation leave the description incomplete for full reliance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for both parameters (document and applyBrandKitNormalization), giving 100% coverage. The tool description adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates a multi-page design document and returns a QA report, with a specific verb ('Validate') and resource ('multi-page design document'). It distinguishes itself from sibling tools like export_design_document and check_design_policy by explicitly covering canvas bounds, safe area, text contrast, and brand kit compliance. The name 'create_design_document' is somewhat misleading, but the description itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear contextual guidance: 'Use this before exporting.' This tells the agent when to invoke the tool. However, it does not mention alternatives or when not to use it, so it lacks the explicit exclusions needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_elementA
Create a shape element (rectangle, ellipse, text, board, svg) on a Penpot page. Use get_constraints FIRST to understand layout boundaries before creating elements.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| name | Yes | Layer name (semantic, e.g. 'hero-background') | |
| text | No | Text content (for type=text) | |
| type | Yes | Shape type to create | |
| width | No | Width in px | |
| fileId | Yes | Penpot file ID | |
| height | No | Height in px | |
| pageId | Yes | Target page ID | |
| fillColor | No | Fill color hex (e.g. #6366f1) | |
| svgContent | No | SVG string (for type=svg) | |
| cornerRadius | No | Corner radius in px |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states that elements are created and lists types, but fails to mention permissions, side effects, or return value. For a 12-parameter mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines purpose with specifics, second gives a crucial prerequisite. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters, no output schema, and no annotations, the description is too brief. It doesn't cover what happens after creation (e.g., response, element ID), error cases, or constraints like positioning rules.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond summarizing shape types and mentioning get_constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'create' and the resource 'shape element on a Penpot page', listing specific types. It distinguishes from siblings like update_element and delete_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear prerequisite: 'Use get_constraints FIRST to understand layout boundaries before creating elements.' This guides when to use this tool relative to a sibling, but doesn't explicitly mention alternative creation methods like import_figma.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_from_templateA
Create an original, parameterized design document from a registered channel template. Returns the completed document, filled slots, and automated QA report.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Only the template's declared content slots | |
| templateId | Yes | Registered template id, such as card-news-cover |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the return value (completed document, filled slots, automated QA report) and implies a non-destructive creation operation. It lacks details on side effects or permissions, but for a create tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary purpose and followed by the return value. Every word adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters and no output schema, the description sufficiently covers what it does and what it returns. It does not address error conditions or prerequisites, but given the tool's simplicity, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds the concepts of 'parameterized' and 'filled slots', reinforcing the template-based input but not providing additional syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the specific resource ('original, parameterized design document from a registered channel template'). It distinguishes itself from sibling tools like create_design_document by emphasizing the template-based source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when a registered channel template exists and a parameterized document is desired. It does not explicitly mention alternatives or exclusions, but the template-specific context provides clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_elementA
Delete a shape from a Penpot page. Use with caution — this is irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | Penpot file ID | |
| pageId | Yes | Page ID containing the element | |
| shapeId | Yes | ID of the shape to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It mentions irreversibility, a key trait, but omits details like required permissions, cascading effects, or whether the action is logged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear, front-loaded sentences with no fluff. The warning could be integrated but is separate; overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with three required parameters and no output schema, the description is minimally adequate. It covers purpose and a key caution, but lacks context on side effects or confirmation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all parameters, so the baseline is 3. The description adds no extra meaning beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a shape from a Penpot page, using a specific verb-resource pair. It distinguishes from sibling tools like create_element and update_element by focusing on deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description warns to use with caution due to irreversibility, implying it's for permanent removal. However, it does not explicitly state when not to use or suggest alternatives like update_element for modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_design_documentA
Export a design document to SVG, PNG, JPG, or multi-page PDF. Export is refused when automated QA fails. Files are written inside the configured export root only.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Output pixel width | |
| format | Yes | Export format | |
| document | Yes | Design document to export | |
| fontFiles | No | Absolute font file paths for deterministic text rendering | |
| outputDirectory | Yes | Directory for exported files, resolved inside the configured output root | |
| transparentBackground | No | PNG only. Keep alpha instead of flattening onto the page background |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does add meaningful behavioral context: 'Export is refused when automated QA fails' and 'Files are written inside the configured export root only'. It does not disclose return value, overwrite behavior, or permission requirements, but the disclosed constraints are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the action and formats, the second states two key constraints. It is front-loaded, concise, and every sentence contributes valuable information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex input schema and no output schema, the description would benefit from explaining what the export returns (e.g., file paths) and reconciling the format list with the schema enum. The QA refusal and output root constraints are helpful, but important behavioral aspects like return value and handling of existing files are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The tool description does not add parameter semantics beyond the schema, and the format list in the description only includes a subset of the schema's enum values, which could cause confusion about valid format parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (export), resource (design document), and formats, distinguishing it from sibling tools. However, the format list 'SVG, PNG, JPG, or multi-page PDF' is a subset of the schema enum (which also includes pptx, gif, mp4), creating a potential mismatch that could mislead an agent about supported formats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for using this tool to export design documents, and there is no other export sibling tool, so the usage is implicitly distinct. It does not explicitly mention when not to use it or name alternatives, but the purpose is sufficiently clear to guide tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_componentsA
List components in a Penpot file with their variants. Use to understand available building blocks before generating UI.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | Penpot file ID | |
| filter | No | Filter components by name/path (case-insensitive substring match) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description implies read-only 'list' behavior. Discloses that variants are included, adding value beyond schema. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states action, second gives usage context. No fluff, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers purpose and usage context. No output schema, but mentions 'variants' to hint at return content. Could be more explicit about return format, but sufficient for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for both parameters. Description does not add parameter-specific meaning beyond schema. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'list', resource 'components in a Penpot file', and includes 'with their variants'. Distinguishes from siblings like get_tokens and get_constraints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use to understand available building blocks before generating UI', providing context for when to use. No mention of when-not or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_constraintsA
Get layout constraints and design guardrails for a Penpot file. Returns spacing scale, color tokens, typography scale, and MUST/MUST NOT rules. Call this BEFORE generating any UI to avoid layout overflow and brand inconsistency.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | Penpot file ID | |
| pageId | No | Specific page ID (optional, defaults to all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present; description carries full burden. It discloses read-only nature and key outputs but omits details like error handling or side effects. Adequate for a simple read operation but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two-sentence description is succinct, front-loads purpose and output, then adds usage guidance. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, key outputs, and when to call. Lacks output schema but describes return contents sufficiently. Minor gap: no mention of response format, but acceptable for tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. Description adds no further semantic detail beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves layout constraints and design guardrails, specifying exact return types (spacing, colors, typography, rules). Distinguishes from siblings like get_tokens by including MUST/MUST NOT rules, making purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit directive to call this tool before generating UI to prevent layout issues. Lacks explicit alternatives but contextually fits as a prerequisite step among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_contextA
Extract compressed brand context from a Penpot file. Returns design tokens, components, pages, and layout constraints in a token-efficient format. Use this FIRST to understand the design system before generating any UI.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | Penpot file ID to extract brand context from | |
| format | No | Output format: 'compact' for LLM-optimized text, 'json' for structured data | compact |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. The verb 'extract' strongly implies a read-only, non-destructive operation. It also mentions 'compressed' and 'token-efficient format,' which are behavioral traits. However, it does not explicitly state safety or lack of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. Each sentence adds value: the first defines the action and outputs, the second provides usage guidance. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what is returned (tokens, components, pages, constraints) and the output format variants, but does not detail the structure or presence of an output schema. Given the complexity of aggregating brand context and no output schema, this is moderately complete but could benefit from mentioning response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no new meaning beyond the schema. The description does not elaborate on parameter values or provide examples. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it extracts compressed brand context and lists specific outputs (design tokens, components, pages, layout constraints). It distinguishes from sibling tools (get_components, get_tokens, etc.) that focus on individual aspects, making the tool's aggregative purpose obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance to use this tool FIRST before any UI generation, implying it provides essential context. This also advises against using specialized tools prematurely, establishing a clear usage hierarchy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_layoutA
Get the layout structure of a Penpot page as a compact tree. Shows frame hierarchy, layout types (flex/grid), gaps, and sizing. Use to understand spatial structure before creating or modifying elements.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Max nesting depth to include (default: 2, max: 5) | |
| fileId | Yes | Penpot file ID | |
| pageId | Yes | Page ID to inspect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It explains the output is a compact tree with specific details, implying a read-only operation. However, it does not explicitly state it is non-mutating, list required permissions, or describe potential errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no redundancy: first states purpose, second details output content, third provides usage guidance. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately hints at return type ('compact tree') and content. It could be improved by explicitly stating it is read-only and clarifying the depth parameter's effect. Overall, sufficient for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are described in the schema (100% coverage). The description adds context about the output but does not enhance parameter meaning beyond the schema. Therefore, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the layout structure of a Penpot page as a compact tree, detailing frame hierarchy, layout types, gaps, and sizing. This distinguishes it from siblings like 'create_element' or 'get_components', which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by stating 'Use to understand spatial structure before creating or modifying elements,' indicating when to use it. However, it does not explicitly mention when not to use it nor name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tokensA
Extract design tokens (colors, typography, spacing) from a Penpot file. Returns structured token data for use in code generation.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | Penpot file ID | |
| category | No | Token category to extract | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'Extract' (implying read-only) and 'returns structured token data', but lacks details on permissions, side effects, rate limits, or output format specifics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundant words. The first sentence front-loads the verb and resource, making the purpose immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple extraction tool with 2 well-described parameters, the description is adequate but lacks output schema details and any behavioral guarantees. Given no annotations, more context (e.g., return format) would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by contextualizing the output for code generation and explicitly listing the token categories (colors, typography, spacing) that align with the enum, reinforcing parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Extract', the resource 'design tokens (colors, typography, spacing) from a Penpot file', and the purpose 'for use in code generation'. It distinguishes itself from sibling tools like get_components by focusing on token extraction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for code generation but does not explicitly state when to use this tool versus alternatives (e.g., get_components, get_design_context). No when-not-to-use or prerequisite guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_figmaA
Import a Figma file's design system into Penpot. Converts colors, typography, components, and page structure. Use dryRun=true first to preview the conversion before writing.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | If true, only preview conversion without writing to Penpot | |
| figmaToken | Yes | Figma Personal Access Token | |
| figmaFileKey | Yes | Figma file key (from URL: figma.com/file/<KEY>/...) | |
| penpotFileId | No | Target Penpot file ID (if omitted, returns conversion preview only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits. It mentions conversion of design elements and the dry run feature, but lacks details on mutability (overwrite vs. create), idempotency, required permissions, or async behavior. Basic but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. The first sets the purpose, the second provides a key usage tip. No extraneous words, and it is front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of an import tool with no output schema or annotations, the description covers core functionality and a dry run recommendation but omits important details like return values (preview vs. actual), error handling, or whether the operation is synchronous. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 4 parameters. The description adds context for the dryRun parameter ('Use dryRun=true first'), but the schema already explains each parameter's meaning. The description does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool imports a Figma file's design system into Penpot, specifying the converted elements (colors, typography, components, page structure). It uses a specific verb ('Import') and resource ('Figma file's design system'), and is distinct from sibling tools like get_components or create_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to use dryRun=true first to preview conversion before writing, providing clear usage context. However, it does not specify when not to use this tool or offer alternatives, missing some aspects of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_open_designA
Import an Open Design handoff bundle (manifest.json + SVG entry + optional tokens.css) into a Penpot file. Converts SVG shapes (rect/circle/ellipse/path/text), extracts CSS custom properties to canonical tokens, and reports a structured loss report. Use dryRun=true first to preview the conversion and loss items before writing.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | 같은 content hash여도 삭제·재생성 (Penpot 수동 편집 drift 복구) | |
| dryRun | No | true면 Penpot 쓰기·import 기록 저장 없이 미리보기 | |
| bundleDir | Yes | handoff 번들 디렉터리 (manifest.json + SVG 엔트리 + 선택 tokens.css) | |
| penpotFileId | No | 대상 Penpot 파일 ID (미제공 시 변환 미리보기만 반환) | |
| semanticRoleOverrides | No | canonical 토큰 semanticRole override — 키는 커스텀 프로퍼티 이름 (예: --color-primary) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing side effects. It reveals conversion scope (shapes, tokens, loss report) and warns about writing, but does not describe what happens on write (overwrite, merge, permissions) or any other side effects beyond the dryRun preview.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states purpose and scope, the second gives a specific usage recommendation. Information is front-loaded and every sentence earns its place without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description explains inputs, conversion behavior, and return value (loss report). It lacks explicit return-value structure, but the loss report mention and dryRun guidance are sufficient for a complex import tool with five parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal extra parameter context: it clarifies the bundle format (manifest.json + SVG + tokens.css) but does not significantly extend understanding beyond the schema's per-property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Import an Open Design handoff bundle') with a defined resource ('into a Penpot file') and enumerates concrete conversion behaviors (SVG shapes, CSS custom properties, tokens, loss report). This differentiates it from sibling import_figma by naming the Open Design format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to use dryRun=true first for preview, which is a clear usage guideline and implies the alternative of executing the import. It does not explicitly exclude alternative tools, but provides enough context about the intended workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_projectsA
List design projects saved inside the configured project root in deterministic id order.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the deterministic ordering and the location, which is useful. However, it does not describe the return format (e.g., array of project objects, only IDs), pagination, or error conditions, leaving the agent to infer the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential information without redundancy. It is appropriately sized for a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and zero parameters, the description is minimal. It states what is listed and the ordering, but it omits the return structure and any edge cases. While adequate for a simple tool, it lacks full completeness for an agent to know exactly what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (empty schema). The description adds no parameter details, which is expected. Per the baseline for zero parameters, this scores a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List design projects' with a specific scope ('saved inside the configured project root') and a distinguishing detail ('deterministic id order'). This differentiates it from sibling tools like list_files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool over alternatives such as list_files or load_design_project. The description only gives the scope (configured project root) but no exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesA
List Penpot files accessible to the authenticated user. Use to discover available design files.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries burden. States it lists files accessible to user (implying read-only), but lacks details on pagination, ordering, or what subset of files are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Ultra-concise single sentence with front-loaded action. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a simple parameterless list tool. Mentions target users and purpose, but could specify file type or result structure more precisely given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, schema coverage 100%. Description adds no parameter info since none exist. Baseline 4 for 0-param tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states it lists Penpot files and mentions discoverability, clearly distinguishing from sibling tools like create_element or get_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Says to use for discovering available design files, providing clear context. Does not explicitly mention when not to use or alternatives, but the purpose is straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_size_presetsA
List canvas size presets for social, video, blog, presentation, and print output. Call this before creating a design document so the canvas matches the target channel.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional preset category filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only operation ('List') and provides context ('so the canvas matches the target channel'), but it does not disclose return format, pagination, authentication requirements, or any limitations. This is adequate but lacks depth for a tool with no structured safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, with the primary action front-loaded. Both sentences are informative: the first states what the tool does, the second explains when to use it. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one optional parameter, no output schema), the description adequately covers its purpose and use case. It does not describe the exact structure of the returned presets, but the tool's function is clear and the missing details are minor in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the only parameter 'category' with a description ('Optional preset category filter') and an enum covering all categories. The tool description adds no additional detail beyond the schema, so it stays at the baseline for 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'List canvas size presets' and specifies the resource (canvas size presets) plus the categories (social, video, blog, presentation, and print). This distinguishes it from sibling tools like get_page_layout or get_design_context, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Call this before creating a design document so the canvas matches the target channel.' This clearly explains a key use case, but it does not mention when not to use the tool or name alternative tools, falling short of the highest standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_design_projectA
Load a saved design project envelope and its normalized document for further editing.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Saved project id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It does not state whether the operation is read-only, whether any side effects occur (e.g., opening an editing session), or what the return value contains. The metaphor of 'envelope' and 'normalized document' is left unexplained, leaving the agent uncertain about the operation's effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the essential purpose and context without unnecessary details. It is well-structured and front-loaded with the action and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description does not explain what is returned or what state changes occur after loading. Given the absence of annotations and output details, the description is incomplete for a tool that is a prerequisite for editing workflows.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the 'id' parameter as 'Saved project id' with full coverage. The tool description adds no additional meaning beyond calling it 'saved', so the baseline of 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Load' and clearly identifies the resource ('saved design project envelope and its normalized document') and the purpose ('for further editing'). It distinguishes itself from sibling tools like save_design_project and list_design_projects by focusing on loading a specific project for editing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for further editing' provides clear context for when this tool should be used—when an existing project needs to be loaded as a precursor to modification. It does not explicitly name alternatives or exclusions, but the usage context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_design_imageA
Apply ordered deterministic image operations: exact crop, high-quality scale, solid canvas padding, flat-background flood-fill removal, and transparent-margin trimming. Background removal is classical, not AI matting.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Image path resolved inside the configured asset root | |
| operations | Yes | Ordered deterministic image operations | |
| outputFile | No | PNG filename only, without path separators | processed-image.png |
| outputDirectory | Yes | Directory for the PNG result, inside the configured export root |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits: operations are 'ordered deterministic' and background removal is 'classical, not AI matting'. This adds context beyond the schema, especially since no annotations are provided, though it does not cover failure modes or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, highly concise, and front-loaded with the core capability before detailing the operation types. Every word contributes value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema that fully explains all parameters, the description gives a solid high-level overview. However, with no output schema, it does not mention the return value or confirmation of file output, leaving a minor gap for agents expecting a response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters with meaningful details (paths, filename constraints, operation arrays). The description's listing of operation types adds no new semantic meaning beyond what the schema already provides, so it remains at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Apply' and enumerates the exact operations (crop, scale, pad, remove-flat-background, trim-transparent), making the tool's function unambiguous. It clearly distinguishes from sibling design/layout tools which are unrelated to image processing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for image operations that require ordering, but it does not explicitly state when to use it versus alternatives or when not to use it. No exclusions or alternative tool references are given, so usage guidance relies on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_design_documentA
Resize a design document to a preset or explicit dimensions. Mode fill covers the canvas, fit keeps all content visible, original keeps layer sizes and only re-centres.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | fill covers the canvas, fit keeps everything visible, original keeps layer sizes, adapt redistributes the layout for a different aspect ratio | fill |
| width | No | Target width, when no preset is used | |
| height | No | Target height, when no preset is used | |
| preset | No | Size preset id, such as instagram-story | |
| document | Yes | Source design document | |
| lockAspectRatio | No | Derive the missing axis from the source ratio |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It partially discloses behavior by describing fill, fit, and original modes, but omits the 'adapt' mode and does not clarify whether the resize mutates the document in-place, affects all pages, or returns a new document. This is a moderate gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, with the primary action front-loaded in the first sentence and mode behaviors in the second. Every sentence provides useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with a nested document object and no output schema, the description is underspecified. It does not explain the return value, side effects, whether all pages are resized, or the meaning of the 'adapt' mode, leaving significant behavioral gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters (100% coverage), including mode semantics that are nearly identical to the tool description. The description adds only a condensed restatement and omits 'adapt', providing little extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Resize') and resource ('design document'), and explains the primary modes (fill, fit, original), distinguishing it from sibling tools like autolayout or arrange layers. The action and target are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to resize a design document) and explains the behavior of the key modes, guiding mode selection. However, it does not explicitly mention alternatives or exclusions relative to sibling tools like autolayout_design_document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_design_projectA
Save a reusable design project inside the configured project root. Drafts with QA failures are saved intentionally, and the response always reports their QA status.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Stable project id; letters, digits, ., _, and - only | |
| title | Yes | Human-readable project title | |
| brandKit | No | Reusable project-level brand kit | |
| document | Yes | Design document to persist |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It usefully discloses that QA-failing drafts are saved intentionally and that the response reports QA status. However, it omits other behavioral traits such as overwrite behavior, permissions, or error handling, leaving the transparency incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and every clause adds value. It is concise and well-structured with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has complex nested parameters and no output schema, but the schema fully describes inputs. The description covers the core behavior and QA reporting, but lacks details about return values beyond QA status, idempotency, or failure modes. This makes it adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all 4 parameters, so the schema already documents parameters. The description adds no extra parameter-level meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Save') with a specific resource ('reusable design project') and a scoped location ('configured project root'). This distinguishes it from siblings like load_design_project or create_design_document by emphasizing persistence and reusability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention any alternative tools, exclusions, or prerequisites. The QA-failure note implies a scenario but does not explicitly frame usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_elementB
Update an existing shape on a Penpot page. Can modify name, position, size, fill color, corner radius, and visibility.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| name | No | New layer name | |
| width | No | New width | |
| fileId | Yes | Penpot file ID | |
| height | No | New height | |
| pageId | Yes | Page ID containing the element | |
| shapeId | Yes | ID of the shape to update | |
| visible | No | Visibility toggle | |
| fillColor | No | New fill color hex | |
| cornerRadius | No | New corner radius |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states 'update' implies mutation, but fails to explain whether updates are partial (PATCH) or full, required permissions, side effects on other elements, or error behavior (e.g., shape not found).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, 20 words, front-loaded with action and modifiable attributes. Efficient but could be more structured with a sentence on typical usage or return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 11 parameters and no output schema. The description does not explain what the tool returns (e.g., updated shape object, confirmation). For a mutation tool, this is a significant gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds semantic grouping of parameters by category (name, position, size, etc.), providing context beyond the schema. However, it does not detail format constraints (e.g., hex color format, coordinate system).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (update), the resource (existing shape on a Penpot page), and lists the modifiable attributes (name, position, size, fill color, corner radius, visibility). This distinguishes it from sibling tools like create_element or delete_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites (e.g., obtaining shape ID via get_components) or contexts where this tool is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v0.6.0- Added
import_open_design
12 tool updates
v0.4.0- Added
arrange_design_layers - Added
autolayout_design_document - Added
check_design_policy - Added
create_design_document - Added
create_from_template - Added
export_design_document - Added
list_design_projects - Added
list_size_presets - Added
load_design_project - Added
process_design_image - Added
resize_design_document - Added
save_design_project
1 tool update
v0.3.0- Added
check_connection
10 tool updates
v0.1.0- First observed
create_element - First observed
delete_element - First observed
get_components - First observed
get_constraints - First observed
get_design_context - First observed
get_page_layout - First observed
get_tokens - First observed
import_figma - First observed
list_files - First observed
update_element
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose: listing files, retrieving design context/tokens/constraints/components/layout, creating/updating/deleting elements, and importing from Figma. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_components, create_element), making them predictable and easy to understand.
10 tools is appropriate for a design system manipulation server, covering essential operations without being overwhelming or insufficient.
Covers core CRUD for elements, design token/constraint retrieval, file listing, and Figma import. Missing page/file creation and token modification, but these are minor gaps given the focus on UI generation from existing designs.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The Figma MCP server brings Figma design context directly into your AI workflow.
Brand-safe MCP for AI agents to create editable, on-brand graphics and automate variants.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to create, modify, and manage Figma designs through natural language commands via a specialized MCP server and plugin bridge. It supports a wide range of operations including element creation, property modification, component management, and accessibility checks.13105MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that exposes your design system components and tokens to AI agents, preventing duplicate component creation and hardcoded token values.99MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that enables AI coding agents to read and write to a local-first HTML/CSS design canvas, bridging visual design and code generation.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that connects AI clients to Figma, enabling real-time reading, creation, and modification of designs using natural language.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Doyajin174/teguma'
If you have feedback or need assistance with the MCP directory API, please join our Discord server