Skip to main content

MCP (Model Context Protocol) API

The MCP API provides endpoints for discovering and executing tools dynamically generated from FastAPI routes. Tools are filtered by configuration and enhanced with semantic metadata from the ontology system.

Overview​

The MCP API enables:

  • Tool Discovery: List available tools for each system (GitHub, Jira, Confluence)
  • Tool Execution: Execute tools with parameters routed by capability type
  • Capability Types: Tools are classified as action, analytical, or read
  • Semantic Metadata: Tools include semantic descriptions from the ontology
  • LLM Hints: Tools include hints to help LLMs select the right tool
  • Dynamic Generation: Tools are automatically generated from FastAPI routes
  • Parallel Execution: Many tools support parallel fetching across all accessible resources
  • Standardized Pagination: All list endpoints return paginated responses with cursors
  • Analytics Caching: Analytics endpoints support stale-while-revalidate caching with optional refresh

Capability-Based Execution​

The MCP layer routes tool execution to the appropriate executor based on capability type:

TypeDescriptionExecution Path
actionSide-effect operations (create, update, delete)Action Executor with retry and recovery
analyticalRead-only aggregation and metricsAnalytics Executor with partial results
readSimple data accessAnalytics Executor (simple path)

This architecture keeps the MCP layer thin and stable while enabling sophisticated execution strategies.


New Features​

LLM Hints for Tool Selection​

Tools now include llm_hints to help AI assistants select the right tool:

{
"name": "issue.list",
"description": "List issues/tickets from Jira or GitHub",
"llm_hints": {
"aliases": ["ticket", "issue", "bug", "task"],
"when_to_use": "Use for work tracking operations. Triggered by: my tickets, assigned to me, open issues",
"not_for": "Pull requests -> use PullRequest concept",
"examples": [
{ "query": "Show my open tickets", "tool": "issue.list", "params": { "state": "open" } }
]
}
}

Enhanced Domains Endpoint​

The /mcp/domains endpoint now includes LLM routing hints:

{
"domains": [
{
"name": "work",
"description": "Issues, tickets, sprints, and project management",
"keywords": ["ticket", "issue", "bug", "task", "sprint", "jira"],
"when_to_use": "Use for issue tracking, tickets, sprints, and project management tasks",
"tool_count": 32
}
]
}

Standardized Pagination​

All list endpoints now return paginated responses:

{
"success": true,
"data": {
"items": [...],
"pagination": {
"limit": 50,
"offset": 0,
"total": 150,
"has_more": true,
"next_cursor": "eyJvZmZzZXQiOiA1MH0="
}
}
}

Pagination Parameters:

  • limit (int): Page size (max 100)
  • offset (int): Number of items to skip
  • cursor (string): Pagination cursor from previous response

Analytics Caching​

Analytics endpoints support stale-while-revalidate caching:

# Use cached data (default)
curl "/analytics/dora?repo_ids=org/repo"

# Skip cache and refresh
curl "/analytics/dora?repo_ids=org/repo&refresh=true"

Caching Strategy:

  • Fresh data (< 5 minutes): Returned immediately
  • Stale data (5 min - 1 hour): Returned immediately, refreshed in background
  • Expired data (> 1 hour): Computed fresh

Available Systems​

SystemTools CountDescription
GitHub27Repositories, issues, PRs, branches, files, metrics
Jira24Projects, tickets, sprints, transitions, metrics
Confluence14Spaces, pages, comments, attachments, labels

Base Endpoint​

/mcp

Authentication​

MCP endpoints require authentication via JWT token:

X-JWT-Token: <your-jwt-token>

In demo mode, a demo token is automatically created if not provided.


Core Endpoints​

Get Available Systems​

List all systems that have MCP tools available.

Endpoint: GET /mcp/systems

Authentication: Not required

Request:

curl http://localhost:3007/mcp/systems

Response:

{
"systems": ["github", "jira", "confluence"],
"count": 3
}

