{
  "$schema_note": "Anthropic Claude Desktop .dxt extension manifest. Schema is still in flux at the time of authoring (Q1 build); we lock dxt_version to '0.1' as the conservative baseline. If/when Anthropic ships a stable schema reference and the field names diverge, this file should be regenerated to match — keep server.type=http, the user_config prompt fields, and the tools list as the source of truth.",
  "dxt_version": "0.1",
  "name": "gluecron",
  "display_name": "Gluecron",
  "version": "1.0.0",
  "description": "AI-native git hosting. Claude can open PRs, review code, merge, manage issues, drive autopilot — all on Gluecron.",
  "long_description": "Gluecron is the git host built around Claude. This extension exposes the full 50+ tool MCP surface: read/write files, open/review/merge PRs, file/label/assign issues, ship specs, run multi-repo refactors, chat with a repo, generate tests, propose migrations, dispatch + cancel workflows, lease agent multiplayer targets, and query semantic + symbol indices. Drive the entire AI-native dev loop end-to-end.",
  "author": {
    "name": "Gluecron",
    "url": "https://gluecron.com"
  },
  "homepage": "https://gluecron.com",
  "documentation": "https://gluecron.com/help#mcp",
  "support": "https://gluecron.com/help",
  "icon": "icon.png",
  "screenshots": ["screenshot-1.png"],
  "server": {
    "type": "http",
    "endpoint": "${user_config.gluecron_host}/mcp",
    "headers": {
      "Authorization": "Bearer ${user_config.gluecron_pat}"
    }
  },
  "user_config": {
    "gluecron_host": {
      "type": "string",
      "title": "Gluecron host",
      "description": "URL of your Gluecron instance.",
      "default": "https://gluecron.com",
      "required": true
    },
    "gluecron_pat": {
      "type": "string",
      "title": "Personal access token",
      "description": "Generate one at <host>/settings/tokens with admin scope (needed for write tools).",
      "sensitive": true,
      "required": true
    }
  },
  "tools": [
    {"name": "gluecron_repo_search", "description": "Search public Gluecron repositories by keyword."},
    {"name": "gluecron_repo_read_file", "description": "Read a file from a Gluecron repo at a ref."},
    {"name": "gluecron_repo_list_issues", "description": "List open issues for a repo."},
    {"name": "gluecron_repo_explain_codebase", "description": "Get the AI explain-this-codebase Markdown for a repo."},
    {"name": "gluecron_repo_health", "description": "Compute the current health score for a repo."},
    {"name": "gluecron_create_issue", "description": "Open a new issue."},
    {"name": "gluecron_comment_issue", "description": "Comment on an issue."},
    {"name": "gluecron_close_issue", "description": "Close an issue."},
    {"name": "gluecron_reopen_issue", "description": "Reopen an issue."},
    {"name": "gluecron_create_pr", "description": "Open a pull request from head into base."},
    {"name": "gluecron_get_pr", "description": "Read a PR's metadata + state + mergeable hint."},
    {"name": "gluecron_list_prs", "description": "List PRs by state."},
    {"name": "gluecron_comment_pr", "description": "Comment on a PR."},
    {"name": "gluecron_merge_pr", "description": "Merge a PR (gated on branch protection + AI review + risk score)."},
    {"name": "gluecron_close_pr", "description": "Close a PR without merging."},
    {"name": "gluecron_fork_repo", "description": "Fork a repo to the caller's namespace."},
    {"name": "gluecron_delete_repo", "description": "Permanently delete a repo (admin)."},
    {"name": "gluecron_update_repo", "description": "Update description / visibility / default branch."},
    {"name": "gluecron_search_repos", "description": "Full search of public repos with sort + filters."},
    {"name": "gluecron_clone_url", "description": "Authed HTTPS clone URL + credential-helper hint."},
    {"name": "gluecron_label_issue", "description": "Attach labels to an issue (auto-creates missing)."},
    {"name": "gluecron_unlabel_issue", "description": "Detach a single label from an issue."},
    {"name": "gluecron_assign_issue", "description": "Assign an issue to a user via assignee:* label."},
    {"name": "gluecron_search_issues", "description": "Title/body keyword search of issues on a repo."},
    {"name": "gluecron_request_changes", "description": "Post a 'changes requested' AI-review comment on a PR."},
    {"name": "gluecron_search_prs", "description": "Title/body keyword search of PRs on a repo."},
    {"name": "gluecron_open_draft_pr", "description": "Open a draft pull request (is_draft=true)."},
    {"name": "gluecron_generate_pr_description", "description": "AI commit-message-style description for a diff."},
    {"name": "gluecron_read_file", "description": "Read a file at a ref (REST /contents wrapper)."},
    {"name": "gluecron_write_file", "description": "Create/update a file on a branch (utf8 or base64)."},
    {"name": "gluecron_delete_file", "description": "Delete a file on a branch (optimistic-concurrency by sha)."},
    {"name": "gluecron_list_tree", "description": "List a directory tree at a ref (recursive supported)."},
    {"name": "gluecron_get_commit", "description": "Fetch a single commit's metadata."},
    {"name": "gluecron_create_branch", "description": "Create a new branch ref at an existing sha."},
    {"name": "gluecron_atomic_multi_file_commit", "description": "Apply a set of writes + deletes as one atomic commit."},
    {"name": "gluecron_ship_spec", "description": "Drop .gluecron/specs/*.md status:ready for the autopilot."},
    {"name": "gluecron_voice_to_pr", "description": "Transcript → spec or issue (auto-classified)."},
    {"name": "gluecron_refactor_across_repos", "description": "Plan + execute a multi-repo refactor."},
    {"name": "gluecron_explain_repo", "description": "Cached AI explain-this-repo markdown."},
    {"name": "gluecron_chat_with_repo", "description": "Start a chat with a repo + send the first message."},
    {"name": "gluecron_chat_continue", "description": "Send another message in an existing repo chat."},
    {"name": "gluecron_generate_tests", "description": "Generate tests for a PR (follow-up-pr or append-commit)."},
    {"name": "gluecron_generate_commit_message", "description": "Generate a commit message for a diff."},
    {"name": "gluecron_generate_release_notes", "description": "Section-bucketed release notes between two tags."},
    {"name": "gluecron_propose_migration", "description": "Propose a dep-upgrade PR via migration-assistant."},
    {"name": "gluecron_propose_doc_update", "description": "Doc-drift scan + AI-rewrite PR."},
    {"name": "gluecron_trigger_workflow", "description": "Dispatch a workflow_dispatch run."},
    {"name": "gluecron_get_workflow_run", "description": "Fetch a workflow run's metadata + status."},
    {"name": "gluecron_get_workflow_logs", "description": "Per-job log payload for a workflow run."},
    {"name": "gluecron_cancel_workflow_run", "description": "Cancel a queued/running workflow run."},
    {"name": "gluecron_get_preview_url", "description": "Branch-preview URL + status for (repo, branch)."},
    {"name": "gluecron_provision_pr_sandbox", "description": "Provision (or re-provision) a sandbox for a PR."},
    {"name": "gluecron_create_agent_session", "description": "Mint an agent-multiplayer session (token returned once)."},
    {"name": "gluecron_acquire_lease", "description": "Grab an exclusive lease on a target for an agent."},
    {"name": "gluecron_release_lease", "description": "Release a held lease by id."},
    {"name": "gluecron_get_agent_budget", "description": "Return spent / cap / remaining cents for an agent."},
    {"name": "gluecron_semantic_search", "description": "Query the per-repo vector index."},
    {"name": "gluecron_find_symbol", "description": "Find definitions of a symbol within a repo."},
    {"name": "gluecron_pr_status_summary", "description": "Compute a one-shot status summary for a PR."},
    {"name": "gluecron_ai_cost_summary", "description": "Return AI spend rollups (user/repo/agent)."}
  ],
  "compatibility": {
    "claude_desktop": ">=0.10.0",
    "platforms": ["darwin", "win32", "linux"]
  }
}
