Reference GUILDUO
Guilduo API and MCP reference: endpoints and examples
REST and MCP share the same work rules. Use the published OpenAPI and MCP schemas as references and match inputs to the contract exposed by your connected server.
Distinguish REST, MCP and Appwrite
Use /mcp for normal MCP connections. /mcp-next is a validation lane. Do not redirect Worker Quest routes to the Appwrite API.
| Purpose | URL | Usage |
|---|---|---|
| Browser | https://app.guilduo.com/ | Guilduo / Relay Forge |
| Remote MCP | https://mcp.guilduo.com/mcp | OAuth-capable AI clients |
| Worker REST | https://mcp.guilduo.com/v1/quests | OpenAPI /v1 routes |
| Appwrite API | https://api.guilduo.com/v1 | Appwrite SDK and Worker endpoint |
Check authentication and schemas
Ordinary MCP users use OAuth. OpenAPI defines OAuth and Appwrite JWT Bearer authentication. Fixed API-key distribution is not the normal user flow.
api/openapi.json defines REST paths, inputs and responses; api/mcp-tools.json defines tool names and schemas. Check required fields, enums and length limits before calling.
Tool discovery does not replace authentication or Agent policy. Read identity and effective scopes with get_current_agent_context, then read the target's current state.
Read the Quest list
The following input reads list_quests. Inspect quests, total and nextCursor. If nextCursor is present, pass it as cursor in the next call.
- Connect OAuth MCP and verify the intended Agent and required quests:read with get_current_agent_context.
- Call list_quests with the input above and compare it with Backlog in the Web App.
- Pass an actual returned ID to get_quest as questId and read details and updatedAt. Do not infer IDs from display names.
- For REST, use an authenticated GET /v1/quests?view=backlog&kind=todo&limit=5. Do not confuse an unauthenticated 401 with a storage or network failure.
{
"view": "backlog",
"kind": "todo",
"limit": 5
}Map operations to tools and REST routes
The CLI is a REST client for people and CI. Writes execute when --execute is supplied. CLI usage and OAuth MCP discovery are distinct interfaces.
| Purpose | MCP | REST |
|---|---|---|
| List and detail | list_quests / get_quest | GET /v1/quests / GET /v1/quests/{questId} |
| Hierarchy | get_quest_tree | GET /v1/quests/tree |
| Create and edit | create_quest / update_quest | POST /v1/quests / PATCH /v1/quests/{questId} |
| Handoff | transition_quest_handoff | POST /v1/quests/{questId}/handoff |
| Human request | request_human_review | POST /v1/quests/{questId}/review-requests |
| Human list | list_human_requests | GET /v1/human-requests |
| Human answer | No MCP write tool | Human Web-authenticated POST /v1/quests/{questId}/review-response |
Understand writes and error contracts
- Execute assign_quest_to_agent and request_human_review after preview with the current expectedUpdatedAt. transition_quest_handoff uses expectedState.
- Do not add undefined dryRun fields to create_quest or update_quest. Tools with additionalProperties=false reject undefined properties.
- For 401 inspect authentication; for 403 permissions and identity; for 409 conflicts. requestKey retries the same Human review round and is not a general Quest-creation retry guarantee.
- On conflict, read current state and preview again. Do not repeatedly resend stale timestamps or fabricate a Human answer through general updates.
- Tool counts and versions change. Compare the connected tools/list with the published contract and verify compatibility by required names and schemas.
Sources for this article
Edited from the public GitHub documentation. Read the original sources for specification details.
Content reviewed: · Public source revision: 5125178