Get Capabilities for System​

Get all capabilities for a system, optionally filtered by type.

Endpoint: GET /mcp/{system}/capabilities

Path Parameters:

  • system (string, required): System identifier (github, jira, confluence)

Query Parameters:

  • capability_type (string, optional): Filter by type (action, analytical, read)

Authentication: Not required

Request:

# Get all capabilities for GitHub
curl http://localhost:3007/mcp/github/capabilities

# Get only analytical capabilities
curl http://localhost:3007/mcp/github/capabilities?capability_type=analytical

Response:

{
"system": "github",
"capabilities": [
{
"name": "github.analytics.dora_metrics",
"type": "analytical",
"tool": "get_dora_metrics",
"read_only": true,
"side_effects": false,
"requires": ["github"]
},
{
"name": "github.issues.create",
"type": "action",
"tool": "create_issue",
"read_only": false,
"side_effects": true,
"requires": []
}
],
"count": 2
}

Get All Analytical Capabilities​

Get all analytical capabilities across all systems.

Endpoint: GET /mcp/capabilities/analytics

Authentication: Not required

Request:

curl http://localhost:3007/mcp/capabilities/analytics

Response:

{
"type": "analytical",
"description": "Read-only operations that aggregate or compute metrics",
"systems": {
"github": [
{
"name": "github.analytics.dora_metrics",
"tool": "get_dora_metrics",
"requires": ["github"],
"outputs": ["deployment_frequency", "lead_time", "change_failure_rate", "mttr"]
},
{
"name": "github.analytics.engineering_metrics",
"tool": "get_eng_metrics",
"requires": ["github"],
"outputs": ["velocity_throughput", "quality_stability", "efficiency", "team_health"]
}
],
"jira": [
{
"name": "jira.analytics.delivery_forecast",
"tool": "get_delivery_forecast",
"requires": ["jira"],
"outputs": ["window_capacity", "completion_prediction", "delivery_confidence", "risks"]
},
{
"name": "jira.analytics.throughput",
"tool": "get_throughput_metrics",
"requires": ["jira"],
"outputs": ["throughput", "cycle_time", "lead_time", "wip", "flow_efficiency"]
}
]
},
"total_count": 15
}

Get Tools for System​

Get all available MCP tools for a specific system with their input schemas.

Endpoint: GET /mcp/{system}/tools

Path Parameters:

  • system (string, required): System identifier (github, jira, confluence)

Authentication: Not required

Request:

curl http://localhost:3007/mcp/github/tools

Response:

{
"tools": [
{
"name": "get_repositories",
"description": "List, show, get, fetch, or retrieve all GitHub repositories you can access",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Maximum number of results to return"
},
"offset": {
"type": "integer",
"description": "Number of results to skip"
}
},
"required": []
}
}
]
}

Execute Tool​

Execute an MCP tool by calling the corresponding internal API endpoint. The executor routes the request based on capability type:

  • action capabilities: Executed with retry/recovery (Action Executor)
  • analytical capabilities: Executed with multi-source aggregation (Analytics Executor)
  • read capabilities: Simple execution (Analytics Executor)

Endpoint: POST /mcp/{system}/execute

Path Parameters:

  • system (string, required): System identifier (github, jira, confluence)

Request Body:

{
"tool": "tool_name",
"arguments": {
"param1": "value1",
"param2": "value2"
}
}

Authentication: Required (JWT token in X-JWT-Token header)

Response:

Responses include _capability metadata indicating the capability type:

{
"success": true,
"data": {
"repositories": [...],
"_capability": {
"name": "github.repositories.list",
"type": "read"
}
}
}

For analytical capabilities, the type indicates the data was computed/aggregated:

{
"success": true,
"data": {
"deployment_frequency": 4.5,
"lead_time_hours": 2.3,
"change_failure_rate": 8.5,
"mttr_hours": 1.2,
"_capability": {
"name": "github.analytics.dora_metrics",
"type": "analytical"
}
}
}

