killbottleneck-mcp
Official🧪 공개 베타. killBottleneck은 기능이 완성된 베타 상태입니다. — 클라우드와 자체 호스팅 버전 모두 마찬가지이며, 동일한 앱입니다. 여기서 테스트하는 것은 자체 호스팅 측면입니다: 설치, 리버스 프록시, 자체 SMTP, 업그레이드. 설치하고(아래 빠른 시작), 고장을 내보고, 무슨 일이 있었는지 알려주세요: 버그 → Issues, 아이디어 → Discussions. 베타가 조용해지면 v1.0이 출시됩니다.
프로젝트, 회사, 그리고 프로세스의 시각적 그림 — 사람과 AI 에이전트가 함께 작업하는 골 맵, 전적으로 자체 서버에서: 데이터가 회사를 절대 떠나지 않습니다. 오픈 소스 정신으로 공개되었지만, 호스팅 서비스로 재판매할 권리는 없습니다 — 라이선스 참조.

여기에는 외부 통신 기능이 없습니다. 기본 설치에서 서버는 어디에도 요청을 보내지 않으며, 앱은 타사 CDN에서 아무것도 로드하지 않습니다 — 글꼴도 포함하여, 자체 인스턴스에서 제공됩니다. 네트워크 밖으로 나갈 수 있는 모든 것은 사용자가 켜는 것입니다:
나가는 요청 | 발생 시점 | 끄는 방법 |
GitHub Releases API | 버전 확인, 사용자의 브라우저에서 — 서버가 아님 |
|
구성한 AI 엔드포인트 |
|
|
Google (로그인, Drive 선택기) |
| 비워 둠 (기본값) |
텔레메트리, 애널리틱스, 라이선스 확인이 없습니다.
단계를 수행하는 주체: 사람 또는 자동화 — 자체 에이전트를 위한 웹훅 계약 포함
외관 (스킨) · 알림 · 시간대 및 반복 템플릿
빠른 시작
필요한 것은 Docker뿐입니다. 그런 다음:
cp .env.example .env # optional — the defaults are fine
docker compose up -dkillBottleneck은 http://SERVER-IP:8090에서 실행됩니다. 로컬 네트워크의 동료들은 브라우저에서 열기만 하면 됩니다.
최초로 등록하는 사용자가 자동으로 관리자가 됩니다. 다른 사용자는 스스로 등록하거나, 관리자가 관리 메뉴에서 초대할 수 있습니다 (전달할 임시 비밀번호가 있는 계정이 생성됩니다).
Related MCP server: stablebaseline-mcp
AI 없이 할 수 있는 일
전체 골 맵 편집기(노드, 엣지, 상태, 메모), 사용자당 여러 맵, 골에 대한 댓글, 동료와 맵 공유(읽기/편집), 공개 맵, 이미지/PDF 내보내기.

“My day” 패널(홈 페이지와 작업 페이지 모두): 연체 / 오늘 / 일주일 이내 / 다른 사람을 막고 있는 항목의 클릭 가능한 개요로, 데이터에서 실시간으로 계산됩니다. 날짜 옆에 이름 날. 모바일용 세로형 PNG 내보내기 — 전체(작업 이름 포함) 및 익명(이름이 숨겨진, 소셜 미디어용). HTTPS에서는 **Share…**도 사용할 수 있습니다 (휴대폰의 기본 Web Share 대화상자, 타사 서비스 없음).
시간 추적: 상단 바의 ⏱ 타이머(한 번 클릭으로 “빈” 측정 시작 — 프로젝트/클라이언트/골은 실행 중 또는 이후에 할당), 맵의 모든 작업과 모든 골에 대한 타이머(측정은 상태를 절대 변경하지 않음 — 순전히 보조적), 기록이 있는 왼쪽 “시간 추적” 패널(시작–끝, 소급 할당), 사용자 메뉴의 “작업 시간” 대화상자(오늘/이번 주, 프로젝트 및 클라이언트별 세분화), 클라이언트 레지스트리(프로젝트→클라이언트, 따라서 시간도 클라이언트별로 합산), 그리고 12시간 후 잊어버린 타이머 자동 중지. 받은 편지함 동작: 메모(예: “클라이언트와 통화”)와 함께 중지된 할당되지 않은 측정값은 아이디어 보관함에 아이디어로도 저장됩니다.
휴대폰에서
동일한 인스턴스를 휴대폰에서 열면 단순화된 보기로 전환됩니다: 오늘의 작업, 체크 오프, 추가, 메시지 읽기 — 작은 화면에서 맵 캔버스와 씨름할 필요가 없습니다. 언제든 전체 보기로 되돌릴 수 있으며, 앱을 홈 화면에 추가(HTTPS에서)하면 네이티브 앱처럼 동작합니다.
단순화된 보기 가이드에서 자세히 알아보세요.
AI 기능 (선택 사항)

