journal-api
Interact with the Journal API to manage projects, documents, tasks, and workspaces. Use when the user mentions journal, projects, documents, tasks, workspaces, task identifiers like JO-123, or needs to access Journal data.
When & Why to Use This Skill
The Journal API skill enables Claude to seamlessly interact with the Journal platform, a specialized project management and documentation hub designed for software engineering teams. It allows for the retrieval of deep project context, including task statuses, technical implementation plans, and hierarchical documentation. By bridging the gap between AI assistance and project data, this skill ensures that development workflows are informed by real-time project specifications and team standards.
Use Cases
- Technical Specification Access: Retrieve and follow detailed implementation plans and PRDs for specific task identifiers (e.g., JO-123) to ensure code alignment with project requirements.
- Project Onboarding & Context: Quickly fetch project overviews, status updates, and owner information to get up to speed on new initiatives or workspaces.
- Collaborative History Review: Access task comments and linked resources such as GitHub PRs, Slack messages, or Figma files to understand the decision-making history behind a task.
- Documentation Discovery: List and read markdown documents across organizations, workspaces, or projects to find architecture notes, research, or team guidelines.
| name | journal-api |
|---|---|
| description | Interact with the Journal API to manage projects, documents, tasks, and workspaces. Use when the user mentions journal, projects, documents, tasks, workspaces, task identifiers like JO-123, or needs to access Journal data. |
Journal API Skill
This skill enables interaction with the Journal application - a project management and documentation platform for software teams.
Overview
Journal organizes work into a hierarchy:
Organization
├── Workspaces (team spaces, e.g., "Engineering", "Design")
│ └── Documents (workspace-scoped context)
├── Projects (individual initiatives with status tracking)
│ ├── Documents (PRDs, specs, research notes)
│ └── Tasks (work items with implementation plans)
└── Global Documents (organization-wide context)
Core Entities
| Entity | Description | Identifier |
|---|---|---|
| Workspace | Top-level team container | Slug (e.g., coding-agent) |
| Project | Initiative with status, owner, summary | Slug (e.g., context-engine) |
| Document | Rich text content (markdown) | Slug (e.g., mvp-scope) |
| Task | Work item with status, priority, assignee | Identifier (e.g., JO-123) |
Document Types
organization_context- Org-level strategy and guidelinesproject_context- PRDs, solution docs, project specsworkspace_context- Team-shared context and standardsclipped_page- Saved web pages for referenceimplementation_plan- Technical specs for tasks
Task Statuses
backlog → to_do → in_progress → in_review → done | cancelled
Task Priorities
urgent | high | medium | low | none (unassigned)
API Configuration
Base URL: http://localhost:3001
MCP Endpoint: POST /api/mcp/request
Required Headers:
Content-Type: application/json
Accept: application/json, text/event-stream
x-mcp-api-key: <your-api-key>
Available MCP Tools
Projects
get_project_context
Get project overview including name, status, summary, and owner.
Input:
url(required): Journal URL containing project path
Example:
{
"name": "get_project_context",
"arguments": {
"url": "https://journal.one/projects/context-engine"
}
}
Returns: Project id, name, slug, icon, summary, status, owner, timestamps
Documents
get_document
Fetch full markdown content of a document.
Input:
url(required): Full document URL
URL Patterns:
- Global:
https://journal.one/documents/<slug> - Project:
https://journal.one/projects/<project>/documents/<slug> - Workspace:
https://journal.one/workspaces/<workspace>/documents/<slug>
Returns: Document id, name, slug, type, markdown content, metadata, owner, timestamps
list_project_documents
List all documents within a project.
Input:
url(required): Any URL containing the project pathtype(optional): Filter by document type
Returns: Array of documents with id, name, slug, type, owner, timestamps
Tasks
get_task
Fetch task details including implementation plan if available.
Input:
task(required): Task identifier (e.g.,JO-123) or full URL
Returns:
- Task metadata: id, identifier, name, slug, status, priority, description
- Assignee, due date, labels, project name
implementationPlan.markdown- Technical spec (if exists)commentCount,resourceCount- For follow-up queries
Important: When an implementation plan exists, follow it closely. Only deviate with explicit user approval.
get_task_comments
Fetch comments on a task with pagination.
Input:
task(required): Task identifier or URLparentCommentId(optional): Get replies to specific commentlimit(optional): 1-50, default 20offset(optional): For pagination
get_task_resources
Fetch resources attached to a task (GitHub PRs, Slack messages, Figma files, linked documents).
Input:
task(required): Task identifier or URLlimit(optional): 1-50, default 20offset(optional): For pagination
Current Limitations
⚠️ The following operations are NOT available via MCP:
| Operation | Workaround |
|---|---|
| List all tasks | Must know specific task ID (JO-xxx) |
| List all projects | Must know project slug |
| List workspaces | Must know workspace slug |
| Search across entities | Not available |
| Create/update tasks | Use tRPC API directly |
| Create/update documents | Use tRPC API directly |
Cannot answer questions like:
- "How many tasks are in progress?"
- "What projects exist?"
- "Find all tasks assigned to John"
- "Search for documents about authentication"
Example Workflows
Get Task and Implementation Plan
1. get_task(task: "JO-123")
→ Returns task details + implementationPlan.markdown
2. If commentCount > 0: get_task_comments(task: "JO-123")
3. If resourceCount > 0: get_task_resources(task: "JO-123")
Explore a Project
1. get_project_context(url: ".../projects/my-project")
→ Returns project overview
2. list_project_documents(url: ".../projects/my-project")
→ Returns all documents in project
3. get_document(url: ".../projects/my-project/documents/prd")
→ Returns full document content
MCP Request Format
All MCP calls use JSON-RPC 2.0:
curl -X POST http://localhost:3001/api/mcp/request \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "x-mcp-api-key: YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "TOOL_NAME",
"arguments": { ... }
},
"id": 1
}'
Error Handling
| Error | Meaning |
|---|---|
Invalid API key |
API key not found or disabled |
Task not found |
Task doesn't exist or is deleted/draft |
Project not found |
Project doesn't exist or no access |
Document not found |
Document doesn't exist or no access |
Not Acceptable |
Missing Accept: application/json, text/event-stream header |
Tips for Agents
- Task identifiers follow pattern:
XX-NNN(e.g.,JO-123,ENG-456) - Always check implementation plans: Tasks may have detailed tech specs
- Use comments/resources counts: Fetch additional context only when available
- URL flexibility: Tools accept full URLs or just slugs/identifiers
- Project context first: Get project overview before diving into documents