GitHub Tools (27 Tools)​

Repository Operations​

get_repositories​

List all GitHub repositories accessible to the user.

Input Schema:

{
"properties": {
"limit": { "type": "integer", "description": "Maximum results" },
"offset": { "type": "integer", "description": "Results to skip" }
},
"required": []
}

Example Response:

{
"success": true,
"data": {
"repositories": [
{
"id": 123456789,
"name": "my-awesome-repo",
"full_name": "acme-corp/my-awesome-repo",
"description": "An awesome repository",
"url": "https://github.com/acme-corp/my-awesome-repo",
"default_branch": "main",
"private": false,
"language": "TypeScript",
"stargazers_count": 42,
"forks_count": 10
}
],
"count": 1
}
}

get_repository​

Get details for a specific repository.

Input Schema:

{
"properties": {
"repo_id": { "type": "string", "description": "Repository in owner/repo format" }
},
"required": ["repo_id"]
}

list_repos_by_user​

List repositories for a specific user.

Input Schema:

{
"properties": {
"username": { "type": "string", "description": "GitHub username" },
"limit": { "type": "integer" }
},
"required": ["username"]
}

get_repository_users​

List collaborators/users with access to repositories.

Input Schema:

{
"properties": {
"repo_id": { "type": "string", "description": "Optional - if not provided, fetches from all repos" }
},
"required": []
}

get_contributors​

List contributors who committed code.

Input Schema:

{
"properties": {
"repo_id": { "type": "string", "description": "Optional - if not provided, aggregates all repos" }
},
"required": []
}

Example Response:

{
"success": true,
"data": {
"contributors": [
{
"login": "johndoe",
"id": 12345,
"contributions": 156,
"avatar_url": "https://avatars.githubusercontent.com/u/12345"
}
],
"total_contributions": 156
}
}

User Operations​

get_user_by_email​

Look up GitHub user by email address.

Input Schema:

{
"properties": {
"email": { "type": "string", "description": "User email address" }
},
"required": ["email"]
}

Example Response:

{
"success": true,
"data": {
"login": "johndoe",
"id": 12345,
"name": "John Doe",
"email": "john.doe@example.com",
"avatar_url": "https://avatars.githubusercontent.com/u/12345"
}
}

Issue Operations​

get_issues​

List GitHub issues with optional filters.

Input Schema:

{
"properties": {
"repo_id": { "type": "string", "description": "Optional - fetches from all repos if not provided" },
"state": { "type": "string", "enum": ["open", "closed", "all"] },
"labels": { "type": "array", "items": { "type": "string" } },
"limit": { "type": "integer" }
},
"required": []
}

Example Response:

{
"success": true,
"data": {
"issues": [
{
"id": 789456123,
"number": 42,
"title": "Fix authentication bug",
"body": "Users are unable to login when...",
"state": "open",
"labels": [
{ "name": "bug", "color": "d73a4a" }
],
"assignees": [
{ "login": "janedoe", "id": 67890 }
],
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-20T14:45:00Z"
}
],
"count": 1
}
}

get_issue​

Get a specific issue by number.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"issue_number": { "type": "integer" }
},
"required": ["repo_id", "issue_number"]
}

create_issue​

Create a new GitHub issue.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"title": { "type": "string" },
"body": { "type": "string", "description": "Issue description" },
"labels": { "type": "array", "items": { "type": "string" } },
"assignees": { "type": "array", "items": { "type": "string" } }
},
"required": ["repo_id", "title"]
}

Example Request:

curl -X POST http://localhost:3007/mcp/github/execute \
-H "Content-Type: application/json" \
-H "X-JWT-Token: <your-jwt-token>" \
-d '{
"tool": "create_issue",
"arguments": {
"repo_id": "acme-corp/api",
"title": "Add rate limiting to API",
"body": "We need to implement rate limiting...",
"labels": ["enhancement", "api"]
}
}'