AI 어드바이저(골에서 맵 초안 작성, 브랜치 확장, 맵에 대한 채팅, AI 프로젝트 요약, 골에서 작업 제안, 텍스트/음성에서 맵)는 .env에서 KB_AI_PROVIDER를 통해 활성화됩니다:
api— killBottleneck API 계약과 호환되는 원격 AI 서비스: 제공업체에서 받은 주소와 토큰을 입력하세요. 자체 GPU나 유지보수가 필요 없습니다.ollama— 자체 로컬 모델: Ollama를 설치하고, 모델을 내려받은 후(ollama pull gpt-oss:20b)KB_AI_URL=http://IP:11434+KB_AI_MODEL=gpt-oss:20b를 설정하세요. 모든 것이 사용자 측에서 실행되며, 데이터가 네트워크 밖으로 나가지 않습니다. (기본 프롬프트; 음성 전사는 포함되지 않습니다.)custom— 동일한 API 계약을 따르는 자체 엔드포인트.
AI를 사용하면 맵 데이터는 선택한 엔드포인트로 전송됩니다; none(기본값)이면 어떤 것도 서버 밖으로 나가지 않습니다.
매일 AI 격려 메시지(My day 패널의 한 줄): “다른 사람을 막는 것 → 연체 → 오늘” 순으로 우선순위를 정한 1–2문장, 가끔 속담도 포함됩니다. 이것은 cron 작업(KB_SUMMARY_HOUR, 기본값 6)이 아침에 생성하며, 지난 KB_SUMMARY_ACTIVE_DAYS일(기본값 14, 0 = 모두) 이내에 로그인한 계정에 대해서만 생성됩니다; 나머지는 앱을 열 때 생성됩니다. 선택적으로 요약 전용의 (더 작고/빠른) 별도 모델을 사용할 수 있습니다: KB_SUMMARY_PROVIDER/URL/MODEL/TOKEN — 이것이 없으면 위의 일반 AI 구성이 사용됩니다. 패널은 AI 없이도 완전히 작동하며, 이 한 줄만 없을 뿐입니다. AI는 작업 목록을 절대 열거하지 않으며(작업 목록은 사용자 데이터에서 계산되어 클릭 가능), 작업 이름은 프롬프트에 들어가기 전에 정화됩니다.
MCP를 통한 AI 어시스턴트 (Claude Desktop, Claude Code, …)
killBottleneck에는 내장 MCP 서버(mcp/)가 포함되어 있습니다: AI 어시스턴트를 자체 인스턴스에 연결하면 맵이 대화식으로 만들어집니다 — “이 회의 노트로 맵을 만들어 줘”, 대량 편집, 완료된 항목 체크. 자체 호스팅과 호스팅 인스턴스에서 동일하게 작동하며 주소만 다릅니다.
앱에서: 사용자 메뉴 → API 키 → 읽기 및 쓰기 범위의 새 키 (읽기 전용이면 읽기 접근에 충분). 토큰은 한 번만 표시됩니다. 권장: 키에 만료일을 설정하고 사용을 중단하면 폐기하세요.
설치할 것은 없습니다 — 서버는 npm에
killbottleneck-mcp로 게시되어 있으므로,npx가 처음 사용 시 가져옵니다. (이 저장소에서 실행하는 것을 선호하나요?cd mcp && npm install후 아래npx명령 대신node /absolute/path/mcp/index.js를 사용하세요.)어시스턴트에 등록하세요:
Claude Code:
claude mcp add killbottleneck \ -e KB_URL=http://SERVER-IP:8090 \ -e KB_API_KEY=kb_user_... \ -- npx -y killbottleneck-mcpClaude Desktop (
claude_desktop_config.json→mcpServers):{ "mcpServers": { "killbottleneck": { "command": "npx", "args": ["-y", "killbottleneck-mcp"], "env": { "KB_URL": "http://SERVER-IP:8090", "KB_API_KEY": "kb_user_..." } } } }
도구: list_maps, get_map, create_map, add_nodes, update_node, delete_node
(추가 규칙 도구 포함). 담당자나 마감일이 있는 골은 작업입니다 — 별도의 작업 레코드는 없습니다.
보안: 키는 소유자의 맵에만 접근할 수 있습니다(앱에서와 동일); 공유 및 팀 맵은 의도적으로 키를 통해 접근할 수 없으며(현재로서는), 관리, AI 설정, 사용자도 절대 접근할 수 없습니다. 쓰기는 골과 작업을 추가/편집/삭제할 수 있습니다; 전체 맵은 API를 통해 삭제할 수 없으며, 맵의 최상위 노드도 삭제할 수 없습니다. 제한: 키당 분당 읽기 120회 + 쓰기 30회, 호출당 최대 200개 노드, 계정당 최대 20개 키. 열린 편집기와 함께 작업하는 것은 충돌 감지로 처리됩니다(편집기는 새로고침을 제안하고, 어시스턴트는 맵 자체를 다시 로드합니다). 참고: add_nodes는 전체 맵의 레이아웃을 다시 실행합니다. MCP 도구 출력은 영어입니다(어시스턴트는 항상 이해합니다); 서버 오류 메시지는 계정 언어로 도착합니다.
단계를 수행하는 주체: 사람 또는 자동화
맵의 모든 골에 대해 사람이 수행하는지 자동화가 수행하는지 지정할 수 있습니다. 그 자동화 뒤에 AI 에이전트가 있는지 예약된 cron 작업이 있는지는 사용자의 문제가 아닙니다 — 만드는 사람이 알고 있습니다.
중요: 골에 대한 책임자는 항상 사람입니다. 자동화된 단계에도 책임자가 있으며, 그 사람이 알림을 받고 그 골이 “My day”에 집계됩니다. 자동화가 작업을 수행하고, 사람이 이에 대해 책임을 집니다.
자동화된 단계에는 어떤 자동화가 수행하는지도 기록합니다 — 이것은 현재 상황에 대한 기록(“n8n이 이미 이 단계를 대신 수행하고 있습니다”)이지 명령이 아닙니다. 그래서 맵의 어떤 부분이 사람이 하고 어떤 부분이 기계가 하는지 한눈에 볼 수 있습니다.
“이것을 자동화하고 싶습니다”
어떤 골에서든 단계 자동화 요청을 체크할 수 있고, 선택적으로 이유를 설명하는 문장을 추가할 수 있습니다. 요청은 AI 에이전트 매니저에게 전달됩니다 — 역할과 별개로 사용자에게 설정된 별도 플래그입니다 (사용자 관리 → AI 매니저); 관리자와 일반 구성원 모두 자신의 역할과 함께 보유할 수 있습니다.
매니저가 자동화를 구축하고 골에 기록하면 요청은 자동으로 정리되고 요청자에게 메시지가 전송되어 자신의 골이 이제 자동화되었음을 알립니다. 전체 주기:
person: ☑ I would like this automated ("I upload subtitles by hand, 20 minutes")
↓
the AI manager gets a notification → decides → builds an n8n workflow
↓
the manager records it on the goal: "n8n — subtitle translation"
↓
the requester gets a notification: "your goal is now automated by n8n — subtitle translation"골에 첨부 파일
어떤 골에든 파일을 업로드할 수 있습니다. 자동화가 있는 골에서는 파일을 업로드하면 즉시 자동화가 시작됩니다 — 다른 곳에서 양식을 작성하는 대신 처리해야 할 것을 첨부하기만 하면 됩니다(일반적으로 자막, 원본 자료, 내보내기 파일).
첨부 파일은 프로젝트에 접근 권한이 있는 사람에게만 표시됩니다. 파일은 보호됩니다: 링크만으로는 어떤 정보도 얻을 수 없습니다.
AI 에이전트 레지스트리
AI 에이전트 매니저(또는 관리자)는 AI 에이전트 레지스트리에 자동화 디렉터리를 유지합니다: 이름, 웹훅 주소, 서명 비밀, 활성화/비활성화. 골에서 자동화는 이름으로 선택됩니다 — 팀원들은 주소나 비밀을 볼 수 없습니다. 골의 이름이 레지스트리의 에이전트와 일치하면 killBottleneck이 자체적으로 시작할 수 있습니다.
시작할 수 있는 사람. 각 에이전트는 허용된 이메일 주소 목록을 가질 수 있습니다. 빈 목록은 아무 지도나 편집할 수 있는 사람이라면 누구나 자동화를 시작할 수 있음을 의미합니다 — 회사 내부에서는 보통 문제없지만, 외부 계약자를 들이는 인스턴스에서는 제한하세요. 지도를 편집할 수 있는 사람이라면 여러분의 n8n 워크플로를 마음대로 시작하고 여기에 자신의 텍스트를 주입할 수 있기 때문입니다 (목표의 제목과 설명은 페이로드로 에이전트에 전달됩니다).
첨부 파일은 프로젝트당 200개로 제한되며, 인스턴스 전체에 대한 선택적 공간 제한도 설정할 수 있습니다 (KB_FILES_MB 단위는 MB, 0 = 업로드 완전 비활성화, 비어 있음 = 제한 없음 — 공유 디스크에 설정하여 호스팅 인스턴스가 디스크를 가득 채우지 못하게 하세요). ⚠️ 이전의 FLOWMAP_MAP_FILES_MB는 프로젝트당 할당량으로 기본값이 200MB였습니다 — 설정해 두었다면 여전히 적용되지만, 설정하지 않았다면 이제 공간 제한이 전혀 없습니다.
자동 실행: killBottleneck → n8n → 복귀
자동화는 다음 경우에 시작됩니다:
목표에 첨부 파일이 업로드되거나, 또는
목표의 차례가 되면 — 하위 목표를 기다리고 있었는데 하위 목표가 모두 방금 완료된 경우, 또는
누군가 수동으로 목표를 “진행 중”으로 전환한 경우 (이 방법으로 실패한 실행을 재시도할 수도 있습니다)
실행 중인 자동화는 결과를 보고하거나 만료되기 전에는 두 번 시작되지 않습니다.
나가는 요청 (에이전트 주소로 POST하며, X-Signature 헤더 = 에이전트의 비밀키를 사용한 본문 전체의 HMAC-SHA256):
{
"run_id": "…", "run_token": "kbr_…",
"callback_url": "https://your-instance/api/kb/agent-callback",
"files_url": "https://your-instance/api/kb/agent-files?run_token=kbr_…",
"files": [{ "id": "…", "name": "subtitles.sbv", "size": 1234, "url": "https://…?run_token=kbr_…" }],
"map_id": "…", "map_title": "…",
"node_id": "…", "node_title": "…",
"description": "…", "deadline": "2026-08-01",
"owner": "responsible@company.com", "triggered_by": "who@company.com"
}에이전트는 실행 토큰을 사용하여 파일을 다운로드합니다. files_url은 실시간 목록이므로 실행 중에 추가된 첨부 파일도 볼 수 있습니다. 토큰은 결과가 보고되면 만료됩니다.
결과 보고 (callback_url으로 POST하며, 로그인 없음 — 실행 토큰이 인증합니다):
{ "run_id": "…", "run_token": "kbr_…", "status": "done", "result": "Translated into 3 languages" }status는 done 또는 failed입니다. 토큰은 하나의 목표와 하나의 보고에만 유효합니다 — 같은 토큰으로 두 번째 호출은 통과되지 않습니다.
done 이후 목표는 완료되며, 이로 인해 이후 프로세스가 진행됩니다: 다음 목표의 차단이 해제되고 담당자에게 시작할 수 있다는 알림이 전송됩니다. 다음 목표도 자동화되어 있다면 바로 시작됩니다 — 따라서 단계들이 스스로 연결됩니다.
에이전트가 콜백할 주소를 설정하세요. callback_url은 브라우저가 아니라 서버가 조합합니다 — 구성하지 않으면 PocketBase의 “Application URL”을 사용하며, 설치 후에는 http://localhost:8090입니다. 따라서 다른 머신에서 실행되는 에이전트는 자기 자신을 호출하게 되고, 실행은 타임아웃될 때까지 멈춰 있습니다. .env에서:
KB_PUBLIC_URL=https://killbottleneck.yourcompany.com
KB_AGENT_TIMEOUT_MIN=90에이전트가 도달할 수 있는 주소라면 무엇이든 괜찮습니다 — 자체 호스팅 환경에서는 LAN의 http://192.168.1.10:8090이면 충분합니다. 호스팅 인스턴스(killBottleneck Cloud)는 이 값이 자동으로 설정됩니다.
n8n이 같은 네트워크에 있나요? 웹훅 주소는 서버가 호출하므로 전형적인 내부 네트워크 스캔 벡터가 됩니다 — 따라서 기본적으로 killBottleneck은 사설 주소 호출을 거부합니다 (10.x, 192.168.x, 172.16–31.x, localhost, 클라우드 메타데이터). n8n이 killBottleneck 옆에서 실행되는 자체 호스팅 환경에서는 이를 허용하세요:
KB_ALLOW_PRIVATE_WEBHOOKS=1이 설정이 없으면 실행은 실패로 표시되고 AI 에이전트 관리자에게 이유를 설명하는 메시지가 전달됩니다. 에이전트에는 비밀키가 반드시 입력되어 있어야 합니다 — 비밀키가 없으면 빈 키로 요청이 서명되어 수신자가 아무런 보호도 받지 못하므로, killBottleneck은 그러한 실행을 아예 거부합니다. 현재 적용되는 주소는 항상 AI 에이전트 레지스트리 하단에 표시되며, localhost를 가리킬 때 경고합니다. 이것은 자동화에만 해당됩니다 — 자동화를 사용하지 않는다면 이 변수를 설정할 필요가 없습니다.
자동화가 완료되지 않는 경우
실행 상태는 목표의 대화상자에서 바로 확인할 수 있습니다 — 대기 중 / 실행 중 / 완료 / 실패, 실패 시 사유도 표시됩니다. 실행을 재시작하려면 목표를 다시 “진행 중”으로 전환하면 됩니다.
각 상태의 의미:
상태 | 의미 |
대기 중 | 실행이 대기열에 있으며 1분 이내에 전송됩니다 (단일 지도 저장은 많아야 몇 개의 웹훅만 보내므로 누구도 기다리지 않습니다) |
실행 중 | 에이전트가 작업을 수락했으며 아직 결과를 보고하지 않았습니다 |
완료 / 실패 | 에이전트가 결과를 보고했거나 실행이 만료되었습니다 |
KB_AGENT_TIMEOUT_MIN(기본 90)분 이내에 결과를 보고하지 않는 실행은 감시 프로세스에 의해 실패로 표시되며, 담당자와 AI 에이전트 관리자 모두에게 알림이 전송됩니다 — 따라서 목표가 조용히 멈춰 있는 일은 없습니다.
가장 흔한 실패 원인: 에이전트가 레지스트리에 없거나 비활성화된 경우, 비밀키가 없는 경우, 주소가 사설 네트워크를 가리키는데 KB_ALLOW_PRIVATE_WEBHOOKS=1이 없는 경우, 또는 웹훅에 연결할 수 없는 경우입니다. 자세한 내용(연결 오류 포함)은 서버 로그(docker compose logs killbottleneck)에 있습니다 — 앱에는 의도적으로 표시되지 않습니다.
프로젝트를 다른 곳으로 이동 (JSON 내보내기 및 가져오기)
프로젝트는 .json 파일로 내보내고 다른 곳으로 가져올 수 있습니다 — 동료 간, 인스턴스 간 모두 가능합니다. 편집기에서: 내보내기 → JSON 내보내기를 선택하고 이름 포함 또는 이름 없음을 선택합니다. 가져오기는 “새 프로젝트” 버튼 옆 메뉴에 있습니다.
파일에는 다음이 포함됩니다: 제목, 설명, 전체 목표 구조(상태, 기한, 각 단계를 수행하는 사람, 자동화 요청 포함) 및 여기에 연결된 작업. “이름 없음” 옵션은 담당자와 할당자를 모두 지웁니다 — 자동화 이름은 프로세스를 설명하므로 유지됩니다.
Asana 또는 Trello에서 전환: 동일한 가져오기에서 Asana 프로젝트 내보내기(CSV) 및 **Trello 보드 내보내기(JSON)**도 허용합니다. 섹션/리스트는 지도 분기가 되고, 작업/카드는 목표가 되며, 하위 작업과 체크리스트는 하위 목표가 됩니다. 상태(완료), 기한, 설명, 그리고 Asana의 경우 할당자도 이전됩니다(이 인스턴스에 없는 이메일은 지워지고 개수가 표시됩니다). 모든 것은 브라우저에서 로컬로 변환됩니다 — Asana나 Trello를 호출하지 않습니다. 제한: 파일당 400개 항목.
전송되지 않는 것: 첨부 파일, 댓글, 공유, 보관 및 번호 시리즈. 가져오기는 항상 가져온 사람이 소유하는 새 프로젝트를 만들고, 목표 식별자를 재생성하며(원본과 충돌하지 않도록), 누구와도 공유하지 않고 알림도 보내지 않습니다 — 공동 작업하려면 프로젝트를 수동으로 공유해야 합니다. 이 인스턴스에 존재하지 않는 이메일 주소에 대한 할당은 삭제되며, 가져오기에서 그 개수를 알려줍니다.
외관 (스킨)

