Files
Orchestrator/bahn/db-planet-mcp-server/docs/tool-overview.md
ankn a5f8fb49ab Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
2026-06-30 20:39:52 +02:00

203 lines
8.6 KiB
Markdown

# DB Planet MCP Server — Tool Overview
29 tools across 9 components. Each tool maps to one or more Haiilo API endpoints.
---
## 1. Search (3 tools)
| Tool | API Endpoint | What it does |
|------|-------------|--------------|
| Search_FullText | `GET /api/search?term=` | Keyword search across all content. Returns metadata (id, type, excerpt). |
| Search_QuickEntity | `GET /api/quick-entity-search?term=` | Fast entity lookup by name (users, workspaces, pages, events). |
| Search_Grouped | `GET /api/search/grouped?term=` | Same as FullText but results grouped by content type. |
**Example user queries:**
- "Find articles about sustainability on DB Planet"
- "Search for GenAI content"
- "Is there a workspace called Innovation Hub?"
- "Find the Town Hall event"
**Limitations:**
- Keyword matching only, not semantic search. Short queries (1-2 words) work best.
- LLMs sometimes wrap queries in quotes — we strip them automatically.
---
## 2. Workspace Management (5 tools)
| Tool | API Endpoint | What it does |
|------|-------------|--------------|
| Workspace_List | `GET /api/workspaces` | List workspaces. `memberOnly=true` filters for user's own workspaces (client-side pagination + filter). |
| Workspace_Get | `GET /api/workspaces/{id}` | Get workspace details by UUID or slug. |
| Workspace_GetMembers | `GET /api/workspaces/{id}/members` | Get member list for a workspace. |
| Workspace_Join | `PUT /api/workspaces/{id}/users/join` | Join a workspace. |
| Workspace_Create | `POST /api/workspaces` | Create a new workspace. Auto-sets current user as admin. |
**Example user queries:**
- "What workspaces am I a member of?" → `Workspace_List(memberOnly=true)`
- "Show me the Innovation Hub workspace" → `Search_QuickEntity``Workspace_Get`
- "Who are the members of the BahnGPT workspace?" → `Workspace_GetMembers`
- "Join the Digital Transformation workspace" → `Search_QuickEntity``Workspace_Join`
- "Create a workspace called Q1 Planning" → `Workspace_Create`
**Limitations:**
- API has no server-side membership filter — `memberOnly` paginates all workspaces client-side.
- API defaults to 20 results per page.
---
## 3. News (1 tool)
| Tool | API Endpoint | What it does |
|------|-------------|--------------|
| News_GetFeed | `GET /web/blog/newsfeed` | Get news articles from subscribed pages. Filters: published/scheduled/drafts, date range. |
**Example user queries:**
- "What are the latest news on DB Planet?"
- "Show me articles from January 2026"
- "Are there any draft articles?"
**Limitations:**
- ⚠️ Returns 404 on staging — endpoint doesn't exist in staging environment.
- Only returns articles from pages the authenticated user is subscribed to.
---
## 4. People (4 tools)
| Tool | API Endpoint | What it does |
|------|-------------|--------------|
| People_GetMe | `GET /api/users/me` | Get current user's profile. |
| People_Get | `GET /api/users/{id}` | Get a user's profile by UUID. |
| People_List | `GET /api/users` | List all users with pagination. |
| People_Search | `GET /api/users/chooser/search?term=&types=user` | Search users by name only. |
| People_GetManaged | `GET /api/users/{id}/managed` | Get all users that a given user manages (direct reports). |
**Example user queries:**
- "Show me my DB Planet profile" → `People_GetMe`
- "Find Alexandra on DB Planet" → `People_Search`
- "How many users are on DB Planet?" → `People_List`
- "Who does Alexandra manage?" → `People_Search` + `People_GetManaged`
**Limitations:**
- People_Search only matches by name — cannot search by department, job title, or expertise.
- `properties.department` exists on profiles but is not queryable and often null on staging.
- No "find people in department X" capability via the API.
---
## 5. Events (4 tools)
| Tool | API Endpoint | What it does |
|------|-------------|--------------|
| Event_Get | `GET /api/events/{id}` | Get event details by UUID. |
| Event_GetMemberships | `GET /api/events/{id}/memberships` | Get attendee list. Only works if `showParticipants` is enabled. |
| Event_UpdateStatus | `PUT /api/events/{id}/status` | Update attendance: ATTENDING, NOT_ATTENDING, TENTATIVE. |
| Event_Create | `POST /api/events` | Create a new event. Auto-sets current user as host/admin. |
**Example user queries:**
- "Show me details about the Town Hall event" → `Search_QuickEntity``Event_Get`
- "Who is attending the Innovation Workshop?" → `Event_GetMemberships`
- "Register me for the team building event" → `Event_UpdateStatus(status=ATTENDING)`
- "Decline the Friday meeting" → `Event_UpdateStatus(status=NOT_ATTENDING)`
- "Create a team event on May 15th at Frankfurt HQ" → `Event_Create`
**Limitations:**
- No "list all events" endpoint — must use Search_QuickEntity to find events by name.
- Event_GetMemberships returns 404 if the event has `showParticipants=false`.
---
## 6. Social (4 tools)
| Tool | API Endpoint | What it does |
|------|-------------|--------------|
| Social_GetComments | `GET /api/comments?targetId=&targetType=` | Get comments on an entity. |
| Social_PostComment | `POST /api/comments` | Post a comment. Auto-sets current user as author. |
| Social_GetLikes | `GET /api/like-targets/{type}/{id}/likes` | Get like count and list. |
| Social_ToggleLike | `POST /api/like-targets/{type}/{id}/likes/{userId}` | Like or unlike content. |
**Example user queries:**
- "Show me comments on the latest blog post" → `Search_FullText``Social_GetComments`
- "How many likes does the sustainability article have?" → `Social_GetLikes`
- "Like the welcome post" → `People_GetMe` + `Search_FullText``Social_ToggleLike`
- "Comment 'Great work!' on the team update" → `Search_FullText``Social_PostComment`
**Limitations:**
- Valid targetTypes: `blog-article`, `timeline-item`, `wiki-article` only. Events are NOT supported.
- Requires content UUID — must search first to find it.
- ToggleLike requires the user's UUID (from People_GetMe).
---
## 7. Notifications (3 tools)
| Tool | API Endpoint | What it does |
|------|-------------|--------------|
| Notification_List | `GET /api/notifications` | List notifications. Filter by category: ACTIVITY, DISCUSSION. |
| Notification_GetStatus | `GET /api/notifications/status` | Get unseen notification count. |
| Notification_MarkSeen | `PUT /api/notifications/action/mark-seen` | Mark notifications as seen. Optional category filter. |
**Example user queries:**
- "Do I have unread notifications?" → `Notification_GetStatus`
- "Show me my activity notifications" → `Notification_List(category=ACTIVITY)`
- "Show me discussion notifications" → `Notification_List(category=DISCUSSION)`
- "Mark all notifications as read" → `Notification_MarkSeen`
**Limitations:**
- Category parameter may be required (API returns error without it on some environments).
---
## 8. Pages (4 tools)
| Tool | API Endpoint | What it does |
|------|-------------|--------------|
| Page_List | `GET /api/pages` | List all pages. |
| Page_Get | `GET /api/pages/{id}` | Get page details by UUID or slug. |
| Page_GetMembers | `GET /api/pages/{id}/members` | Get page members/admins. |
| Page_Create | `POST /api/pages` | Create a new page. Auto-sets current user as admin. |
**Example user queries:**
- "What pages are available on DB Planet?" → `Page_List`
- "Show me the HR Department page" → `Search_QuickEntity``Page_Get`
- "Who manages the Innovation page?" → `Page_GetMembers`
- "Create a page for the sustainability initiative" → `Page_Create`
**Limitations:**
- ⚠️ Page_Create returns 404 on staging — endpoint doesn't exist in staging environment.
---
## 9. Content (1 tool)
| Tool | API Endpoint | What it does |
|------|-------------|--------------|
| Content_GetFull | Various widget endpoints | Fetch full rendered content by ID and type. Supports: blog-article, wiki-article, page, workspace, app, timeline-item. |
**Example user queries:**
- "Show me the full text of that article" → `Content_GetFull` (after search)
- "Read the wiki page about onboarding" → `Search_FullText``Content_GetFull`
**Limitations:**
- Requires `appId` for blog and wiki articles (available from Search_FullText results).
- Uses internal widget layout endpoints — may break if Haiilo changes layout naming.
---
## Summary
| Component | Tools | Status |
|-----------|-------|--------|
| Search | 3 | ✅ Working |
| Workspaces | 5 | ✅ Working |
| News | 1 | ⚠️ 404 on staging |
| People | 5 | ✅ Working (name search only) |
| Events | 4 | ✅ Working |
| Social | 4 | ✅ Working |
| Notifications | 3 | ✅ Working |
| Pages | 4 | ✅ Working (Create 404 on staging) |
| Content | 1 | ✅ Working |
| **Total** | **30** | |