update_issue​

Update an existing issue.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"issue_number": { "type": "integer" },
"title": { "type": "string" },
"body": { "type": "string" },
"state": { "type": "string", "enum": ["open", "closed"] },
"labels": { "type": "array" },
"assignees": { "type": "array" }
},
"required": ["repo_id", "issue_number"]
}

get_issue_comments​

List comments on an issue.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"issue_number": { "type": "integer" }
},
"required": ["repo_id", "issue_number"]
}

add_issue_comment​

Add a comment to an issue.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"issue_number": { "type": "integer" },
"body": { "type": "string", "description": "Comment text" }
},
"required": ["repo_id", "issue_number", "body"]
}

add_issue_labels​

Add labels to an issue.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"issue_number": { "type": "integer" },
"labels": { "type": "array", "items": { "type": "string" } }
},
"required": ["repo_id", "issue_number", "labels"]
}

remove_issue_labels​

Remove labels from an issue.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"issue_number": { "type": "integer" },
"labels": { "type": "array", "items": { "type": "string" } }
},
"required": ["repo_id", "issue_number", "labels"]
}

Pull Request Operations​

get_pull_requests​

List pull requests.

Input Schema:

{
"properties": {
"repo_id": { "type": "string", "description": "Optional - fetches from all repos if not provided" },
"state": { "type": "string", "enum": ["open", "closed", "all", "merged"] },
"limit": { "type": "integer" }
},
"required": []
}

Example Response:

{
"success": true,
"data": {
"pull_requests": [
{
"id": 987654321,
"number": 15,
"title": "Add new authentication flow",
"state": "open",
"draft": false,
"user": { "login": "johndoe" },
"head": { "ref": "feature/new-auth" },
"base": { "ref": "main" },
"created_at": "2024-01-18T09:00:00Z",
"updated_at": "2024-01-20T16:30:00Z",
"additions": 250,
"deletions": 45
}
],
"count": 1
}
}

get_stale_prs​

List stale/inactive pull requests.

Input Schema:

{
"properties": {
"repo_id": { "type": "string", "description": "Optional" },
"days_threshold": { "type": "integer", "description": "Days of inactivity (default: 7)" }
},
"required": []
}

create_pull_request​

Create a new pull request.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"title": { "type": "string" },
"head": { "type": "string", "description": "Source branch" },
"base": { "type": "string", "description": "Target branch (default: main)" },
"body": { "type": "string" },
"draft": { "type": "boolean" }
},
"required": ["repo_id", "title", "head"]
}

merge_pull_request​

Merge a pull request.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"pr_number": { "type": "integer" },
"merge_method": { "type": "string", "enum": ["merge", "squash", "rebase"] },
"commit_message": { "type": "string" }
},
"required": ["repo_id", "pr_number"]
}

Branch & File Operations​

create_branch​

Create a new branch.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"branch_name": { "type": "string" },
"from_branch": { "type": "string", "description": "Source branch (default: main)" }
},
"required": ["repo_id", "branch_name"]
}

create_or_update_file​

Create or update a file in a repository.

Input Schema:

{
"properties": {
"repo_id": { "type": "string" },
"path": { "type": "string", "description": "File path" },
"content": { "type": "string", "description": "File content" },
"message": { "type": "string", "description": "Commit message" },
"branch": { "type": "string" }
},
"required": ["repo_id", "path", "content", "message"]
}

Metrics Operations​

get_dora_metrics​

Get DORA metrics aggregated across repositories.

Input Schema:

{
"properties": {
"repo_ids": { "type": "string", "description": "Comma-separated repo IDs (optional)" },
"time_period_days": { "type": "integer", "description": "Time period (default: 30)" }
},
"required": []
}

Example Response:

