Architecture: Rails API — MCP-compatible REST surface
Rails API: paldocs
Diagram
Components
| Component | Purpose | Notes |
|---|---|---|
| Api::NotesController | Notes CRUD | GET/POST/PUT/DELETE /api/notes |
| Api::BoardsController | Boards and items | GET/POST/PUT /api/boards, /api/board_items |
| Api::ProjectsController | Project listing and detail | GET /api/projects |
| Api::SearchController | Keyword + semantic search | POST /api/search with vector fallback |
| Api::BlocksController | Block CRUD | Nested under notes |
| Api::TagsController | Tag listing | GET /api/tags |
Key Decisions
- Namespaced under /api/ — keeps MCP-facing endpoints separate from HTML views
- Endpoint parity with pal-e-docs FastAPI — MCP server requires no changes during migration
- JSON-only responses on /api/ — no HTML rendering in API controllers
- Semantic search endpoint combines keyword and vector search in a single call
Related
project-paldocs— parent project pagearch-rails-db— schema this API queriesarch-rails-views— HTML views that share models with the APIstory-paldocs-consolidation— driving user story