{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_6962syrvwf3q","handle":"gluecron","url":"https://wellknown.network/agents/gluecron","links":{"self":"https://wellknown.network/agents/gluecron/record.json","html":"https://wellknown.network/agents/gluecron","markdown":"https://wellknown.network/agents/gluecron/record.md","api":"https://wellknown.network/api/v1/agents/gluecron","status":"https://wellknown.network/api/v1/agents/gluecron/status","claim":"https://wellknown.network/agents/gluecron/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/gluecron/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:gluecron.com:server:gluecron","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Gluecron","summary":"AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).","description":"AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).","publisher":{"name":"com.gluecron","url":null},"homepage":"https://gluecron.com","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://gluecron.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-14T06:35:08.1068Z","publishedAt":"2026-07-14T06:35:08.1068Z","registryName":"com.gluecron/gluecron"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"code.review","name":"Code Review","confidence":1,"provenance":"derived"},{"slug":"code.security-review","name":"Security Review","confidence":1,"provenance":"derived"},{"slug":"code.refactoring","name":"Refactoring","confidence":1,"provenance":"derived"},{"slug":"data.vector-search","name":"Vector Search","confidence":1,"provenance":"derived"},{"slug":"dev.version-control","name":"Version Control","confidence":1,"provenance":"derived"},{"slug":"dev.filesystem","name":"Filesystem","confidence":1,"provenance":"derived"},{"slug":"dev.package-management","name":"Packages & Dependencies","confidence":0.583,"provenance":"derived"},{"slug":"ai.agent-discovery","name":"Agent Discovery","confidence":0.54,"provenance":"derived"}],"categories":["ai","code","data","dev"]},"observed":{"status":"live","statusReason":"Responded 45m ago.","lastOkAt":"2026-09-05T21:29:44.825Z","lastProbedAt":"2026-09-05T21:29:44.825Z","statusComputedAt":"2026-09-05T21:30:41.018Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":122},"latestObservations":[{"at":"2026-09-05T21:29:44.825Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":122,"error":null,"detail":{"tools":[{"name":"gluecron_repo_search","description":"Search Gluecron repositories by keyword (name + description), case-insensitively. Returns public repos plus any private repos owned by the authenticated caller."},{"name":"gluecron_repo_read_file","description":"Read a single file from a repository at a given ref (branch / tag / commit). Private repos are readable when the authenticated caller has access. Returns the te"},{"name":"gluecron_repo_list_issues","description":"List open issues for a public repository. Returns up to 50 ordered by most-recent."},{"name":"gluecron_repo_explain_codebase","description":"Return the cached AI 'explain this codebase' Markdown for a public repo (most recent commit). Returns null when no cached explanation exists yet."},{"name":"gluecron_repo_health","description":"Compute the current health report for a public repo: overall score (0-100), letter grade, per-category breakdown (security/testing/complexity/dependencies/docum"},{"name":"gluecron_create_issue","description":"Create a new issue on a Gluecron repository. Requires authenticated caller with write access on the target repo. Returns {number, url}."},{"name":"gluecron_comment_issue","description":"Add a comment to an existing issue. Requires authenticated caller with write access. Returns {commentId}."},{"name":"gluecron_close_issue","description":"Close an open issue. Requires authenticated caller with write access. Idempotent — closing an already-closed issue is a no-op. Returns {state}."},{"name":"gluecron_reopen_issue","description":"Reopen a previously closed issue. Requires authenticated caller with write access. Idempotent. Returns {state}."},{"name":"gluecron_create_pr","description":"Open a new pull request. `head_branch` is required; `base_branch` defaults to the repo default branch. Requires authenticated caller with write access. Returns "},{"name":"gluecron_get_pr","description":"Fetch the full detail record of a pull request (title, body, state, branches, draft, author, timestamps). Authenticated callers only (the read tool surface stil"},{"name":"gluecron_list_prs","description":"List pull requests on a repo, filtered by state (open|closed|merged|all). Authenticated callers only. Returns up to 50 summary rows."},{"name":"gluecron_comment_pr","description":"Add a comment to a pull request. Requires authenticated caller with write access. Returns {commentId}."},{"name":"gluecron_merge_pr","description":"Merge an open PR. Enforces the same checks as the HTTP merge flow: not a draft, head SHA resolves, GateTest+AI-review hard gates pass, branch-protection rules s"},{"name":"gluecron_close_pr","description":"Close an open pull request without merging. Requires authenticated caller with write access. Idempotent. Returns {state}."},{"name":"gluecron_fork_repo","description":"Fork a repository to the authenticated caller's namespace. Mirrors POST /:owner/:repo/fork. Returns {owner, repo, url}. Requires 'repo' scope."},{"name":"gluecron_delete_repo","description":"Permanently delete a repository row (git data on disk is left untouched). Owner-only. Requires 'admin' scope. Returns {deleted: true}."},{"name":"gluecron_update_repo","description":"Update repository description / visibility / default_branch. Owner-only. Requires 'repo' scope. Returns {ok: true}."},{"name":"gluecron_search_repos","description":"Full-text search of public repositories by name/description, case-insensitively. Mirrors GET /api/v2/search/repos. `total` is the full match count (not the page"},{"name":"gluecron_clone_url","description":"Return the authenticated HTTPS clone URL for a repo + a credential-helper hint. Use this instead of embedding tokens in URLs. Returns {url, hint}."},{"name":"gluecron_label_issue","description":"Attach one or more labels to an issue. Labels are created if they don't yet exist on the repo. Requires 'repo' scope. Returns {labels}."},{"name":"gluecron_unlabel_issue","description":"Detach a label from an issue. Idempotent. Requires 'repo' scope. Returns {removed: boolean}."},{"name":"gluecron_assign_issue","description":"Assign an issue to a user. Gluecron does not yet have a dedicated assignee table; assignment is modelled as an `assignee:<username>` label so it integrates with"},{"name":"gluecron_search_issues","description":"Search issues by title/body keyword on a single repo, filtered by state. Returns ranked rows."},{"name":"gluecron_request_changes","description":"Post a 'changes requested' AI-review comment on a PR. The comment is tagged with isAiReview=true so the gate-checker recognises it. Requires 'repo' scope."},{"name":"gluecron_search_prs","description":"Search pull requests by title/body keyword on a repo."},{"name":"gluecron_open_draft_pr","description":"Open a draft pull request. Same payload as gluecron_create_pr but forces is_draft=true. Useful for AI-in-progress PRs that shouldn't run mergeability checks yet"},{"name":"gluecron_generate_pr_description","description":"Generate an AI commit-message-style description for a diff. Uses src/lib/ai-commit-message.ts under the hood; gracefully degrades to a heuristic when ANTHROPIC_"},{"name":"gluecron_read_file","description":"Read a file from a repo at a given ref. Mirrors GET /api/v2/repos/:owner/:repo/contents/:path. Returns {path, size, content, encoding}."},{"name":"gluecron_write_file","description":"Create or update a file on a branch via git plumbing. Wraps `createOrUpdateFileOnBranch`. Pass `content` as a UTF-8 string OR `content_base64` for binary. Requi"},{"name":"gluecron_delete_file","description":"Delete a file from a branch via git plumbing. Requires the existing blob sha (optimistic concurrency) and 'repo' scope. Mirrors DELETE /api/v2/contents."},{"name":"gluecron_list_tree","description":"List directory contents at a ref. `path` scopes the listing to a subtree and is honoured in BOTH modes; `recursive: true` walks the whole subtree instead of one"},{"name":"gluecron_get_commit","description":"Fetch a single commit by SHA: metadata plus the list of files it changed (path, status, additions, deletions). Mirrors GET /api/v2/repos/.../commits/:sha. Patch"},{"name":"gluecron_get_diff","description":"Read the actual changes in a commit or a branch range. Pass `sha` for one commit against its first parent, or `base`+`head` for everything head adds since the m"},{"name":"gluecron_create_branch","description":"Create a new branch ref pointing at an existing sha. Mirrors POST /api/v2/repos/.../git/refs. Requires 'repo' scope. Returns {ref, sha}."},{"name":"gluecron_atomic_multi_file_commit","description":"Apply a set of file writes + deletes as a single atomic commit on a branch (creates the branch if it doesn't exist). The killer agent tool: blob/tree/commit/ref"},{"name":"gluecron_ship_spec","description":"Drop a spec file in .gluecron/specs/ with status: ready so the autopilot picks it up. Wraps voice-to-pr.shipAsSpec — handle both voice + manual specs. Requires "},{"name":"gluecron_voice_to_pr","description":"Interpret a free-form voice transcript and either ship it as a spec or create an issue (caller picks via `as`). Wraps src/lib/voice-to-pr.ts. Requires 'repo' sc"},{"name":"gluecron_refactor_across_repos","description":"Plan + execute a refactor that spans multiple repos owned by the caller. Wraps src/lib/multi-repo-refactor.ts. `dry_run: true` returns the plan only. Requires '"},{"name":"gluecron_explain_repo","description":"Return the cached AI 'explain this codebase' Markdown for a repo. Pure read — never triggers a new generation (use the web UI for that)."},{"name":"gluecron_chat_with_repo","description":"Start a new chat with a repo: creates a chat row, sends the first user message, streams + persists the assistant reply. Returns {chat_id, reply}. If the AI serv"},{"name":"gluecron_chat_continue","description":"Send another message to an existing repo chat. Returns the assistant's reply. If the AI service does not answer this fails with a JSON-RPC error carrying {chat_"},{"name":"gluecron_generate_tests","description":"Generate tests for a PR via Claude. Wraps src/lib/ai-test-generator.generateTestsForPr. Mode 'follow-up-pr' opens a new PR; 'append-commit' commits onto the hea"},{"name":"gluecron_generate_commit_message","description":"Generate a commit message for a diff. Same engine as gluecron_generate_pr_description but explicit for the commit-message use case."},{"name":"gluecron_generate_release_notes","description":"Generate release notes between two tags. Wraps src/lib/ai-release-notes.generateReleaseNotes. Returns the rendered Markdown + section data."},{"name":"gluecron_propose_migration","description":"Propose a dependency-upgrade PR. Wraps src/lib/migration-assistant.proposeMajorMigration. Requires 'repo' scope."},{"name":"gluecron_propose_doc_update","description":"Manual trigger for the AI doc-update flow: scans tracked sections on the default branch and opens a PR rewriting stale prose. Requires 'repo' scope."},{"name":"gluecron_trigger_workflow","description":"Dispatch a workflow_dispatch run. Mirrors POST /api/v2/repos/.../actions/workflows/:filename/dispatches. Requires 'repo' scope."},{"name":"gluecron_get_workflow_run","description":"Fetch a workflow run's metadata + status. Mirrors GET /api/v2/repos/.../actions/runs/:id."},{"name":"gluecron_get_workflow_logs","description":"Return concatenated per-job logs for a workflow run, plus per-job metadata. JSON-friendly companion to the ZIP-download endpoint."},{"name":"gluecron_cancel_workflow_run","description":"Cancel a queued/running workflow run. Requires 'repo' scope."},{"name":"gluecron_get_preview_url","description":"Return the branch-preview URL + status for a (repo, branch) pair. Wraps branch-previews.getPreviewForBranch. Returns {ok:false, reason:'not enabled on this host"},{"name":"gluecron_provision_pr_sandbox","description":"Provision (or re-provision) a sandbox for a PR. Wraps pr-sandbox.provisionSandbox. Requires 'repo' scope. Returns {ok:false, reason:'not enabled on this host'} "},{"name":"gluecron_create_agent_session","description":"Mint a new agent-multiplayer session. Returns the plaintext `token` exactly once (store it). Requires 'admin' scope."},{"name":"gluecron_acquire_lease","description":"Grab an exclusive lease on a target (e.g. a PR or branch) for an agent session. Returns null when another agent holds an active lease."},{"name":"gluecron_release_lease","description":"Release a lease by id. Idempotent. Returns {released}."},{"name":"gluecron_get_agent_budget","description":"Return spent / cap / remaining cents for an agent session."},{"name":"gluecron_semantic_search","description":"Query the per-repo vector index (Voyage embeddings when configured, hash fallback otherwise). Reads the live per-push index (code_embeddings) first, falling bac"},{"name":"gluecron_find_symbol","description":"Find definitions of a symbol by name within a repo. Wraps src/lib/symbols.findDefinitions."},{"name":"gluecron_pr_status_summary","description":"Compute a one-shot status summary for a PR: state, risk score, AI-review verdicts (trio), gate signals. Read-only."},{"name":"gluecron_ai_cost_summary","description":"Return AI spend rollups. Scope by one of: user_id (self), repo {owner,repo}, or agent_session_id. Defaults to caller's user spend."},{"name":"gluecron_security_scan","description":"Everything Gluecron actually knows about a repository's security, in one honest call: OSV.dev CVE/GHSA advisories against the indexed dependency graph (with FIX"}],"toolCount":62,"serverName":"gluecron","capabilities":["tools","resources"],"serverVersion":"1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"gluecron_repo_search","description":"Search Gluecron repositories by keyword (name + description), case-insensitively. Returns public repos plus any private repos owned by the authenticated caller."},{"name":"gluecron_repo_read_file","description":"Read a single file from a repository at a given ref (branch / tag / commit). Private repos are readable when the authenticated caller has access. Returns the te"},{"name":"gluecron_repo_list_issues","description":"List open issues for a public repository. Returns up to 50 ordered by most-recent."},{"name":"gluecron_repo_explain_codebase","description":"Return the cached AI 'explain this codebase' Markdown for a public repo (most recent commit). Returns null when no cached explanation exists yet."},{"name":"gluecron_repo_health","description":"Compute the current health report for a public repo: overall score (0-100), letter grade, per-category breakdown (security/testing/complexity/dependencies/docum"},{"name":"gluecron_create_issue","description":"Create a new issue on a Gluecron repository. Requires authenticated caller with write access on the target repo. Returns {number, url}."},{"name":"gluecron_comment_issue","description":"Add a comment to an existing issue. Requires authenticated caller with write access. Returns {commentId}."},{"name":"gluecron_close_issue","description":"Close an open issue. Requires authenticated caller with write access. Idempotent — closing an already-closed issue is a no-op. Returns {state}."},{"name":"gluecron_reopen_issue","description":"Reopen a previously closed issue. Requires authenticated caller with write access. Idempotent. Returns {state}."},{"name":"gluecron_create_pr","description":"Open a new pull request. `head_branch` is required; `base_branch` defaults to the repo default branch. Requires authenticated caller with write access. Returns "},{"name":"gluecron_get_pr","description":"Fetch the full detail record of a pull request (title, body, state, branches, draft, author, timestamps). Authenticated callers only (the read tool surface stil"},{"name":"gluecron_list_prs","description":"List pull requests on a repo, filtered by state (open|closed|merged|all). Authenticated callers only. Returns up to 50 summary rows."},{"name":"gluecron_comment_pr","description":"Add a comment to a pull request. Requires authenticated caller with write access. Returns {commentId}."},{"name":"gluecron_merge_pr","description":"Merge an open PR. Enforces the same checks as the HTTP merge flow: not a draft, head SHA resolves, GateTest+AI-review hard gates pass, branch-protection rules s"},{"name":"gluecron_close_pr","description":"Close an open pull request without merging. Requires authenticated caller with write access. Idempotent. Returns {state}."},{"name":"gluecron_fork_repo","description":"Fork a repository to the authenticated caller's namespace. Mirrors POST /:owner/:repo/fork. Returns {owner, repo, url}. Requires 'repo' scope."},{"name":"gluecron_delete_repo","description":"Permanently delete a repository row (git data on disk is left untouched). Owner-only. Requires 'admin' scope. Returns {deleted: true}."},{"name":"gluecron_update_repo","description":"Update repository description / visibility / default_branch. Owner-only. Requires 'repo' scope. Returns {ok: true}."},{"name":"gluecron_search_repos","description":"Full-text search of public repositories by name/description, case-insensitively. Mirrors GET /api/v2/search/repos. `total` is the full match count (not the page"},{"name":"gluecron_clone_url","description":"Return the authenticated HTTPS clone URL for a repo + a credential-helper hint. Use this instead of embedding tokens in URLs. Returns {url, hint}."},{"name":"gluecron_label_issue","description":"Attach one or more labels to an issue. Labels are created if they don't yet exist on the repo. Requires 'repo' scope. Returns {labels}."},{"name":"gluecron_unlabel_issue","description":"Detach a label from an issue. Idempotent. Requires 'repo' scope. Returns {removed: boolean}."},{"name":"gluecron_assign_issue","description":"Assign an issue to a user. Gluecron does not yet have a dedicated assignee table; assignment is modelled as an `assignee:<username>` label so it integrates with"},{"name":"gluecron_search_issues","description":"Search issues by title/body keyword on a single repo, filtered by state. Returns ranked rows."},{"name":"gluecron_request_changes","description":"Post a 'changes requested' AI-review comment on a PR. The comment is tagged with isAiReview=true so the gate-checker recognises it. Requires 'repo' scope."},{"name":"gluecron_search_prs","description":"Search pull requests by title/body keyword on a repo."},{"name":"gluecron_open_draft_pr","description":"Open a draft pull request. Same payload as gluecron_create_pr but forces is_draft=true. Useful for AI-in-progress PRs that shouldn't run mergeability checks yet"},{"name":"gluecron_generate_pr_description","description":"Generate an AI commit-message-style description for a diff. Uses src/lib/ai-commit-message.ts under the hood; gracefully degrades to a heuristic when ANTHROPIC_"},{"name":"gluecron_read_file","description":"Read a file from a repo at a given ref. Mirrors GET /api/v2/repos/:owner/:repo/contents/:path. Returns {path, size, content, encoding}."},{"name":"gluecron_write_file","description":"Create or update a file on a branch via git plumbing. Wraps `createOrUpdateFileOnBranch`. Pass `content` as a UTF-8 string OR `content_base64` for binary. Requi"},{"name":"gluecron_delete_file","description":"Delete a file from a branch via git plumbing. Requires the existing blob sha (optimistic concurrency) and 'repo' scope. Mirrors DELETE /api/v2/contents."},{"name":"gluecron_list_tree","description":"List directory contents at a ref. `path` scopes the listing to a subtree and is honoured in BOTH modes; `recursive: true` walks the whole subtree instead of one"},{"name":"gluecron_get_commit","description":"Fetch a single commit by SHA: metadata plus the list of files it changed (path, status, additions, deletions). Mirrors GET /api/v2/repos/.../commits/:sha. Patch"},{"name":"gluecron_get_diff","description":"Read the actual changes in a commit or a branch range. Pass `sha` for one commit against its first parent, or `base`+`head` for everything head adds since the m"},{"name":"gluecron_create_branch","description":"Create a new branch ref pointing at an existing sha. Mirrors POST /api/v2/repos/.../git/refs. Requires 'repo' scope. Returns {ref, sha}."},{"name":"gluecron_atomic_multi_file_commit","description":"Apply a set of file writes + deletes as a single atomic commit on a branch (creates the branch if it doesn't exist). The killer agent tool: blob/tree/commit/ref"},{"name":"gluecron_ship_spec","description":"Drop a spec file in .gluecron/specs/ with status: ready so the autopilot picks it up. Wraps voice-to-pr.shipAsSpec — handle both voice + manual specs. Requires "},{"name":"gluecron_voice_to_pr","description":"Interpret a free-form voice transcript and either ship it as a spec or create an issue (caller picks via `as`). Wraps src/lib/voice-to-pr.ts. Requires 'repo' sc"},{"name":"gluecron_refactor_across_repos","description":"Plan + execute a refactor that spans multiple repos owned by the caller. Wraps src/lib/multi-repo-refactor.ts. `dry_run: true` returns the plan only. Requires '"},{"name":"gluecron_explain_repo","description":"Return the cached AI 'explain this codebase' Markdown for a repo. Pure read — never triggers a new generation (use the web UI for that)."},{"name":"gluecron_chat_with_repo","description":"Start a new chat with a repo: creates a chat row, sends the first user message, streams + persists the assistant reply. Returns {chat_id, reply}. If the AI serv"},{"name":"gluecron_chat_continue","description":"Send another message to an existing repo chat. Returns the assistant's reply. If the AI service does not answer this fails with a JSON-RPC error carrying {chat_"},{"name":"gluecron_generate_tests","description":"Generate tests for a PR via Claude. Wraps src/lib/ai-test-generator.generateTestsForPr. Mode 'follow-up-pr' opens a new PR; 'append-commit' commits onto the hea"},{"name":"gluecron_generate_commit_message","description":"Generate a commit message for a diff. Same engine as gluecron_generate_pr_description but explicit for the commit-message use case."},{"name":"gluecron_generate_release_notes","description":"Generate release notes between two tags. Wraps src/lib/ai-release-notes.generateReleaseNotes. Returns the rendered Markdown + section data."},{"name":"gluecron_propose_migration","description":"Propose a dependency-upgrade PR. Wraps src/lib/migration-assistant.proposeMajorMigration. Requires 'repo' scope."},{"name":"gluecron_propose_doc_update","description":"Manual trigger for the AI doc-update flow: scans tracked sections on the default branch and opens a PR rewriting stale prose. Requires 'repo' scope."},{"name":"gluecron_trigger_workflow","description":"Dispatch a workflow_dispatch run. Mirrors POST /api/v2/repos/.../actions/workflows/:filename/dispatches. Requires 'repo' scope."},{"name":"gluecron_get_workflow_run","description":"Fetch a workflow run's metadata + status. Mirrors GET /api/v2/repos/.../actions/runs/:id."},{"name":"gluecron_get_workflow_logs","description":"Return concatenated per-job logs for a workflow run, plus per-job metadata. JSON-friendly companion to the ZIP-download endpoint."},{"name":"gluecron_cancel_workflow_run","description":"Cancel a queued/running workflow run. Requires 'repo' scope."},{"name":"gluecron_get_preview_url","description":"Return the branch-preview URL + status for a (repo, branch) pair. Wraps branch-previews.getPreviewForBranch. Returns {ok:false, reason:'not enabled on this host"},{"name":"gluecron_provision_pr_sandbox","description":"Provision (or re-provision) a sandbox for a PR. Wraps pr-sandbox.provisionSandbox. Requires 'repo' scope. Returns {ok:false, reason:'not enabled on this host'} "},{"name":"gluecron_create_agent_session","description":"Mint a new agent-multiplayer session. Returns the plaintext `token` exactly once (store it). Requires 'admin' scope."},{"name":"gluecron_acquire_lease","description":"Grab an exclusive lease on a target (e.g. a PR or branch) for an agent session. Returns null when another agent holds an active lease."},{"name":"gluecron_release_lease","description":"Release a lease by id. Idempotent. Returns {released}."},{"name":"gluecron_get_agent_budget","description":"Return spent / cap / remaining cents for an agent session."},{"name":"gluecron_semantic_search","description":"Query the per-repo vector index (Voyage embeddings when configured, hash fallback otherwise). Reads the live per-push index (code_embeddings) first, falling bac"},{"name":"gluecron_find_symbol","description":"Find definitions of a symbol by name within a repo. Wraps src/lib/symbols.findDefinitions."},{"name":"gluecron_pr_status_summary","description":"Compute a one-shot status summary for a PR: state, risk score, AI-review verdicts (trio), gate signals. Read-only."},{"name":"gluecron_ai_cost_summary","description":"Return AI spend rollups. Scope by one of: user_id (self), repo {owner,repo}, or agent_session_id. Defaults to caller's user spend."},{"name":"gluecron_security_scan","description":"Everything Gluecron actually knows about a repository's security, in one honest call: OSV.dev CVE/GHSA advisories against the indexed dependency graph (with FIX"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.gluecron/gluecron","url":"https://registry.modelcontextprotocol.io/v0/servers/com.gluecron%2Fgluecron","firstSeenAt":"2026-09-05T18:20:06.362Z","fetchedAt":"2026-09-05T18:20:06.362Z","normalizedAt":"2026-09-05T18:20:06.362Z"}]},"firstSeenAt":"2026-09-05T18:20:06.362Z","updatedAt":"2026-09-05T21:30:48.846Z"}