{
"success": true,
"data": {
"deployment_frequency": {
"value": 4.5,
"unit": "deploys_per_week",
"category": "High",
"description": "Average successful workflow runs per week"
},
"lead_time_for_changes": {
"value": 2.3,
"unit": "hours",
"category": "Elite",
"description": "Average time from workflow start to completion"
},
"change_failure_rate": {
"value": 8.5,
"unit": "percent",
"category": "High",
"description": "Percentage of failed workflows"
},
"mean_time_to_recovery": {
"value": 1.2,
"unit": "hours",
"category": "Elite",
"description": "Average time from failure to recovery"
},
"metadata": {
"time_period_days": 30,
"repositories_analyzed": 5
}
}
}

get_dora_metrics_by_repo​

Get DORA metrics grouped by repository.


get_developer_metrics​

Get developer activity metrics.

Input Schema:

{
"properties": {
"repo_id": { "type": "string", "description": "Optional" },
"time_period_days": { "type": "integer" },
"limit": { "type": "integer" }
},
"required": []
}

Example Response:

{
"success": true,
"data": {
"developers": [
{
"username": "johndoe",
"commits": 45,
"pull_requests": {
"opened": 12,
"merged": 10,
"closed": 1
},
"reviews": 28,
"additions": 3500,
"deletions": 1200
}
],
"period_days": 30
}
}

get_actions_info​

Get GitHub Actions CI/CD pipeline status.


get_pr_developer_metrics​

Get per-developer PR metrics (size, counts, lead times).


get_pr_merge_time_metrics​

Get PR cycle time bottleneck analysis.


get_eng_metrics​

Get comprehensive engineering metrics (DORA + SPACE framework).


get_eng_metrics_by_repo​

Get engineering metrics grouped by repository.


get_my_github_work​

Get all open GitHub work for a user.

Input Schema:

{
"properties": {
"username": { "type": "string", "description": "GitHub username or email address" }
},
"required": ["username"]
}

Example Response:

{
"success": true,
"data": {
"user": "johndoe",
"open_prs": [
{
"repo": "acme-corp/api",
"number": 42,
"title": "Add new feature",
"created_at": "2024-01-20T10:00:00Z"
}
],
"review_requests": [
{
"repo": "acme-corp/frontend",
"number": 38,
"title": "Update UI components",
"author": "janedoe"
}
],
"assigned_issues": [
{
"repo": "acme-corp/api",
"number": 15,
"title": "Fix authentication bug"
}
],
"summary": {
"open_prs": 1,
"reviews_pending": 1,
"assigned_issues": 1
}
}
}

Jira Tools (24 Tools)​

Project Operations​

get_projects​

List all Jira projects.

Input Schema:

{
"properties": {
"limit": { "type": "integer" },
"offset": { "type": "integer" }
},
"required": []
}

Example Response:

{
"success": true,
"data": {
"projects": [
{
"id": "10001",
"key": "PROJ",
"name": "Project Alpha",
"description": "Main project for Alpha team",
"lead": {
"accountId": "abc123",
"displayName": "John Doe"
},
"projectTypeKey": "software"
}
],
"count": 1
}
}

get_project_info​

Get project details.

Input Schema:

{
"properties": {
"project_key": { "type": "string" }
},
"required": ["project_key"]
}

get_available_statuses​

List workflow statuses for a project.


get_assignable_users​

List users who can be assigned to issues.

Input Schema:

{
"properties": {
"project_key": { "type": "string" },
"issue_key": { "type": "string" }
},
"required": []
}

User Operations​

get_users​

List all Jira users.


get_user_by_email​

Look up Jira user by email.

Example Response:

{
"success": true,
"data": {
"accountId": "abc123def456",
"displayName": "John Doe",
"emailAddress": "john.doe@example.com",
"active": true
}
}

get_tickets_by_user​

Get tickets assigned to a user.


Ticket Operations​

get_tickets​

List Jira tickets with filters.

Input Schema:

