Documentation Index
Fetch the complete documentation index at: https://api-docs.tiro.ooo/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Folder search tools (search_user_folders and search_team_folders) provide a unified way to find folders by name within your personal or team folder hierarchy. Both tools use case-insensitive substring matching with NFC normalization, ensuring reliable matching for Korean and other CJK text.
search_user_folders— Search your personal folder structure (requires user-based API key).search_team_folders— Search your team’s folder structure (requires team API key).
- Find a specific folder by name when you only remember part of it (e.g., “general” matches “0.General”, “General”, “general-things”).
- Enumerate all folders in a workspace (empty keyword returns all, paginated).
- Korean character search:
keyword="네이버"matches"네이버 모니터링","0.네이버", etc.
- Case-insensitive substring matching (NFC-normalized for CJK reliability).
- Folders sorted by match position (start-of-name ranks higher) then by name length (shorter ranks higher).
- Each result includes the folder’s breadcrumb path (e.g.,
"Engineering > Q1 Planning > Sprint 1"). - Empty keyword returns all folders, paginated.
- Backward-compatible dual response fields:
content(recommended) andfolders(legacy alias).
v1 implementation note: These tools fetch the upstream folder tree once per call and filter server-side. A native backend folder-search endpoint is on the v2 roadmap. When added, the MCP signature stays identical — this is an implementation detail.
Parameters
Bothsearch_user_folders and search_team_folders accept identical parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
keyword | string | Optional | Folder-name substring to search (case-insensitive, NFC-normalized). Omit to enumerate all folders. |
cursor | string | Optional | Pagination cursor from a previous nextCursor. Pass this to fetch the next page. |
size | number | Optional | Results per page (default 30, max 100). |
keyword (optional)
Case-insensitive substring match. The search is normalized using NFC (Canonical Decomposition, followed by Canonical Composition) to handle Korean, Japanese, Chinese, and other CJK text reliably. Empty or omitted keyword returns all folders, paginated. Examples:"general"matches"0.General","General","general-things"(sorted by match position, then name length)."네이버"matches"네이버 모니터링","0.네이버","팀별 > 네이버".
cursor (optional)
Pass thenextCursor from a previous response to fetch the next page. Omit for the first page.
size (optional)
Results per page. Default30, max 100. Smaller pages return faster; larger pages reduce round-trips.
Response Format
Success Response (search_user_folders)
| Field | Type | Description |
|---|---|---|
content[] | array | Search results (recommended field). |
content[].folderId | number | Stable folder identifier. |
content[].name | string | Folder name (e.g., "General", "Q1 Planning"). |
content[].path | string | Breadcrumb path (e.g., "Engineering > Q1 Planning > Sprint 1"), joined with >. Top-level folders have path equal to name. |
folders[] | array | Legacy alias for content. Both arrays contain identical data. Pick whichever your client prefers. |
total | number | Total number of folders matching the keyword (entire result set, across all pages). |
totalSize | number | Number of results on this page. |
nextCursor | string | null | Cursor for the next page. null when no more results. |
The response includes both
content (recommended, modern naming) and folders (legacy alias) for backward compatibility. They reference the same array object — pick whichever your code prefers and ignore the other.Usage Examples
Example 1: search_user_folders — Simple keyword
Request:Example 2: search_team_folders — Korean keyword
Request:Example 3: Enumerate all folders (empty keyword)
Request:Example 4: Pagination
First page (omit cursor):Sort Order
Results are sorted by match position, then by folder name length (shorter names rank higher at the same match position):-
Match position ascending — Folders whose
namestarts with the keyword rank above folders that contain it later in the name.keyword="general"→"General"(position 0) ranks above"0.General"(position 2).
-
Name length ascending — When match position is tied, shorter names rank higher.
- Both start at position 0 and match “gen”:
"General"(7 chars) ranks above"General Announcements"(21 chars).
- Both start at position 0 and match “gen”:
Best Practices
Use search_user_folders with user-based API keys
Use search_user_folders with user-based API keys
search_user_folders requires a user-based API key. Team-only API keys return a 403 TEAM_REQUIRED error. Create a user API key at Tiro Platform API Keys.Use search_team_folders with team API keys
Use search_team_folders with team API keys
search_team_folders requires a team-based API key. User-only API keys return a 403 USER_REQUIRED error. Generate a team API key from the team’s settings page.For CJK text, rely on NFC normalization
For CJK text, rely on NFC normalization
Korean, Japanese, and Chinese text is automatically NFC-normalized server-side. You don’t need to preprocess your keywords — just pass the raw text and the matching engine handles it.Example:
keyword="네이버" will match folders with composed or decomposed forms of the same text.Paginate with nextCursor, not offsets
Paginate with nextCursor, not offsets
Always use the
nextCursor returned in the previous response. Don’t try to compute offsets yourself — pagination behavior may change in future releases.Use empty keyword to enumerate all folders
Use empty keyword to enumerate all folders
To get a complete list of folders without filtering, omit
keyword or pass an empty string. Use size and nextCursor to paginate through the full result set.Common Errors
User API key required
Solution: You calledsearch_user_folders with a team API key. Switch to a user-based API key or use search_team_folders if you need team folders.
Team API key required
Solution: You calledsearch_team_folders with a user-only API key. Switch to a team-based API key.
Insufficient scope
Solution: Your API key lacks themcp:folders:read scope. Generate a new key with the correct scopes, or contact your workspace administrator to grant access.
Token Usage
| Operation | Tokens |
|---|---|
| Empty keyword (enumerate all folders) | ~200–500 |
| Keyword search | ~200–500 |
Scope Requirements
Bothsearch_user_folders and search_team_folders require the mcp:folders:read scope. Configure your API key at Tiro Platform API Keys.
Related Tools
list_notes— Find notes within a specific folder usingfilter.folderId(no separate “list folders” tool needed).search_notes— Search notes in a folder withfilter.folderId(keyword-required deep search).