아바타 메뉴 → 외관에서 모든 사람이 스킨을 선택합니다: Indigo(기본값), High contrast, Terminal 또는 Paper. 선택은 계정에 저장되므로 모든 기기, 라이트/다크 모드, 그리고 간소화된 라이트 보기에서도 적용됩니다(라이트 보기의 선택기는 바닥글에 있습니다).
사용자 정의 스킨: 스킨은 작은 JSON 파일(kb-skin v1 형식)입니다 — 색상(HSL), 글꼴 및 모서리 반경 세트입니다. 외관 대화상자에서 현재 스킨을 내보낼 수 있고(기본 제공 스킨의 경우 정의 — “가져다가 조정하세요”) 다른 사람의 스킨을 파일에서 또는 붙여넣기로 가져올 수 있습니다. 설계상 임의의 CSS가 아닙니다: 값은 클라이언트와 서버 모두에서 화이트리스트를 통과하므로, 공유된 스킨은 아무것도 실행하거나 보낼 수 없습니다. 웹 글꼴은 다운로드되지 않습니다 — 앱에 번들된 글꼴과 시스템 글꼴만 사용됩니다; 알 수 없는 글꼴은 스택의 다음 글꼴로 무해하게 대체됩니다.
회사 외관: 관리자는 조직 관리에서 인스턴스 전체 기본 스킨을 설정합니다 — 자신의 스킨을 선택하지 않은 모든 사람에게 적용되며, 로그인 화면에도 적용됩니다. 사용자가 직접 선택한 스킨이 항상 우선합니다.
v1에서 스킨이 변경하지 않는 것(설계상): 상태 색상(빨강/주황/초록 = 기한 초과/진행 중/완료는 모든 곳에서 동일하게 읽을 수 있음). 지도 내보내기(PNG/PDF)는 화면 그대로입니다 — 활성 스킨과 라이트/다크 모드, 배경색까지 캡처됩니다. 배경 아트웍만 제외됩니다. 프로젝트 대시보드 PDF와 “My day” 이미지는 의도적으로 라이트 모드로 유지되어 누구에게나 보낼 수 있습니다.
커뮤니티 스킨 및 오픈 소스 스킨 편집기: https://github.com/tengolabs/killbottleneck-skins — 스킨은 무료 데이터(CC0)이며, 편집기는 MIT입니다. 브라우저에서 바로 편집기를 사용해 보세요, 설치할 것 없이: https://tengolabs.github.io/killbottleneck-skins/.
알림
헤더의 종 아이콘은 최근 20개 이벤트를 표시합니다. 필터와 페이지네이션이 있는 전체 목록은 /notifications에 있습니다. 알림 설정도 여기에 있으므로 모든 사람이 개별 유형을 켜거나 끌 수 있습니다.
알림은 다음 경우에 전송됩니다: 작업이나 목표가 나에게 할당된 경우(이미 존재하는 지도에서도), 작업이나 목표에 댓글이 달린 경우, 프로젝트가 나와 공유된 경우, 대기 중인 목표의 차단이 해제된 경우, 기한이 임박했거나 놓친 경우(항목별이 아니라 하루에 한 번 요약), 자동화 요청 및 그 이행, 자동화 완료 또는 실패, 타이머가 자동으로 중지된 경우.
기한 알림은 아침에 전송됩니다. 시간은 KB_DEADLINE_HOUR로 설정합니다(기본 7, 컨테이너의 로컬 시간). 읽은 알림은 30일 후에 정리됩니다.
이메일 채널은 준비되어 있지만 SMTP가 구성된 후에만 활성화됩니다(아래 참조) — 그 전까지는 설정에서 회색으로 비활성화되어 있습니다.
시간대 및 반복 템플릿
템플릿을 설정하여 템플릿에서 프로젝트가 자동으로 생성되도록 할 수 있습니다(예: “매주 월요일” 또는 “매월 N일”). “월요일”과 생성 시간을 현지 시간에 맞추려면 .env에서 설정하세요:
TZ=Europe/Prague # your time zone (empty = UTC)
KB_AUTO_HOUR=5 # the hour (0–23) from which projects are created on a given day서버가 그 시간에 꺼져 있었다면(전원이 꺼진 경우), 프로젝트는 같은 날의 다음 시간대에 생성됩니다 — 건너뛰지 않습니다.
시간대는 인스턴스 전체에 적용됩니다 — 여러 시간대에 걸친 팀의 경우 각 사용자의 시간대가 아니라 서버의 시간대가 사용됩니다.
반복 작업(완료 시 기한 이동)은 의도적으로 UTC로 계산되므로 자정을 넘거나 일광 절약 시간 변경이 있어도 하루씩 밀리지 않습니다.
데이터 및 백업
모든 데이터는 ./pb_data 폴더에 있습니다(SQLite + 업로드된 파일). 번들된 스크립트를 사용하여 백업하세요:
./backup.sh # creates kb-backup-YYYY-MM-DD.tgz
./backup.sh restore FILE # restores data from a backup(수동으로: 백업하려면 pb_data 폴더를 복사하고, 복원하려면 다시 넣으세요.)
팀
하나의 인스턴스 = 하나의 팀. 역할: 관리자(사용자와 역할, 조직 설정 — 이름 및 로고 관리), 매니저(구성원 초대, 모든 작업 확인 및 관리), 구성원(자신의 작업과 공유된 지도). 관리 화면이나 작업(Tasks) 페이지에서 바로 사람들을 초대할 수 있습니다.
등록 및 등록 키
처음 등록하는 계정이 관리자가 됩니다. 인스턴스가 인터넷에서 접근 가능하다면 .env에서 KB_SETUP_CODE를 설정하세요 — 그러면 모든 등록에 해당 키가 필요하므로, 주소를 아는 사람이라면 누구나 계정을 만들 수 없습니다. 들어오게 하려는 사람들에게 키를 나눠주세요. 게다가 관리자는 사용자를 직접 초대할 수 있습니다(초대에는 키가 필요 없습니다). 비어 있음 = 키 없이 등록.
Google로 로그인 (선택 사항)
사용자는 이메일과 비밀번호 대신 Google로 로그인할 수 있습니다. 설정 방법:
Google Cloud Console에서 APIs & Services → Credentials → Create credentials → OAuth client ID → Web application 유형을 선택합니다.
Authorized redirect URIs 아래에
https://YOUR-DOMAIN/api/oauth2-redirect를 추가합니다.Client ID와 Client secret을
.env에 복사합니다:KB_GOOGLE_CLIENT_ID=…apps.googleusercontent.com KB_GOOGLE_CLIENT_SECRET=…docker compose up -d— “Sign in with Google” 버튼이 자동으로 나타납니다.
변수가 비어 있으면 = Google 로그인이 꺼져 있습니다(버튼이 표시되지 않음). 등록 키가 있는 인스턴스에서 Google 로그인은 기존 사용자에게만 해당됩니다. Google을 통해 새 계정을 만들 수 없으며(키를 입력할 방법이 없음), 따라서 계정은 먼저 키로 생성해야 합니다.
목표에 첨부 파일: 파일 또는 링크
어떤 목표에든 업로드된 파일 또는 링크(Drive, OneDrive, SharePoint, 특정 이메일, https://의 모든 것)를 고정할 수 있습니다. 링크에는 세 가지 장점이 있습니다. 공간을 차지하지 않고, 팀이 항상 최신 버전을 열며, 파일이 있는 위치에 그대로 유지됩니다.
업로드된 파일이 차지할 수 있는 공간은 KB_FILES_MB로 제어됩니다. 이는 프로젝트별이 아니라 인스턴스 전체에 적용됩니다.
값 | 동작 |
비어 있음 | 제한 없음(자체 호스팅 기본값 — 여러분의 디스크이기 때문) |
숫자 | MB 단위 상한, 예: |
| 업로드 비활성화, 첨부 파일은 링크만 가능 |
호스팅된 인스턴스는 0으로 실행됩니다. 그러면 제공자가 문서를 보관하지 않고 문서에 대한 링크만 보관합니다. 링크는 http:// 또는 https://로 시작해야 합니다. 네트워크 드라이브 경로(\\server\folder)는 보안상의 이유로 브라우저에서 열리지 않으므로 설명에 넣어야 합니다.
이메일(SMTP, 선택 사항)
SMTP는 PocketBase 관리 UI에서 구성합니다: http://SERVER-IP:8090/_/ → 설정 → 메일 설정(슈퍼유저 계정은 처음 시작할 때 생성됩니다 — 링크는 docker compose logs에서 찾을 수 있습니다). SMTP가 구성되면:
새 사용자 초대가 이메일로 전송됩니다(비밀번호 설정 링크 포함) — SMTP가 없으면 관리자에게 일시적인 비밀번호가 표시되어 수동으로 전달해야 합니다.
셀프 서비스 비밀번호 재설정이 작동합니다.
HTTPS(외부에서 접근)
killBottleneck 자체는 HTTP로 실행됩니다. LAN 외부에서 접근하려면 VPN 또는 리버스 프록시를 사용하세요. Caddy를 사용한 예(자동 HTTPS 인증서):
# Caddyfile
killbottleneck.your-domain.com {
reverse_proxy 127.0.0.1:8090
}docker-compose.override.yml을 통해 compose에 추가하세요(이 파일은 업데이트로 덮어쓰이지 않습니다):
services:
caddy:
image: caddy:2
ports: ["80:80", "443:443"]
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
volumes:
caddy_data:HTTPS는 또한 'My day' 이미지에 대한 공유… (Web Share API — 휴대전화의 기본 공유 대화상자, 타사 서비스 없음) 및 앱을 휴대전화 홈 화면에 추가 (서비스 워커는 보안 컨텍스트에서만 실행됨)를 활성화합니다. 브라우저는 일반 HTTP에서는 이 두 가지를 허용하지 않습니다. HTTPS 도메인에서는 구성 없이 자동으로 나타납니다.
프록시에서 압축을 켜세요 — 세 배의 절약 효과
killBottleneck은 응답을 자체적으로 압축하지 않습니다(과도하게 큰 본문을 거부할 때 API 동작을 깨뜨리지 않고 PocketBase에서 안전하게 활성화할 방법이 없습니다). 주요 프론트엔드 파일은 압축되지 않았을 때 488kB, gzip되었을 때 157kB입니다. 모바일 데이터에서는 처음 열 때 가장 크게 느껴지는 차이입니다. 한 줄이면 충분합니다:
# Caddyfile
killbottleneck.your-domain.com {
encode gzip zstd
reverse_proxy 127.0.0.1:8090
}(nginx에서는: gzip on; gzip_types application/javascript text/css;. Cloudflare 또는 유사한 서비스 뒤에서는 자동으로 처리됩니다 — 구성할 것이 없습니다.)
업데이트
git pull # or download the new version
docker compose up -d --build데이터베이스 마이그레이션은 시작 시 자동으로 실행됩니다. 큰 업데이트 전에는 백업(./backup.sh)을 받아 두는 것이 좋습니다.
항상
--build와 함께: 앱과 서버 측 로직이 이미지에 포함되어 있으므로, 모든 업데이트 후(코드 변경,TZ와 같은.env변수 변경)에는 단순히restart가 아니라docker compose up -d --build를 실행해야 합니다.
v0.11까지의 버전에서 업데이트할 때 한 번만: 제품 이름이 변경된 후 컨테이너는 flowmap 대신 killbottleneck이라고 불립니다. 이전 컨테이너가 포트 8090을 점유하고 있으므로 새 컨테이너가 뜨지 않습니다. 먼저 중지하고 제거하세요:
docker rm -f flowmap
docker compose up -d --build데이터는 컨테이너가 아닌 디스크의 ./pb_data 폴더에 있습니다 — 아무것도 잃지 않습니다. .env의 FLOWMAP_* 변수는 계속 작동하므로 다시 작성할 필요가 없습니다.
참고 사항
지도에 대한 공개 링크는 지도 캔버스만 공유합니다. 작업 및 작업 댓글은 이를 통해 보이지 않습니다.
라이선스: fair-code — Sustainable Use License(아래 라이선스 섹션 참조).
라이선스 — fair-code
killBottleneck은 엄격한(OSI) 의미의 '오픈 소스'가 아닙니다 — 그리고 우리는 그 점을 분명히 밝힙니다. 이것은 fair-code입니다. 소스가 공개되어 있고, 다운로드하고, 실행하고, 수정하고, 사용할 수 있으며, 대다수의 사람들에게 고전적인 오픈 소스와 동일한 혜택을 제공합니다. 고전적인 오픈 소스가 될 수 있는 부분은 다음과 같습니다: 스킨 편집기(MIT)와 검증기를 포함한 전체 스킨 갤러리(CC0).
killBottleneck 전체를 사용할 수 있습니다 — 팀 협업과 AI 기능을 포함한 모든 기능을 말이죠. 기능이 빠진 '무료 버전'도 없고, 결제 장벽 뒤에 잠긴 것도 없습니다. AI를 직접 무료로 구동할 수도 있습니다 — 자신의 컴퓨터에서 자신의 모델(Ollama)을 사용하거나, 자신의 API 키를 사용하면 됩니다. 우리가 호스팅하는 클라우드(AI 포함)는 killBottleneck을 실행할 곳이 없는 사람들을 위한 편의로만 제공됩니다 — 조건이 아니라 편의입니다.
killBottleneck으로 무엇을 할 수 있는가 — 무료이며 조건이 없습니다:
자신의 컴퓨터나 서버에서 직접 실행 — 데이터는 여러분 곁에 유지됩니다.
회사에서 자신의 업무와 팀을 위해 완전히 사용.
자신만의 AI를 연결(로컬 모델 또는 자신의 API 키)하거나, AI를 전혀 사용하지 않을 수 있습니다.
필요에 따라 어떻게든 수정할 수 있습니다.
killBottleneck 관련 서비스(설정, 컨설팅, 클라이언트 맞춤화)를 제공할 수 있습니다.
우리가 갖는 것 — 그리고 killBottleneck을 살아 있게 하는 것:
killBottleneck을 호스팅하고 접근에 대해 비용을 청구하는 것.
화이트 라벨링 — 다른 사람의 브랜드로 출시하는 것.
유료 서비스로 재판매하는 것.
그것이 우리의 사업입니다 — 우리가 계속 기능을 추가하고 버그를 수정하며 killBottleneck을 살아 있게 유지할 수 있는 이유입니다. 여러분이 killBottleneck 위에 무언가를 구축하고 필요에 따라 사용하기를 적극 권장합니다. 다만 경쟁적인 호스팅 서비스로 만들지만 마세요. 전체 약관: LICENSE. 제3자 구성 요소는 원래 라이선스(MIT, Apache-2.0, BSD, …)를 유지합니다. 라이선스 전문이 포함된 전체 목록은 THIRD-PARTY-LICENSES.md에 있습니다.
권리 보유자: Tengo, s.r.o., ID 번호 03339165, Dolní Valy 205, 262 72 Březnice, 체코 공화국. killBottleneck을 서비스로 호스팅하거나, 자신의 브랜드로 출시하거나, 재판매하고 싶으신가요? 라이선스가 허용하지 않습니다 — 그러나 상업용 라이선스를 이용할 수 있습니다, licence@killbottleneck.com으로 문의하세요.
이 섹션의 체코어 버전은 README.cs.md에 있습니다.
Richard Pobrislo가 만들었습니다(LinkedIn, Ctrl+Alt+AI) — 한 사람이 만들었기 때문에 아래의 지원 채널이 그러한 형태인 것입니다.
코드는 인간의 지시에 따라 100% AI로 작성되었습니다 — Claude Fable 5, Claude Opus 5, Claude Opus 4.8. 모든 릴리스는 출시 전에 자동 회귀 테스트 스위트와 수동 클릭 테스트를 거칩니다. 릴리스 노트에는 검증된 것과 의도적으로 검증하지 않은 것이 나열됩니다.
연락처
어디에 | 용도 |
GitHub Issues / Discussions | 버그 및 개선 아이디어 — 공개적으로, 다른 사람들도 볼 수 있도록 |
보안 문제(공개 이슈가 아닌) — SECURITY.md 참조 | |
유료 요금제: 호스팅 인스턴스 | |
상업용 라이선스 — 서비스 호스팅, 화이트 라벨, 재판매 | |
기타 모든 사항 |
외부 기여자의 코드는 받지 않습니다 (CONTRIBUTING.md 참조) — 아이디어와 버그 신고는 받으며, 언제나 환영합니다.
프로젝트 지원
killBottleneck은 fair-code입니다. 전체 제품(모든 기능)은 자체 호스팅이 무료이며 앞으로도 그럴 것입니다. 도움이 된다면:
튜토리얼과 AI 뉴스가 있는 YouTube 채널을 구독하세요.
Discord에서 우리와 함께하세요.
Available Tools
15 toolsadd_nodesA
Add a subtree of nodes to an existing map under parent_id (or under the apex when parent_id is omitted). A node is a goal; a node with an assignee (owner) OR a deadline IS a task — that is the only kind of task in killBottleneck (there is no separate task record; new work = new node). NOTE: this re-computes the layout of the whole map. Max 200 nodes per call. Returns the updated tree.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| map_id | Yes | ||
| parent_id | No | Existing node id to attach under; omit for apex |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure and does so well: it explicitly notes that the whole map layout is recomputed, caps calls at 200 nodes, returns the updated tree, and explains the node-vs-task model (owner/deadline makes a task). It does not cover failure modes or permissions, but the disclosed behaviors are valuable and non-obvious.
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 front-loaded: the first sentence states the action and target, the second adds the crucial task-model semantics, and the third highlights warnings and return value. Every sentence earns its place with useful, non-redundant 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?
Given the nested item structure and lack of an output schema, the description provides essential operational details: return value (updated tree), limits (max 200 nodes), side effects (layout recomputation), and task-model rules. It is sufficient for an agent to invoke the tool confidently, even if it doesn't enumerate all field behaviors or error scenarios.
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 only 33%, so the description must compensate. It does by explaining parent_id semantics (omit for apex) and characterizing items as a subtree of nodes. Combined with the schema's field-level descriptions, the parameters are reasonably understandable, though map_id and the items array itself could use slightly more elaboration.
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-resource pair ('Add a subtree of nodes to an existing map') and clearly distinguishes this from siblings such as create_map (whole map) and update_node (existing node). It also clarifies placement under a parent_id or the apex, leaving no ambiguity about the tool's core function.
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 gives clear context for when to use it: adding nodes to an existing map under a specified parent or as apex nodes. It implicitly differentiates from update_node by focusing on adding a subtree. It does not explicitly list exclusions or alternatives, but the usage scenario is unambiguous enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mapA
Create a new goal map from an outline. The map gets an apex (root goal) from title/apex_text; outline items become nested nodes. Layout is computed automatically. Max 200 nodes per call. Returns the created tree with node ids.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Map/project title | |
| outline | Yes | Top-level items under the apex, each may have children | |
| apex_text | No | Root goal statement, defaults to title | |
| description | No | Map description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description itself discloses key behavioral traits: layout is computed automatically, max 200 nodes per call, and the tool returns the created tree with node ids. This goes beyond a bare 'create' statement. It does not cover permission requirements or side effects like notifications, but for a creation tool the disclosed behaviors are meaningful and helpful.
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 three sentences, each earning its place: the first states the core purpose, the second explains the mapping of inputs to structure, and the third states constraints and return value. It is front-loaded with the action verb and completely free of 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?
The description covers the essential operational context: input transformation, automatic layout, node limit, and the returned tree with ids. With no output schema present, this return value information is valuable. It does not elaborate on the many optional outline node fields, but those are fully documented in the input schema, so the description does not need to repeat them.
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 top-level parameter schema has 100% description coverage, so the baseline is 3. The description adds value by explaining how parameters relate to the output: title/apex_text become the apex, and outline items become nested nodes. It also introduces the 200-node limit and the return shape, which are not in the schema definitions.
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+resource construction ('Create a new goal map from an outline') and clearly distinguishes from siblings by focusing on creation as opposed to listing, retrieval, or modification. It also specifies the key transformation (outline to nested nodes) and the automatic layout behavior.
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 context by stating this creates a goal map from an outline, which strongly suggests the appropriate time to use it. It also gives a hard constraint (max 200 nodes per call) that helps decide feasibility. However, it does not explicitly mention alternatives like add_nodes for adding to an existing map, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ruleA
Create an automation rule on a map: WHEN trigger fires (and optional AND conditions match) DO the actions in order. Rules run for changes made in the UI, via API and by agents alike. Structural limits: 50 rules per map, 10 actions, 20 conditions — there is NO monthly run quota. A rule applies only to future events, never retroactively. node_id scopes the rule to one node (required for schedule rules whose actions target a node).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable rule name (max 120 chars) | |
| map_id | Yes | ||
| actions | Yes | 1-10 actions, executed in order | |
| enabled | No | Default true | |
| node_id | No | Optional: scope the rule to one node of the map | |
| trigger | Yes | ||
| conditions | No | Optional AND chain checked on the trigger node |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It reveals important non-obvious traits: structural limits (50 rules per map, 10 actions, 20 conditions), the absence of a monthly run quota, forward-only applicability, and the node_id scoping requirement for schedule rules. This exceeds what one would expect from a typical description.
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 five sentences, each contributing unique value: the core purpose, cross-UI/API/agent behavior, limits/quota, forward-only semantics, and the crucial node_id requirement. It is front-loaded and free of fluff 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?
This is a complex, nested tool with no output schema, yet the description covers key constraints and behavioral rules (limits, quota, future events, node_id requirement) that an agent needs before invoking. It omits any mention of return values, which would be helpful given the absence of an output schema, but the overall context is sufficient for selection.
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 covers 71% of parameters with detailed descriptions, so the description need not repeat them. The added clarification that node_id is 'required for schedule rules whose actions target a node' is genuinely useful, but the description does not compensate for the remaining 29% of parameters lacking schema descriptions (e.g., map_id, enabled).
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 opens with 'Create an automation rule on a map' and explains the WHEN/DO structure, making the tool's purpose unmistakable. It clearly differentiates from sibling tools like list_rules, update_rule, and delete_rule by focusing on creation.
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 relevant context such as 'Rules run for changes made in the UI, via API and by agents alike' and 'applies only to future events, never retroactively,' which helps an agent understand when creating a rule is appropriate. However, it does not explicitly contrast with alternatives like update_rule or list_rule_templates, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_nodeA
Delete a node INCLUDING its whole subtree. The apex (root) cannot be deleted and whole maps cannot be deleted via the API. Irreversible — read the map first and double-check the node id.
| Name | Required | Description | Default |
|---|---|---|---|
| map_id | Yes | ||
| node_id | Yes |
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 most critical behaviors: recursive deletion of the whole subtree, irreversibility, and API limitations (cannot delete apex or whole maps). This goes beyond the bare 'delete' semantics and gives the agent essential warnings.
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 short sentences, each carrying distinct value: action/scope, restrictions, and irreversibility warning. No filler or repetition, with the most important information 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?
For a simple two-parameter delete tool, the description covers the deletion scope, exclusions, and safety advice. It does not mention permissions or side effects on related entities like rules, but given the lack of an output schema and the tool's simplicity, it is reasonably complete. A score of 5 would require covering those potential side effects.
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 0%, so the description must compensate. While the parameter names 'map_id' and 'node_id' are self-explanatory, the description does not explicitly map them to their roles or add constraints like format/required prerequisites. The advice to 'double-check the node id' subtly indicates importance but adds no concrete parameter semantics.
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 ('Delete a node') and specifies the scope ('INCLUDING its whole subtree'), distinguishing it from node update/add operations. It also clarifies constraints (apex and whole maps cannot be deleted), which reinforces the tool's purpose.
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 by stating irreversible nature and advising to 'read the map first', implying the use of a read tool. It also gives explicit exclusions (apex, whole maps), but does not name alternative tools like update_node for replacement or get_map as the read step, so it falls short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_ruleA
Delete an automation rule. Its run log stays (with the rule name snapshot). Irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| map_id | Yes | ||
| rule_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavioral traits: the run log persists with a snapshot of the rule name, and the operation is irreversible. This goes beyond the function name, though it could also mention effects on scheduled actions or related data.
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 short sentences with no redundant content. The key points (deletion, log retention, irreversibility) are front-loaded and concise.
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 two parameters, the description provides essential behavior (log retention, irreversibility) but is missing usage context such as how to find rule_id or map_id, and does not cross-reference related tools like list_rules or delete_rule_template to aid selection.
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 provides no descriptions for map_id and rule_id (0% coverage), and the description does not explain what these parameters refer to or how to obtain them. The tool name implies rule_id is the rule identifier, but map_id is ambiguous without context.
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 ('Delete') and the resource ('an automation rule'), and adds a specific detail about run log retention, making it distinct from sibling tools like delete_rule_template.
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 versus alternatives. It doesn't mention that list_rule_templates or delete_rule_template should be used for templates, and there are no exclusions or context cues beyond the action itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_rule_templateA
Delete a rule template from the library (author or admin only). Rules already created from it are independent copies and stay untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It openly states the permission prerequisite and that existing rules are unaffected (no cascade). It does not detail whether deletion is permanent, but the verb 'delete' implies destruction. This is appropriate for a simple delete tool.
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 with no fluff. The verb and object are front-loaded, and the second sentence adds valuable clarification about side-effects.
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 tool with one parameter, no output schema, and no annotations, the description covers the essential aspects: purpose, permission, and side-effect behavior. It could mention whether deletion is reversible, but for a delete operation this is generally understood.
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 has one parameter (template_id) with no description, and schema description coverage is 0%. The tool name and description make the purpose of template_id obvious, but the description does not explicitly define the parameter's format or source. It partially compensates but leaves some room for interpretation.
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 ('Delete a rule template from the library') with a specific resource and scope. It distinguishes itself from sibling tools like delete_rule (which deletes rules) and save_rule_template (which manages templates).
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 usage context by noting the permission requirement ('author or admin only') and clarifies a key implication ('Rules already created from it are independent copies and stay untouched'). It does not explicitly mention alternatives, but the distinction from sibling tools is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mapA
Read one map as an indented tree with node ids, statuses ([✓] done, [~] in progress, [ ] todo), deadlines and owners. Always call this before modifying a map you have not read yet.
| Name | Required | Description | Default |
|---|---|---|---|
| map_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly indicates this is a read operation, describes the output content, and implies safety precondition (read before modify). It does not detail edge cases or permissions, but for a straightforward read tool the description is sufficient.
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 purpose and output format, the second gives a usage directive. Every word earns its place, and it is entirely front-loaded with no 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 tool's simplicity (one parameter, no output schema), the description fully covers the essentials: what the tool does, what it returns, and when to invoke it. The safety instruction also adds important operational context, making the description complete for this 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?
The schema has 0% description coverage, so the description must compensate for map_id. The phrase 'Read one map' clarifies that map_id identifies the specific map to read. This gives enough semantic context for a single parameter, though it does not provide format or example values.
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 'Read' and resource 'one map', and clearly details the output as an indented tree with node ids, statuses, deadlines, and owners. This differentiates it from sibling tools like list_maps (which lists maps) and get_org_structure (which reads organization structure).
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 states when to use the tool: 'Always call this before modifying a map you have not read yet.' This provides a clear context for usage, though it does not explicitly name alternatives or exclusions like using list_maps for a high-level map list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_org_structureA
Read the organization structure (the org map): positions and functions with node ids, holders and deputies. Use the node ids as dynamic rule targets "position:" / "deputy_of_position:". Read-only — holders and deputies are appointed by an admin in the app.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description states 'Read-only' and explains that holders and deputies are appointed by admin. This discloses the non-mutating nature and external data source. However, it does not describe return format or pagination, though for a simple read 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?
Two concise sentences, front-loaded with purpose, then usage note. No fluff.
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 zero-parameter read tool with no output schema, the description covers purpose, read-only nature, and dynamic node id usage. 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?
No parameters exist, so baseline is 4. The description adds meaning about node ids but no parameters to document.
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 'Read the organization structure (the org map): positions and functions with node ids, holders and deputies.' This is a specific verb and resource, but it does not explicitly distinguish from sibling tool get_map, despite the parenthetical '(the org map)' which could cause confusion.
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 on when to use this tool over alternatives. It provides usage of node ids for rule targets but no comparison with get_map or other read tools. This is essentially no guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mapsA
List goal maps in the killBottleneck account (id, title, node count, last update). Use archived=true to list archived maps instead.
| Name | Required | Description | Default |
|---|---|---|---|
| archived | No |
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 scope (killBottleneck account), the returned fields, and the behavior of the archived flag (default vs archived). It doesn't explicitly state read-only, but 'List' inherently conveys non-mutating behavior, and the details about fields and filtering add meaningful context.
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 main purpose, and includes the only parameter guidance without any fluff. Every word 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?
For a simple list tool with one optional parameter and no output schema, the description covers all essential aspects: what is listed, account scope, returned fields, and filtering option. No pagination or rate limit details are necessary for this level of 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?
The schema only defines 'archived' as a boolean with no description (0% coverage). The description compensates by explaining what archived=true does ('list archived maps instead'), implicitly clarifying that false (or omitted) lists non-archived maps. This is sufficient for the single parameter.
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 goal maps in the killBottleneck account' with specific details on returned fields (id, title, node count, last update). It distinguishes from siblings like get_map (singular fetch) and create_map (creation).
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 provides clear context for when to use the tool (listing maps in the named account) and gives explicit guidance for the archived parameter ('Use archived=true to list archived maps instead'). It does not explicitly name alternative tools for other use cases, but the 'instead' implies default behavior, which is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rule_runsA
Read the run log of a map's automation rules (newest first, max 100): what fired, on which node, ok/failed/skipped and what the actions did. skipped = a safety stop (rule chain depth or per-save cap), detail says which.
| Name | Required | Description | Default |
|---|---|---|---|
| map_id | Yes | ||
| rule_id | No | Optional: only runs of this rule |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates a read operation ('Read'), defines output semantics (ok/failed/skipped), and explains the non-obvious 'skipped' status as a safety stop with a detail field. This goes beyond minimal transparency, though it does not mention potential edge cases like empty results or rate limits.
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 action ('Read the run log'), and each phrase provides useful information: ordering, limit, output fields, and status explanation. 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?
Given there is no output schema, the description adequately explains what the tool returns: recent run logs with node, status, action outcomes, and special handling of 'skipped'. It covers the essential behavior for a read-only log tool, though it could mention the response format (e.g., array) or pagination limits beyond 'max 100'. Overall, it is reasonably complete for the tool's 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?
The input schema documents 'rule_id' as optional and its purpose ('only runs of this rule'), covering 50% of parameter semantics. The description adds contextual meaning by referring to 'a map's automation rules', helping to clarify that 'map_id' is the map identifier. However, it does not explicitly name the parameters or add detail beyond the schema for 'map_id', making it adequate but not exceptional.
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 starts with 'Read the run log of a map's automation rules', which uses a specific verb ('Read') and resource ('run log'), making the tool's purpose unambiguous. It also specifies key details like ordering (newest first), limit (max 100), and output fields (node, ok/failed/skipped, actions), clearly distinguishing it from sibling tools like list_rules.
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 when to use it (when you need to inspect rule run history), but it does not explicitly state when not to use it or name alternatives. For example, it does not contrast with list_rules or explain that this is for execution history rather than rule definitions. The context is clear but lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rulesA
List automation rules of a map: id, name, enabled, scope node, trigger, conditions, actions, last_fired and last_error (a non-empty last_error means the rule is misconfigured and its owner was notified).
| Name | Required | Description | Default |
|---|---|---|---|
| map_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It goes beyond a simple 'list' statement by explaining the meaning of last_error (misconfiguration and notification), which is useful context. It does not mention side effects or permissions, but the read-only nature of listing is inherent.
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, dense sentence that efficiently lists the tool's purpose, the fields returned, and the special meaning of one field. There is no fluff, and every part 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?
For a simple listing tool with one parameter and no output schema, the description is largely complete: it specifies the resource scope, the fields returned, and the significance of last_error. It lacks details about pagination, sorting, or whether all rules (enabled/disabled) are included, but these are not critical for a basic listing operation.
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 sole parameter map_id is required and has no schema description (0% coverage). The description mentions 'of a map', which contextually identifies map_id as the map identifier, but it does not explicitly define the parameter or its format. This provides minimal compensation for the missing schema documentation.
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 ('List') and resource ('automation rules of a map'), clearly distinguishing it from sibling tools like list_rule_runs and list_rule_templates. It also lists the exact fields returned, making the purpose explicit.
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 by specifying the scope ('of a map') and listing the returned fields, which implies it is for inspecting rule configurations. However, it does not explicitly mention alternatives or when not to use it, though the purpose is distinct enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rule_templatesA
List the instance-wide library of rule templates (shape of a rule without a map or node scope). To use one, read it and call create_rule on the target map with its trigger/conditions/actions — the created rule is an independent copy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 clarifies the template shape and the copy relationship with create_rule, but does not explicitly state read-only behavior, pagination, or return format. The verb 'List' implies read-only, but other behavioral details are missing.
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, front-loaded sentences with no fluff. The first sentence states the purpose, the second explains usage, earning its place.
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 parameterless list tool, the description covers what the tool returns (rule templates without scope) and how to use the result (create_rule). No output schema exists, but the description explains the key fields (trigger/conditions/actions) and the copy semantics.
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, so schema coverage is 100% and there is no param info to add. The description enriches understanding by explaining what a template contains (trigger/conditions/actions), which aids interpretation of the output.
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 'List' with a clear resource 'instance-wide library of rule templates' and explicitly differentiates from siblings by noting templates are 'without a map or node scope'. This makes it distinguishable from list_rules and other related tools.
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 provides explicit usage flow: 'read it and call create_rule on the target map with its trigger/conditions/actions', indicating when to use this tool. However, it does not explicitly name alternative tools for when not to use it, so it falls short of full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_rule_templateA
Save a rule shape into the instance-wide template library (create, or update with template_id — only the author or an admin may update). Templates carry no map and no node scope; create_subnodes may only use parent=trigger_node. Template names are unique.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Unique template name (max 120 chars) | |
| actions | Yes | ||
| trigger | Yes | ||
| conditions | No | ||
| template_id | No | Update an existing template (author or admin only); omit to create |
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 discloses key behaviors: templates have no map/node scope, create_subnodes restricted to parent=trigger_node, names must be unique, and update permissions. This is good context beyond the schema.
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, all high-signal: action+scope, key constraints, and uniqueness. No fluff or repetition of schema 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?
Given the rich schema and complexity (nested actions, triggers, conditions), the description provides the essential context: what templates are, permission model, uniqueness, and a critical behavioral constraint. It doesn't explain return values, but no output schema is present. Minor gap: no statement about validation or failure modes.
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 description mentions template_id for updates and name uniqueness, but those are already in the schema. The schema itself provides detailed descriptions for trigger, actions, and conditions, so the description does not need to compensate heavily. 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 the specific verb 'Save' and clearly identifies the resource: 'rule shape into the instance-wide template library.' It explicitly distinguishes create from update and notes templates are not rules, differentiating from siblings like create_rule/update_rule.
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 provides clear context: create or update with template_id, and that only the author or admin may update. It implies this is for reusable templates (no map, no node scope) rather than instance rules, but does not explicitly name alternatives like create_rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_nodeA
Update fields of one node: title, status (todo/in_progress/done), description, deadline (YYYY-MM-DD, empty string clears), owner (e-mail, empty string clears), wait_for_children, colour, who performs it (executor_kind / executor_name) and the automation wish (automation_wanted / automation_note). Marking status done may unblock waiting nodes, notify their owners and trigger automations on them.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Node colour as #rrggbb, empty string clears | |
| owner | No | Accountable PERSON (e-mail). Stays a human even for AI/cron steps — this is who gets notified. Empty string clears. | |
| title | No | ||
| map_id | Yes | ||
| status | No | ||
| node_id | Yes | ||
| deadline | No | ||
| description | No | ||
| executor_kind | No | Who performs the step. Default "human". | |
| executor_name | No | Which automation handles this step, e.g. "n8n backup" — a record of what exists, not an instruction. Empty string clears. | |
| automation_note | No | Optional context for the automation wish. Empty string clears. | |
| automation_wanted | No | Wish that this step were automated; notifies the AI agent managers. | |
| wait_for_children | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals important side effects: 'Marking status done may unblock waiting nodes, notify their owners and trigger automations on them.' It also explains clearing behavior for several fields. However, it does not clarify whether omitted fields remain unchanged or are reset, which is a key behavioral gap given no annotations to fill it.
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. The first sentence efficiently lists the fields, the second explains the done-status side effects. Every phrase 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 the tool's complexity and the absence of annotations and output schema, the description covers most critical aspects: updatable fields, their semantics, and side effects. The main missing element is explicit partial-update semantics and any required permissions.
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?
With schema coverage at 46%, the description compensates by listing and explaining all 13 parameters, including enum values for status, deadline format (YYYY-MM-DD), owner email semantics, and clearing with empty strings. It adds meaning beyond the sparse schema for fields like wait_for_children and automation_wanted.
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 opens with 'Update fields of one node' and enumerates all updatable fields, clearly distinguishing this from sibling tools like add_nodes and delete_node by specifying the update action.
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 a clear usage context: updating an existing node's fields. However, it does not explicitly state when to avoid this tool in favor of alternatives (e.g., add_nodes for creation, delete_node for removal), so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ruleA
Update an automation rule. Pass only enabled to toggle it on/off; otherwise pass the FULL new shape (name, trigger, actions, optional conditions/node_id) — partial field edits are not merged. Edits apply to future events only and clear the rule's error state.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| map_id | Yes | ||
| actions | No | ||
| enabled | No | ||
| node_id | No | ||
| rule_id | Yes | ||
| trigger | No | ||
| conditions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses important behavioral traits: partial field edits are not merged, edits apply to future events only, and the rule's error state is cleared. This goes beyond the minimum but doesn't cover every edge case (e.g., not found behavior, permissions), so it earns a 4 rather than 5.
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 three sentences long, front-loaded with the tool's core purpose. Every sentence adds value: the first defines the action, the second explains the two usage modes and the non-merging rule, and the third notes the temporal scope and side effect. 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?
Given the tool's complexity (8 parameters, nested objects) and lack of output schema or annotations, the description provides a solid high-level context: update modes, required fields, and side effects. It doesn't explicitly mention how to obtain the rule_id or what the response is, but these are relatively self-evident given the schema and sibling tools. The description is complete enough for correct usage.
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's top-level properties have no descriptions (0% coverage), so the description must compensate. It adds meaning by explaining that `enabled` can be used alone as a toggle, while a full update requires `name`, `trigger`, `actions`, and optionally `conditions`/`node_id`. This clarifies the parameter relationships and the non-merge semantics, which the schema alone doesn't convey.
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 ('Update') and resource ('automation rule'). It distinguishes itself from sibling tools by emphasizing the update action and the unique toggle behavior. The phrase 'automation rule' is precise and 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 gives explicit usage guidance by separating the toggle mode ('pass only `enabled`') from the full-replacement mode ('otherwise pass the FULL new shape'). It also warns that partial edits are not merged. While it doesn't explicitly name alternatives like create_rule, the update vs create distinction is implicit and the mode selection is clear.
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.
15 tool updates
v0.33.2-beta- First observed
add_nodes - First observed
create_map - First observed
create_rule - First observed
delete_node - First observed
delete_rule - First observed
delete_rule_template - First observed
get_map - First observed
get_org_structure - First observed
list_maps - First observed
list_rule_runs - First observed
list_rule_templates - First observed
list_rules - First observed
save_rule_template - First observed
update_node - First observed
update_rule
TDQS
Each tool targets a distinct resource and action. Map tools (list_maps, get_map, create_map, add_nodes, update_node, delete_node) are clearly separated from rule tools (create_rule, list_rules, update_rule, delete_rule, list_rule_runs) and template tools (list_rule_templates, save_rule_template, delete_rule_template). No two tools appear to do the same thing.
All tool names follow a consistent verb_noun pattern in snake_case, with verbs like list, get, create, add, update, delete, save. The nouns are appropriately pluralized for collections and singular for single entities, creating a predictable and readable API surface.
15 tools is well within the ideal 3-15 range. The count is justified by the dual domain of map management and automation rule management, with each tool serving a distinct purpose and no apparent bloat.
The tool surface covers the core lifecycle for maps (create, read, update nodes, delete nodes) and automation rules (create, read, update, delete, runs, templates), plus organization structure. The only notable gaps are lack of map-level update/delete, but these appear to be intentional API limitations rather than oversights.
Maintenance
Related MCP Connectors
End-to-end agent-managed company brain. Docs, diagrams, plans, Knowledge Graph. Lean & affordable.
Self-hostable shared brain for you and your AI agents — docs, flows, meetings, decisions, rationale
- MindlifyOAuthco.mindlify
Turn AI conversations into visual knowledge maps. Create, connect, search, and organize thoughts.
Company brain for AI agents — temporal knowledge graph search, exploration, and durable memory.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for Claude, ChatGPT, coding agents (cursor, claude code etc), windsurf, etc— generate visual AI automation workflows. Describe a business process, get an interactive flow map you can edit and share.164MIT
- AlicenseNot gradedqualityCmaintenanceEnd-to-end agent-managed company brain. Humans and any MCP agent co-author living docs (Markdown + extensions), 40+ visual diagrams (Mermaid, BPMN, D2, PlantUML, ELK, Excalidraw), plans, and a self-learning Knowledge Graph. 163 tools across 16 categories. Auth: OAuth 2.1 or API key. Lean, secure, affordable — from individuals to enterprise.MIT
- FlicenseCqualityAmaintenanceSelf-hosted, source-available AI workflow automation platform. Build multi-agent, RAG, and tool-using pipelines on a visual canvas and publish any workflow as an MCP server (stdio/SSE/Streamable HTTP). Also an MCP client via the agent node.21,109-

Beever Atlasofficial
AlicenseAqualityAmaintenanceTurns team chat (Slack, Discord, MS Teams, Mattermost) into a living knowledge base - a typed knowledge graph plus auto-generated wiki - exposed to AI agents through a 28-tool MCP server with semantic search, expert finding, and decision tracing.28443Apache 2.0
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/tengolabs/killbottleneck'
If you have feedback or need assistance with the MCP directory API, please join our Discord server