{
"properties": {
"project_key": { "type": "string", "description": "Optional - fetches all if not provided" },
"project": { "type": "string", "description": "Alias for project_key" },
"assignee_id": { "type": "string" },
"status": { "type": "string" },
"limit": { "type": "integer" }
},
"required": []
}

⚠️ Important: This is a Jira tool. Use project_key, NOT repo_id.

Example Response:

{
"success": true,
"data": {
"tickets": [
{
"id": "10042",
"key": "PROJ-123",
"summary": "Implement user authentication",
"description": "Add OAuth2 authentication flow...",
"status": {
"name": "In Progress",
"category": "indeterminate"
},
"priority": {
"name": "High"
},
"assignee": {
"accountId": "abc123",
"displayName": "John Doe"
},
"created": "2024-01-10T09:00:00.000Z",
"updated": "2024-01-20T14:30:00.000Z"
}
],
"count": 1
}
}

get_ticket​

Get single ticket details.

Input Schema:

{
"properties": {
"issue_key": { "type": "string", "description": "e.g., PROJ-123" }
},
"required": ["issue_key"]
}

create_ticket​

Create a new Jira ticket.

Input Schema:

{
"properties": {
"project_key": { "type": "string" },
"summary": { "type": "string", "description": "Ticket title" },
"issue_type": { "type": "string", "description": "Task, Bug, Story, Epic" },
"description": { "type": "string" },
"priority": { "type": "string" },
"assignee_id": { "type": "string" },
"labels": { "type": "array" }
},
"required": ["project_key", "summary", "issue_type"]
}

update_ticket​

Update an existing ticket.


get_ticket_comments​

List comments on a ticket.


add_ticket_comment​

Add comment to a ticket.


get_available_transitions​

List available workflow transitions.

Example Response:

{
"success": true,
"data": {
"transitions": [
{ "id": "11", "name": "Start Progress", "to": { "name": "In Progress" } },
{ "id": "21", "name": "Done", "to": { "name": "Done" } },
{ "id": "31", "name": "Block", "to": { "name": "Blocked" } }
]
}
}

transition_issue​

Transition ticket to new status.

Input Schema:

{
"properties": {
"issue_key": { "type": "string" },
"transition_name": { "type": "string" },
"comment": { "type": "string" }
},
"required": ["issue_key", "transition_name"]
}

assign_issue​

Assign ticket to a user.


get_issues_by_status​

Get tickets by status.


get_issue_aging​

Get ticket aging information.


add_issue_labels / remove_issue_labels​

Add or remove labels from tickets.


Metrics Operations​

get_developer_metrics​

Get developer productivity metrics.

Example Response:

{
"success": true,
"data": {
"developers": [
{
"accountId": "abc123",
"displayName": "John Doe",
"issues": {
"total": 25,
"created": 8,
"resolved": 15,
"in_progress": 2,
"blocked": 0
},
"story_points": {
"total": 45,
"completed": 38,
"average": 3.5
},
"cycle_time": {
"average_hours": 48.5
}
}
]
}
}

get_dora_metrics​

Get DORA metrics for Jira projects.


get_sprint_metrics​

Get sprint velocity and completion metrics.

Example Response:

{
"success": true,
"data": {
"sprint": {
"id": 42,
"name": "Sprint 23",
"state": "active",
"startDate": "2024-01-15T00:00:00.000Z",
"endDate": "2024-01-29T00:00:00.000Z"
},
"metrics": {
"total_issues": 18,
"completed": 12,
"remaining": 6,
"completion_rate": 66.7,
"story_points": {
"committed": 45,
"completed": 30,
"velocity": 30
}
}
}
}

get_throughput_metrics​

Get aggregated throughput metrics.


get_throughput_metrics_by_project​

Get per-project throughput metrics.


get_project_productivity_metrics​

Get project productivity metrics.


get_developer_ticket_metrics_all_projects​

Get comprehensive developer ticket metrics.


