Connect
- Endpoint:
https://www.fredrin.com/api/mcp - Transport: Streamable HTTP, stateless, one POST per call.
- Auth:
Authorization: Bearer fredrin_live_…from Settings → API keys.
Add it to ~/.claude.json, or your project's .mcp.json:
{
"mcpServers": {
"fredrin": {
"type": "http",
"url": "https://www.fredrin.com/api/mcp",
"headers": {
"Authorization": "Bearer fredrin_live_xxxxxxxxxxxx"
}
}
}
}
Tell your agent to use it
Worth one paragraph in your AGENTS.md, because otherwise an agent will reach for gh issue create out of habit:
## Tickets
Use the `fredrin` MCP server for all ticket management: listing, creating,
updating and moving tickets across the board. Call the tools directly rather
than asking me to do it by hand.
A Fredrin ticket runs an AI Worker in its own branch and worktree. It is not
a GitHub Issue. When I say "make a ticket" or "add this to the board", create
it through the fredrin tools, never with gh issue create, unless I explicitly
say "GitHub issue".
That is the whole integration.
Tools
| Tool | Purpose |
|---|---|
list_workspaces | Workspaces the key can reach. |
list_projects | Projects in a workspace. |
create_project · update_project · delete_project | Manage projects. |
list_statuses | The board's columns. |
list_tickets | Tickets in a project, filterable. |
get_ticket | One ticket. |
create_ticket | Create under a project and status. |
update_ticket | Patch title, description, priority, assignee, due date, labels. |
set_ticket_plan | Write the ticket's structured plan. Distinct from its description. |
move_ticket | Move across columns, with ordering anchors. |
list_comments · create_comment · update_comment · delete_comment | Ticket comments. |
upload_attachment | Attach a file to a ticket. |
Note that set_ticket_plan and update_ticket write different fields. The plan is its own structured document, not part of the description.
Security
- Keys are SHA-256 hashed at rest and compared in constant time.
- A workspace-scoped key can only see and touch its workspace.
- Every tool call re-authenticates, because the server is stateless.