get_executive_summary_all_projects​

Get executive summary with health scores.

Example Response:

{
"success": true,
"data": {
"period": {
"start": "2024-01-13T00:00:00.000Z",
"end": "2024-01-20T00:00:00.000Z",
"days": 7
},
"health_score": {
"overall": 85,
"category": "Healthy",
"factors": {
"delivery": 90,
"quality": 82,
"velocity": 83
}
},
"delivery": {
"issues_completed": 45,
"story_points_delivered": 120,
"cycle_time_avg_hours": 36.5
},
"risks": [
{
"type": "blocked_issues",
"count": 3,
"description": "3 issues blocked for >48 hours"
}
],
"team_activity": {
"active_developers": 8,
"total_commits": 156
}
}
}

get_my_jira_work​

Get all open Jira work for a user.

Input Schema:

{
"properties": {
"user_identifier": { "type": "string", "description": "Email, account_id, or username" }
},
"required": []
}

Confluence Tools (14 Tools)​

See the Confluence API Reference for detailed documentation on all 14 Confluence tools.


Tool Execution Details​

Parameter Types​

Tools accept three types of parameters:

  1. Path Parameters: Required parameters in the URL path

    • Example: repo_id in /github/repositories/{repo_id}/issues
  2. Query Parameters: Optional parameters as URL query strings

    • Example: limit, offset, state
  3. Body Parameters: For POST/PUT requests

    • Example: title, description, labels for create_issue

Optional Repository/Project Parameters​

Many tools support parallel execution when the repository or project identifier is omitted:

  • GitHub: repo_id is optional for most list/metrics operations
  • Jira: project_key is optional for list/metrics operations
  • Confluence: space_key is optional for page listings

When omitted, the API fetches data from all accessible resources in parallel.


Error Handling​

Tool Not Found​

{
"success": false,
"error": "Tool 'invalid_tool' not found in system 'github'"
}

Status Code: 404

Missing Required Parameters​

{
"success": false,
"error": "Missing required path parameters: ['repo_id']"
}

Status Code: 400

Authentication Required​

{
"success": false,
"error": "X-JWT-Token header is required for this tool"
}

Status Code: 401


Tool Configuration​

Tools are configured in ontology.yaml, which serves as the single source of truth for the MCP system:

Domain Configuration​

Domains group tools by functional area and include LLM routing hints:

domains:
work:
description: "Issues, tickets, sprints, and project management"
keywords: ["ticket", "issue", "bug", "task", "sprint", "jira"]
when_to_use: "Use for issue tracking..."
systems: [jira, github]
concepts:
- Issue
- Sprint
tools:
jira:
- get_tickets
- get_ticket

Concept Configuration​

Concepts define unified entities with operations and LLM hints:

concepts:
Issue:
description: "Work item, bug, or task"
llm_hints:
aliases: ["ticket", "issue", "bug"]
when_to_use: "Use for work tracking operations..."
examples:
- query: "Show my open tickets"
tool: "issue.list"
operations:
list:
description: "List issues/tickets"
type: read
params:
state: { type: string, enum: [open, closed, all] }

Google Services Integration​

Google services (Calendar, Gmail, Chat) are integrated into the MCP tool registry. See Google API Reference for complete documentation.

Available Google tools:

  • calendar:list, calendarevent:list, calendarevent:create, etc.
  • email:list, email:send, emailthread:read, etc.
  • chatspace:list, chatmessage:create, etc.

Or use concept-based naming: CalendarEvent.list, Email.send, ChatMessage.create, etc.

Slack Integration​

Slack services (Channels, Messages) are integrated into the MCP tool registry. See Slack API Reference for complete documentation.

Available Slack tools:

  • slackchannel:list, slackchannel:read
  • slackmessage:list, slackmessage:read, slackmessage:create, slackmessage:update, slackmessage:delete

Or use concept-based naming: SlackChannel.list, SlackMessage.send, etc.