{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_qbnvw2vucgc8","handle":"pg-ddx-io-the-postgresql-community-s-memory","url":"https://wellknown.network/agents/pg-ddx-io-the-postgresql-community-s-memory","links":{"self":"https://wellknown.network/agents/pg-ddx-io-the-postgresql-community-s-memory/record.json","html":"https://wellknown.network/agents/pg-ddx-io-the-postgresql-community-s-memory","markdown":"https://wellknown.network/agents/pg-ddx-io-the-postgresql-community-s-memory/record.md","api":"https://wellknown.network/api/v1/agents/pg-ddx-io-the-postgresql-community-s-memory","status":"https://wellknown.network/api/v1/agents/pg-ddx-io-the-postgresql-community-s-memory/status","claim":"https://wellknown.network/agents/pg-ddx-io-the-postgresql-community-s-memory/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/pg-ddx-io-the-postgresql-community-s-memory/claim.json","badge":"https://wellknown.network/agents/pg-ddx-io-the-postgresql-community-s-memory/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/pg-ddx-io-the-postgresql-community-s-memory/history","tools":"https://wellknown.network/api/v1/agents/pg-ddx-io-the-postgresql-community-s-memory/tools"},"ard":{"identifier":"urn:air:pg.ddx.io:server:pg-ddx-io-the-postgresql-community-s-memory","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"pg.ddx.io: the PostgreSQL community's memory","summary":"Every PostgreSQL mailing list since 1991, linked to the commits, code, commitfest and docs.","description":"Every PostgreSQL mailing list since 1991, linked to the commits, code, commitfest and docs.","publisher":{"name":"io.ddx.pg","url":null},"homepage":"https://pg.ddx.io/","repository":null,"version":"2026.10.22","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://pg.ddx.io/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"https://pg.ddx.io/mcp/sse","type":"mcp_sse","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-23T01:22:02.884334Z","publishedAt":"2026-10-23T01:22:02.884334Z","registryName":"io.ddx.pg/archive"},"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":"data.database","name":"Databases","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.docs-lookup","name":"Documentation Lookup","confidence":1,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":1,"provenance":"derived"},{"slug":"productivity.email","name":"Email","confidence":0.962,"provenance":"derived"},{"slug":"productivity.tasks","name":"Tasks & To-do","confidence":0.948,"provenance":"derived"}],"categories":["communication","data","dev","productivity"],"language":"en"},"observed":{"status":"recently_observed","statusReason":"Responded 2h ago; 1 recent check failed (latest 51m ago).","lastOkAt":"2026-10-27T06:23:07.500Z","lastProbedAt":"2026-10-27T07:21:50.643Z","statusComputedAt":"2026-10-27T07:24:39.255Z","reliability30d":{"probes":9,"successRate":0.6667,"p50Ms":138,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":9,"ok":6,"authBoundaryOk":0,"serviceOk":6,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-27T07:21:50.643Z","kind":"http_get","ok":false,"httpStatus":null,"latencyMs":null,"error":"timeout","detail":null},{"at":"2026-10-27T06:23:07.500Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":122,"error":null,"detail":{"tools":[{"name":"retrieve_context","description":"START HERE for a question about PostgreSQL. Searches every mailing list (inbox narrows it) with hybrid keyword + semantic ranking and returns cited passages tha"},{"name":"animal_history","description":"Run timeline for one animal. Filterable by branch and start cutoff; ordered newest first."},{"name":"animal_owner_contributions","description":"Animals run by one owner: list, branches each tracks, last status, first_seen_at and elapsed days since first observation."},{"name":"blame_symbol","description":"Show the commit history that modified a symbol's file, filtered to the symbol's line range."},{"name":"browse_by_date","description":"Browse threads within a specific date range. Useful for exploring what was discussed during a particular time period."},{"name":"build_status_freshness","description":"Most recent :entry/last-build-at observation across all entries. Use to detect a stalled cfbot scraper."},{"name":"buildfarm_overview","description":"High-level buildfarm health: animal count, recent run counts, currently-failing animals, top owners, OS / branch breakdown, and freshness."},{"name":"check_upstream_status","description":"Check whether a pull request has been merged upstream. Returns the latest patch series head commit and any merge information."},{"name":"code_index_status","description":"Get code indexing statistics: files indexed, symbol counts by kind and language, edge count, community count."},{"name":"codebase_map","description":"Get a directory-level overview of the codebase showing file counts and symbol counts per directory."},{"name":"commit_buildfarm_status","description":"Buildfarm results for one PostgreSQL commit: every animal that built it, with branch, status (passed/failed/flapping), the failing stage and the log url, plus a"},{"name":"commit_history","description":"Everything linked to one commit: subject, author and date with its sha, the mail thread its Discussion: link names (participants resolved to people and organiza"},{"name":"commitfest_stats","description":"Overview of all indexed commitfests: count by status, top contributors (entries authored), distinct people / commitfests / entries totals."},{"name":"contribution_summary","description":"Summary of contribution counts per release: unique people, distinct commits, role breakdown (count(DISTINCT commit_sha) per role, canonical authoritative repos "},{"name":"detect_changes","description":"Detect which symbols changed between two commits by comparing file content hashes."},{"name":"discussion_links","description":"Discussion / Closes / Fixes / Backpatch-through trailers attached to one commit. Returns the raw trailer text and any URL extracted. For the messages those link"},{"name":"embedding_status","description":"Get embedding coverage statistics: how many messages have embeddings, which model was used, and when embeddings were last generated."},{"name":"entry_branches","description":"Repository branches tracked for a commitfest entry. Joins commitfest.entry_repos with ag_repositories so callers see repo name + branch_name + is_authoritative."},{"name":"entry_history","description":"Status changes for a commitfest entry across commitfests. The relational table doesn't carry an audit log, so we approximate the patch's lifeline by joining on "},{"name":"find_breaks","description":"Animals that failed on a branch within the time window bounded by two commit SHAs. The window is defined by the earliest started_at observed for either SHA on t"},{"name":"find_contributions","description":"Find raw contribution rows for one person: git commit SHAs / buildfarm animals tagged with a role + release. Useful for drill-down on a contributor's recent wor"},{"name":"find_dead_code","description":"Find functions/methods with zero incoming call graph edges (potentially unused code)."},{"name":"find_entries_for_author","description":"Find commitfest entries where the given person is an author. Looks up by email (exact) or by name (substring, case-sensitive)."},{"name":"find_entries_for_thread","description":"Find commitfest entries linked to a pgsql-hackers thread by Message-ID. (Returns empty until the mailing-list cross-reference scrape lands; the index attribute "},{"name":"find_entries_with_failures_on","description":"Cross-domain feed: recent failed buildfarm runs for a named animal, plus commitfest entries with cfbot :failing rollups whose tracked branches overlap the anima"},{"name":"find_failing_patches","description":"Commitfest entries whose latest cfbot build fails on at least one platform: cf_id, title, entry_status and commitfest_number. entry_status filters (default the "},{"name":"find_failing_runs","description":"Most recent failing buildfarm runs across the entire fleet. Filterable by branch and start cutoff. Use to answer 'what is broken right now?'"},{"name":"find_passing_long_pending","description":"Green patches stuck in review: entries whose builds pass on every platform yet whose :entry/last-updated is older than N days. Useful for the 'why isn't this co"},{"name":"find_patches_by_platform_status","description":"Patches that pass on some platforms but not others. Example: passing on linux but failing on macos -> portability bug."},{"name":"find_pattern","description":"Search for a regex pattern in code symbol bodies. Uses trigram indexes for acceleration."},{"name":"find_rebase_needed_patches","description":"Entries cfbot reports as no longer applying to master tip (:entry/applies-cleanly is false). These need an author rebase."},{"name":"find_related_discussions","description":"Find mailing list messages related to a commit, topic, or PR. A postgres commit SHA (7-40 hex) returns the mail that refers to that commit (match_mode commit): "},{"name":"find_similar_messages","description":"Find messages similar to a given message using its embedding vector. Useful for finding related discussions or duplicate threads."},{"name":"get_animal","description":"Profile of one buildfarm animal: hardware/OS/compiler/owner, branches tracked, last build status, plus the last 20 runs (any branch)."},{"name":"get_attachment","description":"The content of one attachment of a mail message (a patch, a log, a test case), chosen by 1-based index or a filename substring, as listed in get_message/get_thr"},{"name":"get_author_messages","description":"Find messages by a specific author, optionally filtered by date range. Uses the f: (from) search prefix."},{"name":"get_callees","description":"Find all symbols that the given symbol calls/references (forward call graph)."},{"name":"get_callers","description":"Reverse call graph: the symbols that call or reference qualified_name (from search_symbols), each with its file and lines, like `git grep -w <name>` restricted "},{"name":"get_commitfest","description":"Get a single commitfest with entries grouped by status and the top contributors (authors with the most entries)."},{"name":"get_communities","description":"List Louvain community clusters detected in the call graph. Communities group related symbols by functional area."},{"name":"get_community","description":"Get details and member symbols for a specific community."},{"name":"get_contributor","description":"A contributor's profile by email (exact) or name (substring): canonical name, page hash, totals and per-release counts by role (authored, reviewed, committed, r"},{"name":"get_contributor_history","description":"Show all past mailing list submissions by a contributor (matched by email address or name)."},{"name":"get_dependents","description":"Get transitive dependents: all symbols in the blast radius if this symbol changes."},{"name":"get_doc_page","description":"One PostgreSQL documentation page as text: path (e.g. \"brin.html\" or \"sql-createtable.html\") and optional version (\"17\", \"current\"; default the latest). Returns"},{"name":"get_entry","description":"One commitfest entry by cf_id (the number in commitfest.postgresql.org/patch/<cf_id>/): title, status, commitfest, authors, reviewers, committer, its mail threa"},{"name":"get_execution_flows","description":"Trace execution flow paths through the call graph from entry points."},{"name":"get_impact","description":"Analyze the impact of modifying a symbol: risk level, blast radius, affected communities and execution flows."},{"name":"get_inbox_info","description":"Get metadata for an inbox (name, addresses, message count, last activity)"},{"name":"get_inbox_stats","description":"Return aggregate statistics about an inbox: message counts by time period, top authors, and activity trends."},{"name":"get_inbox_summary","description":"Per-inbox summary: total messages, top 10 posters, thread count, date range, and lifetime average messages/day (total messages divided by the days spanned by th"},{"name":"get_message","description":"One mail message by Message-ID: headers, in_reply_to/references, decoded body text (by default the author's own words: quotes, signature and inline patch remove"},{"name":"get_message_headers","description":"Get email headers as structured key/value pairs. Returns all headers or a specific header by name."},{"name":"get_message_references","description":"Discover cross-references in a message. Returns explicit References/In-Reply-To headers plus any Message-IDs found in the body text, with archive lookup for eac"},{"name":"get_new_messages","description":"Return messages newer than a given article number cursor, enabling agents to poll for new messages without re-scanning. Use after=0 for the first call, then use"},{"name":"get_patch_branches","description":"Get the git branches created from a patch series. Shows what branches were applied from email patches for code intelligence analysis."},{"name":"get_patch_build_history","description":"Build matrix for one entry: per-platform/config status, log URL, observation time, applies-cleanly flag, rollup."},{"name":"get_patch_series","description":"Get patch submission history for a forge pull request URL. Returns all iterations submitted to the mailing list."},{"name":"get_raw_message","description":"Get the complete raw RFC 822 email bytes for a message. Useful for agents that need to parse headers/structure themselves or forward messages."},{"name":"get_repo_sync_stats","description":"Get commit frequency analysis and sync statistics for a repository. Returns median commit interval, recommended poll frequency, and recent fetch log."},{"name":"get_repository_summary","description":"Per-repository summary: total commits, top 10 contributors, branches, language breakdown (from indexed symbols), and a sampled most-touched-paths list."},{"name":"get_signature","description":"Get the function/method signature and doc comment for a symbol."},{"name":"get_source_info","description":"Detail for a single source by name, the same row list_sources returns. Returns kind, item_count, last_update, next_sync, freshness_status, and description."},{"name":"get_symbol","description":"Get full details for a code symbol by its qualified name, including source code, signature, documentation, and file location."},{"name":"get_tests_for","description":"Find test symbols that reference the given symbol."},{"name":"get_thread","description":"A mail thread, found by any Message-ID in it, oldest first. Each message: from, to, cc, date, message_id, decoded body text (by default the author's own words: "},{"name":"get_thread_references","description":"Cross-reference graph for an entire thread. Collects all Message-IDs referenced in body text across all messages in the thread and resolves which other threads "},{"name":"get_wiki_history","description":"Get revision history for a wiki page."},{"name":"get_wiki_page","description":"One wiki.postgresql.org page by title: its latest revision content with author and date. Titles are as on the wiki (\"Don't Do This\", \"Todo\"). Use search_wiki to"},{"name":"git_analyze_activity","description":"Show commit activity over time, bucketed by period. Useful for understanding development pace and trends."},{"name":"git_analyze_authors","description":"Get commit statistics per author: total commits, first and last commit dates. Ranked by commit count."},{"name":"git_analyze_bus_factor","description":"Identify files with the fewest distinct authors (bus factor risk). Files modified by only one person are knowledge silos."},{"name":"git_analyze_churn","description":"Identify the most frequently modified files in the repository. High-churn files may indicate hotspots or unstable code."},{"name":"git_analyze_coupling","description":"Find files that are frequently changed together. Logical coupling can reveal hidden dependencies between components."},{"name":"git_analyze_hotspots","description":"Aggregate file churn by directory to find the most actively changed areas of the codebase."},{"name":"git_blame","description":"File version history, not a per-line blame: the commits that changed a file on the history of a commit (like `git log <rev> -- <path>`), newest first, each with"},{"name":"git_diff","description":"Two modes: (1) commit-range mode — pass base_branch and head_branch to get the list of commits unique to head_branch (set difference base..head), optionally fil"},{"name":"git_log","description":"Commit history like `git log`, newest first, filtered by path (commits touching a file), author (substring), since/until (YYYY-MM-DD or RFC 3339) and branch (an"},{"name":"git_search","description":"Search postgres commit messages (or file paths with search_in=paths) by keywords, newest first (all words must appear, case-insensitive; like `git log -i --grep"},{"name":"git_show_file","description":"Read a file at any commit, branch, tag or major version (like `git show <rev>:<path>`), from the git clone. commit takes a SHA (>= 7 hex), branch, tag, 17 or 9."},{"name":"history-of","description":"One-shot historical context for CI: given content (a diff, file path, symbol, commit subject, or feature name), return the most relevant default-branch commits,"},{"name":"hybrid_search","description":"Mailing-list search, keyword (BM25 over the authors' own words) and semantic (embeddings) blended per thread, over every list unless inbox names one or more. Re"},{"name":"hybrid_search_code","description":"Combined keyword + semantic code search using Reciprocal Rank Fusion. Requires embeddings to be generated."},{"name":"list_animals","description":"List PostgreSQL buildfarm animals. Filterable by OS, branch tracked, last build status, or owner. Failing animals are returned first (sort key: last_status='fai"},{"name":"list_branches","description":"List tracked branches for a repository, including head commit and default branch status."},{"name":"list_commitfests","description":"List PostgreSQL commitfests indexed in the mentat triple store. Each commitfest carries a status (:open / :in-progress / :closed) and an entry count grouped by "},{"name":"list_contributors","description":"List PostgreSQL community contributors aggregated across git trailers (Reviewed-by, Tested-by, etc.), commit author/committer headers, and buildfarm animal owne"},{"name":"list_discord_channels","description":"List monitored Discord channels with message counts."},{"name":"list_doc_versions","description":"List available documentation versions with page counts."},{"name":"list_entries","description":"List commitfest entries (proposed patch series). Filterable by status, commitfest number, or topic; paginated."},{"name":"list_inboxes","description":"List all configured agora mailboxes with name, message_count, latest_message_date, latest_import_date, listid (when known) and description. Optional min_message"},{"name":"list_projects","description":"List bridge-configured projects linking a forge repository to a mailing list inbox."},{"name":"list_recent","description":"List recent messages from an inbox"},{"name":"list_repositories","description":"List all registered git repositories with name, branch, commit_count, file_count, indexed-symbol_count, latest_commit, last_fetched_at, and import_state. Option"},{"name":"list_sources","description":"Every source behind this server with its kind (inbox, repository, docs, wiki, discord), item count, last update and freshness (fresh/stale): the 56 mailing list"},{"name":"list_threads","description":"Browse recent threads (topic-level view). Returns thread summaries with message counts, date ranges, and latest message metadata."},{"name":"recent_commitfest_activity","description":"Rolling window of commitfest entries updated in the last N days. Returns the entries plus a status histogram. Uses the relational commitfest.entries table for p"},{"name":"search_commitfest","description":"Full-text search of commitfest entries (title first, then author/reviewer/committer names), in the current commitfest by default, or commitfests=\"all\" (back to "},{"name":"release_contributors","description":"Top contributors per role for one release. Scope: canonical authoritative repos only (ag_repositories.is_authoritative = TRUE). Returns top 20 per role across a"},{"name":"repository_stats","description":"Get detailed statistics for a git repository including commit count, file count, branch, and import state."}],"toolCount":125,"toolsHash":"29657bcfbd66d3d07d5ef236d3b6546493c886acdac6b1255f3e8683ee262437","serverName":"pg.ddx.io","capabilities":["extensions","prompts","resources","tools"],"serverVersion":"1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T23:24:10.902Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":104,"error":null,"detail":{"tools":[{"name":"retrieve_context","description":"START HERE for a question about PostgreSQL. Searches every mailing list (inbox narrows it) with hybrid keyword + semantic ranking and returns cited passages tha"},{"name":"animal_history","description":"Run timeline for one animal. Filterable by branch and start cutoff; ordered newest first."},{"name":"animal_owner_contributions","description":"Animals run by one owner: list, branches each tracks, last status, first_seen_at and elapsed days since first observation."},{"name":"blame_symbol","description":"Show the commit history that modified a symbol's file, filtered to the symbol's line range."},{"name":"browse_by_date","description":"Browse threads within a specific date range. Useful for exploring what was discussed during a particular time period."},{"name":"build_status_freshness","description":"Most recent :entry/last-build-at observation across all entries. Use to detect a stalled cfbot scraper."},{"name":"buildfarm_overview","description":"High-level buildfarm health: animal count, recent run counts, currently-failing animals, top owners, OS / branch breakdown, and freshness."},{"name":"check_upstream_status","description":"Check whether a pull request has been merged upstream. Returns the latest patch series head commit and any merge information."},{"name":"code_index_status","description":"Get code indexing statistics: files indexed, symbol counts by kind and language, edge count, community count."},{"name":"codebase_map","description":"Get a directory-level overview of the codebase showing file counts and symbol counts per directory."},{"name":"commit_buildfarm_status","description":"Buildfarm results for one PostgreSQL commit: every animal that built it, with branch, status (passed/failed/flapping), the failing stage and the log url, plus a"},{"name":"commit_history","description":"Everything linked to one commit: subject, author and date with its sha, the mail thread its Discussion: link names (participants resolved to people and organiza"},{"name":"commitfest_stats","description":"Overview of all indexed commitfests: count by status, top contributors (entries authored), distinct people / commitfests / entries totals."},{"name":"contribution_summary","description":"Summary of contribution counts per release: unique people, distinct commits, role breakdown (count(DISTINCT commit_sha) per role, canonical authoritative repos "},{"name":"detect_changes","description":"Detect which symbols changed between two commits by comparing file content hashes."},{"name":"discussion_links","description":"Discussion / Closes / Fixes / Backpatch-through trailers attached to one commit. Returns the raw trailer text and any URL extracted. For the messages those link"},{"name":"embedding_status","description":"Get embedding coverage statistics: how many messages have embeddings, which model was used, and when embeddings were last generated."},{"name":"entry_branches","description":"Repository branches tracked for a commitfest entry. Joins commitfest.entry_repos with ag_repositories so callers see repo name + branch_name + is_authoritative."},{"name":"entry_history","description":"Status changes for a commitfest entry across commitfests. The relational table doesn't carry an audit log, so we approximate the patch's lifeline by joining on "},{"name":"find_breaks","description":"Animals that failed on a branch within the time window bounded by two commit SHAs. The window is defined by the earliest started_at observed for either SHA on t"},{"name":"find_contributions","description":"Find raw contribution rows for one person: git commit SHAs / buildfarm animals tagged with a role + release. Useful for drill-down on a contributor's recent wor"},{"name":"find_dead_code","description":"Find functions/methods with zero incoming call graph edges (potentially unused code)."},{"name":"find_entries_for_author","description":"Find commitfest entries where the given person is an author. Looks up by email (exact) or by name (substring, case-sensitive)."},{"name":"find_entries_for_thread","description":"Find commitfest entries linked to a pgsql-hackers thread by Message-ID. (Returns empty until the mailing-list cross-reference scrape lands; the index attribute "},{"name":"find_entries_with_failures_on","description":"Cross-domain feed: recent failed buildfarm runs for a named animal, plus commitfest entries with cfbot :failing rollups whose tracked branches overlap the anima"},{"name":"find_failing_patches","description":"Commitfest entries whose latest cfbot build fails on at least one platform: cf_id, title, entry_status and commitfest_number. entry_status filters (default the "},{"name":"find_failing_runs","description":"Most recent failing buildfarm runs across the entire fleet. Filterable by branch and start cutoff. Use to answer 'what is broken right now?'"},{"name":"find_passing_long_pending","description":"Green patches stuck in review: entries whose builds pass on every platform yet whose :entry/last-updated is older than N days. Useful for the 'why isn't this co"},{"name":"find_patches_by_platform_status","description":"Patches that pass on some platforms but not others. Example: passing on linux but failing on macos -> portability bug."},{"name":"find_pattern","description":"Search for a regex pattern in code symbol bodies. Uses trigram indexes for acceleration."},{"name":"find_rebase_needed_patches","description":"Entries cfbot reports as no longer applying to master tip (:entry/applies-cleanly is false). These need an author rebase."},{"name":"find_related_discussions","description":"Find mailing list messages related to a commit, topic, or PR. A postgres commit SHA (7-40 hex) returns the mail that refers to that commit (match_mode commit): "},{"name":"find_similar_messages","description":"Find messages similar to a given message using its embedding vector. Useful for finding related discussions or duplicate threads."},{"name":"get_animal","description":"Profile of one buildfarm animal: hardware/OS/compiler/owner, branches tracked, last build status, plus the last 20 runs (any branch)."},{"name":"get_attachment","description":"The content of one attachment of a mail message (a patch, a log, a test case), chosen by 1-based index or a filename substring, as listed in get_message/get_thr"},{"name":"get_author_messages","description":"Find messages by a specific author, optionally filtered by date range. Uses the f: (from) search prefix."},{"name":"get_callees","description":"Find all symbols that the given symbol calls/references (forward call graph)."},{"name":"get_callers","description":"Reverse call graph: the symbols that call or reference qualified_name (from search_symbols), each with its file and lines, like `git grep -w <name>` restricted "},{"name":"get_commitfest","description":"Get a single commitfest with entries grouped by status and the top contributors (authors with the most entries)."},{"name":"get_communities","description":"List Louvain community clusters detected in the call graph. Communities group related symbols by functional area."},{"name":"get_community","description":"Get details and member symbols for a specific community."},{"name":"get_contributor","description":"A contributor's profile by email (exact) or name (substring): canonical name, page hash, totals and per-release counts by role (authored, reviewed, committed, r"},{"name":"get_contributor_history","description":"Show all past mailing list submissions by a contributor (matched by email address or name)."},{"name":"get_dependents","description":"Get transitive dependents: all symbols in the blast radius if this symbol changes."},{"name":"get_doc_page","description":"One PostgreSQL documentation page as text: path (e.g. \"brin.html\" or \"sql-createtable.html\") and optional version (\"17\", \"current\"; default the latest). Returns"},{"name":"get_entry","description":"One commitfest entry by cf_id (the number in commitfest.postgresql.org/patch/<cf_id>/): title, status, commitfest, authors, reviewers, committer, its mail threa"},{"name":"get_execution_flows","description":"Trace execution flow paths through the call graph from entry points."},{"name":"get_impact","description":"Analyze the impact of modifying a symbol: risk level, blast radius, affected communities and execution flows."},{"name":"get_inbox_info","description":"Get metadata for an inbox (name, addresses, message count, last activity)"},{"name":"get_inbox_stats","description":"Return aggregate statistics about an inbox: message counts by time period, top authors, and activity trends."},{"name":"get_inbox_summary","description":"Per-inbox summary: total messages, top 10 posters, thread count, date range, and lifetime average messages/day (total messages divided by the days spanned by th"},{"name":"get_message","description":"One mail message by Message-ID: headers, in_reply_to/references, decoded body text (by default the author's own words: quotes, signature and inline patch remove"},{"name":"get_message_headers","description":"Get email headers as structured key/value pairs. Returns all headers or a specific header by name."},{"name":"get_message_references","description":"Discover cross-references in a message. Returns explicit References/In-Reply-To headers plus any Message-IDs found in the body text, with archive lookup for eac"},{"name":"get_new_messages","description":"Return messages newer than a given article number cursor, enabling agents to poll for new messages without re-scanning. Use after=0 for the first call, then use"},{"name":"get_patch_branches","description":"Get the git branches created from a patch series. Shows what branches were applied from email patches for code intelligence analysis."},{"name":"get_patch_build_history","description":"Build matrix for one entry: per-platform/config status, log URL, observation time, applies-cleanly flag, rollup."},{"name":"get_patch_series","description":"Get patch submission history for a forge pull request URL. Returns all iterations submitted to the mailing list."},{"name":"get_raw_message","description":"Get the complete raw RFC 822 email bytes for a message. Useful for agents that need to parse headers/structure themselves or forward messages."},{"name":"get_repo_sync_stats","description":"Get commit frequency analysis and sync statistics for a repository. Returns median commit interval, recommended poll frequency, and recent fetch log."},{"name":"get_repository_summary","description":"Per-repository summary: total commits, top 10 contributors, branches, language breakdown (from indexed symbols), and a sampled most-touched-paths list."},{"name":"get_signature","description":"Get the function/method signature and doc comment for a symbol."},{"name":"get_source_info","description":"Detail for a single source by name, the same row list_sources returns. Returns kind, item_count, last_update, next_sync, freshness_status, and description."},{"name":"get_symbol","description":"Get full details for a code symbol by its qualified name, including source code, signature, documentation, and file location."},{"name":"get_tests_for","description":"Find test symbols that reference the given symbol."},{"name":"get_thread","description":"A mail thread, found by any Message-ID in it, oldest first. Each message: from, to, cc, date, message_id, decoded body text (by default the author's own words: "},{"name":"get_thread_references","description":"Cross-reference graph for an entire thread. Collects all Message-IDs referenced in body text across all messages in the thread and resolves which other threads "},{"name":"get_wiki_history","description":"Get revision history for a wiki page."},{"name":"get_wiki_page","description":"One wiki.postgresql.org page by title: its latest revision content with author and date. Titles are as on the wiki (\"Don't Do This\", \"Todo\"). Use search_wiki to"},{"name":"git_analyze_activity","description":"Show commit activity over time, bucketed by period. Useful for understanding development pace and trends."},{"name":"git_analyze_authors","description":"Get commit statistics per author: total commits, first and last commit dates. Ranked by commit count."},{"name":"git_analyze_bus_factor","description":"Identify files with the fewest distinct authors (bus factor risk). Files modified by only one person are knowledge silos."},{"name":"git_analyze_churn","description":"Identify the most frequently modified files in the repository. High-churn files may indicate hotspots or unstable code."},{"name":"git_analyze_coupling","description":"Find files that are frequently changed together. Logical coupling can reveal hidden dependencies between components."},{"name":"git_analyze_hotspots","description":"Aggregate file churn by directory to find the most actively changed areas of the codebase."},{"name":"git_blame","description":"File version history, not a per-line blame: the commits that changed a file on the history of a commit (like `git log <rev> -- <path>`), newest first, each with"},{"name":"git_diff","description":"Two modes: (1) commit-range mode — pass base_branch and head_branch to get the list of commits unique to head_branch (set difference base..head), optionally fil"},{"name":"git_log","description":"Commit history like `git log`, newest first, filtered by path (commits touching a file), author (substring), since/until (YYYY-MM-DD or RFC 3339) and branch (an"},{"name":"git_search","description":"Search postgres commit messages (or file paths with search_in=paths) by keywords, newest first (all words must appear, case-insensitive; like `git log -i --grep"},{"name":"git_show_file","description":"Read a file at any commit, branch, tag or major version (like `git show <rev>:<path>`), from the git clone. commit takes a SHA (>= 7 hex), branch, tag, 17 or 9."},{"name":"history-of","description":"One-shot historical context for CI: given content (a diff, file path, symbol, commit subject, or feature name), return the most relevant default-branch commits,"},{"name":"hybrid_search","description":"Mailing-list search, keyword (BM25 over the authors' own words) and semantic (embeddings) blended per thread, over every list unless inbox names one or more. Re"},{"name":"hybrid_search_code","description":"Combined keyword + semantic code search using Reciprocal Rank Fusion. Requires embeddings to be generated."},{"name":"list_animals","description":"List PostgreSQL buildfarm animals. Filterable by OS, branch tracked, last build status, or owner. Failing animals are returned first (sort key: last_status='fai"},{"name":"list_branches","description":"List tracked branches for a repository, including head commit and default branch status."},{"name":"list_commitfests","description":"List PostgreSQL commitfests indexed in the mentat triple store. Each commitfest carries a status (:open / :in-progress / :closed) and an entry count grouped by "},{"name":"list_contributors","description":"List PostgreSQL community contributors aggregated across git trailers (Reviewed-by, Tested-by, etc.), commit author/committer headers, and buildfarm animal owne"},{"name":"list_discord_channels","description":"List monitored Discord channels with message counts."},{"name":"list_doc_versions","description":"List available documentation versions with page counts."},{"name":"list_entries","description":"List commitfest entries (proposed patch series). Filterable by status, commitfest number, or topic; paginated."},{"name":"list_inboxes","description":"List all configured agora mailboxes with name, message_count, latest_message_date, latest_import_date, listid (when known) and description. Optional min_message"},{"name":"list_projects","description":"List bridge-configured projects linking a forge repository to a mailing list inbox."},{"name":"list_recent","description":"List recent messages from an inbox"},{"name":"list_repositories","description":"List all registered git repositories with name, branch, commit_count, file_count, indexed-symbol_count, latest_commit, last_fetched_at, and import_state. Option"},{"name":"list_sources","description":"Every source behind this server with its kind (inbox, repository, docs, wiki, discord), item count, last update and freshness (fresh/stale): the 56 mailing list"},{"name":"list_threads","description":"Browse recent threads (topic-level view). Returns thread summaries with message counts, date ranges, and latest message metadata."},{"name":"recent_commitfest_activity","description":"Rolling window of commitfest entries updated in the last N days. Returns the entries plus a status histogram. Uses the relational commitfest.entries table for p"},{"name":"search_commitfest","description":"Full-text search of commitfest entries (title first, then author/reviewer/committer names), in the current commitfest by default, or commitfests=\"all\" (back to "},{"name":"release_contributors","description":"Top contributors per role for one release. Scope: canonical authoritative repos only (ag_repositories.is_authoritative = TRUE). Returns top 20 per role across a"},{"name":"repository_stats","description":"Get detailed statistics for a git repository including commit count, file count, branch, and import state."}],"toolCount":125,"toolsHash":"29657bcfbd66d3d07d5ef236d3b6546493c886acdac6b1255f3e8683ee262437","serverName":"pg.ddx.io","capabilities":["extensions","prompts","resources","tools"],"serverVersion":"1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T16:29:07.389Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":200,"error":null,"detail":{"tools":[{"name":"retrieve_context","description":"START HERE for a question about PostgreSQL. Searches every mailing list (inbox narrows it) with hybrid keyword + semantic ranking and returns cited passages tha"},{"name":"animal_history","description":"Run timeline for one animal. Filterable by branch and start cutoff; ordered newest first."},{"name":"animal_owner_contributions","description":"Animals run by one owner: list, branches each tracks, last status, first_seen_at and elapsed days since first observation."},{"name":"blame_symbol","description":"Show the commit history that modified a symbol's file, filtered to the symbol's line range."},{"name":"browse_by_date","description":"Browse threads within a specific date range. Useful for exploring what was discussed during a particular time period."},{"name":"build_status_freshness","description":"Most recent :entry/last-build-at observation across all entries. Use to detect a stalled cfbot scraper."},{"name":"buildfarm_overview","description":"High-level buildfarm health: animal count, recent run counts, currently-failing animals, top owners, OS / branch breakdown, and freshness."},{"name":"check_upstream_status","description":"Check whether a pull request has been merged upstream. Returns the latest patch series head commit and any merge information."},{"name":"code_index_status","description":"Get code indexing statistics: files indexed, symbol counts by kind and language, edge count, community count."},{"name":"codebase_map","description":"Get a directory-level overview of the codebase showing file counts and symbol counts per directory."},{"name":"commit_buildfarm_status","description":"Buildfarm results for one PostgreSQL commit: every animal that built it, with branch, status (passed/failed/flapping), the failing stage and the log url, plus a"},{"name":"commit_history","description":"Everything linked to one commit: subject, author and date with its sha, the mail thread its Discussion: link names (participants resolved to people and organiza"},{"name":"commitfest_stats","description":"Overview of all indexed commitfests: count by status, top contributors (entries authored), distinct people / commitfests / entries totals."},{"name":"contribution_summary","description":"Summary of contribution counts per release: unique people, distinct commits, role breakdown (count(DISTINCT commit_sha) per role, canonical authoritative repos "},{"name":"detect_changes","description":"Detect which symbols changed between two commits by comparing file content hashes."},{"name":"discussion_links","description":"Discussion / Closes / Fixes / Backpatch-through trailers attached to one commit. Returns the raw trailer text and any URL extracted. For the messages those link"},{"name":"embedding_status","description":"Get embedding coverage statistics: how many messages have embeddings, which model was used, and when embeddings were last generated."},{"name":"entry_branches","description":"Repository branches tracked for a commitfest entry. Joins commitfest.entry_repos with ag_repositories so callers see repo name + branch_name + is_authoritative."},{"name":"entry_history","description":"Status changes for a commitfest entry across commitfests. The relational table doesn't carry an audit log, so we approximate the patch's lifeline by joining on "},{"name":"find_breaks","description":"Animals that failed on a branch within the time window bounded by two commit SHAs. The window is defined by the earliest started_at observed for either SHA on t"},{"name":"find_contributions","description":"Find raw contribution rows for one person: git commit SHAs / buildfarm animals tagged with a role + release. Useful for drill-down on a contributor's recent wor"},{"name":"find_dead_code","description":"Find functions/methods with zero incoming call graph edges (potentially unused code)."},{"name":"find_entries_for_author","description":"Find commitfest entries where the given person is an author. Looks up by email (exact) or by name (substring, case-sensitive)."},{"name":"find_entries_for_thread","description":"Find commitfest entries linked to a pgsql-hackers thread by Message-ID. (Returns empty until the mailing-list cross-reference scrape lands; the index attribute "},{"name":"find_entries_with_failures_on","description":"Cross-domain feed: recent failed buildfarm runs for a named animal, plus commitfest entries with cfbot :failing rollups whose tracked branches overlap the anima"},{"name":"find_failing_patches","description":"Commitfest entries whose latest cfbot build fails on at least one platform: cf_id, title, entry_status and commitfest_number. entry_status filters (default the "},{"name":"find_failing_runs","description":"Most recent failing buildfarm runs across the entire fleet. Filterable by branch and start cutoff. Use to answer 'what is broken right now?'"},{"name":"find_passing_long_pending","description":"Green patches stuck in review: entries whose builds pass on every platform yet whose :entry/last-updated is older than N days. Useful for the 'why isn't this co"},{"name":"find_patches_by_platform_status","description":"Patches that pass on some platforms but not others. Example: passing on linux but failing on macos -> portability bug."},{"name":"find_pattern","description":"Search for a regex pattern in code symbol bodies. Uses trigram indexes for acceleration."},{"name":"find_rebase_needed_patches","description":"Entries cfbot reports as no longer applying to master tip (:entry/applies-cleanly is false). These need an author rebase."},{"name":"find_related_discussions","description":"Find mailing list messages related to a commit, topic, or PR. A postgres commit SHA (7-40 hex) returns the mail that refers to that commit (match_mode commit): "},{"name":"find_similar_messages","description":"Find messages similar to a given message using its embedding vector. Useful for finding related discussions or duplicate threads."},{"name":"get_animal","description":"Profile of one buildfarm animal: hardware/OS/compiler/owner, branches tracked, last build status, plus the last 20 runs (any branch)."},{"name":"get_attachment","description":"The content of one attachment of a mail message (a patch, a log, a test case), chosen by 1-based index or a filename substring, as listed in get_message/get_thr"},{"name":"get_author_messages","description":"Find messages by a specific author, optionally filtered by date range. Uses the f: (from) search prefix."},{"name":"get_callees","description":"Find all symbols that the given symbol calls/references (forward call graph)."},{"name":"get_callers","description":"Reverse call graph: the symbols that call or reference qualified_name (from search_symbols), each with its file and lines, like `git grep -w <name>` restricted "},{"name":"get_commitfest","description":"Get a single commitfest with entries grouped by status and the top contributors (authors with the most entries)."},{"name":"get_communities","description":"List Louvain community clusters detected in the call graph. Communities group related symbols by functional area."},{"name":"get_community","description":"Get details and member symbols for a specific community."},{"name":"get_contributor","description":"A contributor's profile by email (exact) or name (substring): canonical name, page hash, totals and per-release counts by role (authored, reviewed, committed, r"},{"name":"get_contributor_history","description":"Show all past mailing list submissions by a contributor (matched by email address or name)."},{"name":"get_dependents","description":"Get transitive dependents: all symbols in the blast radius if this symbol changes."},{"name":"get_doc_page","description":"One PostgreSQL documentation page as text: path (e.g. \"brin.html\" or \"sql-createtable.html\") and optional version (\"17\", \"current\"; default the latest). Returns"},{"name":"get_entry","description":"One commitfest entry by cf_id (the number in commitfest.postgresql.org/patch/<cf_id>/): title, status, commitfest, authors, reviewers, committer, its mail threa"},{"name":"get_execution_flows","description":"Trace execution flow paths through the call graph from entry points."},{"name":"get_impact","description":"Analyze the impact of modifying a symbol: risk level, blast radius, affected communities and execution flows."},{"name":"get_inbox_info","description":"Get metadata for an inbox (name, addresses, message count, last activity)"},{"name":"get_inbox_stats","description":"Return aggregate statistics about an inbox: message counts by time period, top authors, and activity trends."},{"name":"get_inbox_summary","description":"Per-inbox summary: total messages, top 10 posters, thread count, date range, and lifetime average messages/day (total messages divided by the days spanned by th"},{"name":"get_message","description":"One mail message by Message-ID: headers, in_reply_to/references, decoded body text (by default the author's own words: quotes, signature and inline patch remove"},{"name":"get_message_headers","description":"Get email headers as structured key/value pairs. Returns all headers or a specific header by name."},{"name":"get_message_references","description":"Discover cross-references in a message. Returns explicit References/In-Reply-To headers plus any Message-IDs found in the body text, with archive lookup for eac"},{"name":"get_new_messages","description":"Return messages newer than a given article number cursor, enabling agents to poll for new messages without re-scanning. Use after=0 for the first call, then use"},{"name":"get_patch_branches","description":"Get the git branches created from a patch series. Shows what branches were applied from email patches for code intelligence analysis."},{"name":"get_patch_build_history","description":"Build matrix for one entry: per-platform/config status, log URL, observation time, applies-cleanly flag, rollup."},{"name":"get_patch_series","description":"Get patch submission history for a forge pull request URL. Returns all iterations submitted to the mailing list."},{"name":"get_raw_message","description":"Get the complete raw RFC 822 email bytes for a message. Useful for agents that need to parse headers/structure themselves or forward messages."},{"name":"get_repo_sync_stats","description":"Get commit frequency analysis and sync statistics for a repository. Returns median commit interval, recommended poll frequency, and recent fetch log."},{"name":"get_repository_summary","description":"Per-repository summary: total commits, top 10 contributors, branches, language breakdown (from indexed symbols), and a sampled most-touched-paths list."},{"name":"get_signature","description":"Get the function/method signature and doc comment for a symbol."},{"name":"get_source_info","description":"Detail for a single source by name, the same row list_sources returns. Returns kind, item_count, last_update, next_sync, freshness_status, and description."},{"name":"get_symbol","description":"Get full details for a code symbol by its qualified name, including source code, signature, documentation, and file location."},{"name":"get_tests_for","description":"Find test symbols that reference the given symbol."},{"name":"get_thread","description":"A mail thread, found by any Message-ID in it, oldest first. Each message: from, to, cc, date, message_id, decoded body text (by default the author's own words: "},{"name":"get_thread_references","description":"Cross-reference graph for an entire thread. Collects all Message-IDs referenced in body text across all messages in the thread and resolves which other threads "},{"name":"get_wiki_history","description":"Get revision history for a wiki page."},{"name":"get_wiki_page","description":"One wiki.postgresql.org page by title: its latest revision content with author and date. Titles are as on the wiki (\"Don't Do This\", \"Todo\"). Use search_wiki to"},{"name":"git_analyze_activity","description":"Show commit activity over time, bucketed by period. Useful for understanding development pace and trends."},{"name":"git_analyze_authors","description":"Get commit statistics per author: total commits, first and last commit dates. Ranked by commit count."},{"name":"git_analyze_bus_factor","description":"Identify files with the fewest distinct authors (bus factor risk). Files modified by only one person are knowledge silos."},{"name":"git_analyze_churn","description":"Identify the most frequently modified files in the repository. High-churn files may indicate hotspots or unstable code."},{"name":"git_analyze_coupling","description":"Find files that are frequently changed together. Logical coupling can reveal hidden dependencies between components."},{"name":"git_analyze_hotspots","description":"Aggregate file churn by directory to find the most actively changed areas of the codebase."},{"name":"git_blame","description":"File version history, not a per-line blame: the commits that changed a file on the history of a commit (like `git log <rev> -- <path>`), newest first, each with"},{"name":"git_diff","description":"Two modes: (1) commit-range mode — pass base_branch and head_branch to get the list of commits unique to head_branch (set difference base..head), optionally fil"},{"name":"git_log","description":"Commit history like `git log`, newest first, filtered by path (commits touching a file), author (substring), since/until (YYYY-MM-DD or RFC 3339) and branch (an"},{"name":"git_search","description":"Search postgres commit messages (or file paths with search_in=paths) by keywords, newest first (all words must appear, case-insensitive; like `git log -i --grep"},{"name":"git_show_file","description":"Read a file at any commit, branch, tag or major version (like `git show <rev>:<path>`), from the git clone. commit takes a SHA (>= 7 hex), branch, tag, 17 or 9."},{"name":"history-of","description":"One-shot historical context for CI: given content (a diff, file path, symbol, commit subject, or feature name), return the most relevant default-branch commits,"},{"name":"hybrid_search","description":"Mailing-list search, keyword (BM25 over the authors' own words) and semantic (embeddings) blended per thread, over every list unless inbox names one or more. Re"},{"name":"hybrid_search_code","description":"Combined keyword + semantic code search using Reciprocal Rank Fusion. Requires embeddings to be generated."},{"name":"list_animals","description":"List PostgreSQL buildfarm animals. Filterable by OS, branch tracked, last build status, or owner. Failing animals are returned first (sort key: last_status='fai"},{"name":"list_branches","description":"List tracked branches for a repository, including head commit and default branch status."},{"name":"list_commitfests","description":"List PostgreSQL commitfests indexed in the mentat triple store. Each commitfest carries a status (:open / :in-progress / :closed) and an entry count grouped by "},{"name":"list_contributors","description":"List PostgreSQL community contributors aggregated across git trailers (Reviewed-by, Tested-by, etc.), commit author/committer headers, and buildfarm animal owne"},{"name":"list_discord_channels","description":"List monitored Discord channels with message counts."},{"name":"list_doc_versions","description":"List available documentation versions with page counts."},{"name":"list_entries","description":"List commitfest entries (proposed patch series). Filterable by status, commitfest number, or topic; paginated."},{"name":"list_inboxes","description":"List all configured agora mailboxes with name, message_count, latest_message_date, latest_import_date, listid (when known) and description. Optional min_message"},{"name":"list_projects","description":"List bridge-configured projects linking a forge repository to a mailing list inbox."},{"name":"list_recent","description":"List recent messages from an inbox"},{"name":"list_repositories","description":"List all registered git repositories with name, branch, commit_count, file_count, indexed-symbol_count, latest_commit, last_fetched_at, and import_state. Option"},{"name":"list_sources","description":"Every source behind this server with its kind (inbox, repository, docs, wiki, discord), item count, last update and freshness (fresh/stale): the 56 mailing list"},{"name":"list_threads","description":"Browse recent threads (topic-level view). Returns thread summaries with message counts, date ranges, and latest message metadata."},{"name":"recent_commitfest_activity","description":"Rolling window of commitfest entries updated in the last N days. Returns the entries plus a status histogram. Uses the relational commitfest.entries table for p"},{"name":"search_commitfest","description":"Full-text search of commitfest entries (title first, then author/reviewer/committer names), in the current commitfest by default, or commitfests=\"all\" (back to "},{"name":"release_contributors","description":"Top contributors per role for one release. Scope: canonical authoritative repos only (ag_repositories.is_authoritative = TRUE). Returns top 20 per role across a"},{"name":"repository_stats","description":"Get detailed statistics for a git repository including commit count, file count, branch, and import state."}],"toolCount":125,"toolsHash":"29657bcfbd66d3d07d5ef236d3b6546493c886acdac6b1255f3e8683ee262437","serverName":"pg.ddx.io","capabilities":["extensions","prompts","resources","tools"],"serverVersion":"1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T09:34:11.305Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":145,"error":null,"detail":{"tools":[{"name":"retrieve_context","description":"START HERE for a question about PostgreSQL. Searches every mailing list (inbox narrows it) with hybrid keyword + semantic ranking and returns cited passages tha"},{"name":"animal_history","description":"Run timeline for one animal. Filterable by branch and start cutoff; ordered newest first."},{"name":"animal_owner_contributions","description":"Animals run by one owner: list, branches each tracks, last status, first_seen_at and elapsed days since first observation."},{"name":"blame_symbol","description":"Show the commit history that modified a symbol's file, filtered to the symbol's line range."},{"name":"browse_by_date","description":"Browse threads within a specific date range. Useful for exploring what was discussed during a particular time period."},{"name":"build_status_freshness","description":"Most recent :entry/last-build-at observation across all entries. Use to detect a stalled cfbot scraper."},{"name":"buildfarm_overview","description":"High-level buildfarm health: animal count, recent run counts, currently-failing animals, top owners, OS / branch breakdown, and freshness."},{"name":"check_upstream_status","description":"Check whether a pull request has been merged upstream. Returns the latest patch series head commit and any merge information."},{"name":"code_index_status","description":"Get code indexing statistics: files indexed, symbol counts by kind and language, edge count, community count."},{"name":"codebase_map","description":"Get a directory-level overview of the codebase showing file counts and symbol counts per directory."},{"name":"commit_buildfarm_status","description":"Buildfarm results for one PostgreSQL commit: every animal that built it, with branch, status (passed/failed/flapping), the failing stage and the log url, plus a"},{"name":"commit_history","description":"Everything linked to one commit: subject, author and date with its sha, the mail thread its Discussion: link names (participants resolved to people and organiza"},{"name":"commitfest_stats","description":"Overview of all indexed commitfests: count by status, top contributors (entries authored), distinct people / commitfests / entries totals."},{"name":"contribution_summary","description":"Summary of contribution counts per release: unique people, distinct commits, role breakdown (count(DISTINCT commit_sha) per role, canonical authoritative repos "},{"name":"detect_changes","description":"Detect which symbols changed between two commits by comparing file content hashes."},{"name":"discussion_links","description":"Discussion / Closes / Fixes / Backpatch-through trailers attached to one commit. Returns the raw trailer text and any URL extracted. For the messages those link"},{"name":"embedding_status","description":"Get embedding coverage statistics: how many messages have embeddings, which model was used, and when embeddings were last generated."},{"name":"entry_branches","description":"Repository branches tracked for a commitfest entry. Joins commitfest.entry_repos with ag_repositories so callers see repo name + branch_name + is_authoritative."},{"name":"entry_history","description":"Status changes for a commitfest entry across commitfests. The relational table doesn't carry an audit log, so we approximate the patch's lifeline by joining on "},{"name":"find_breaks","description":"Animals that failed on a branch within the time window bounded by two commit SHAs. The window is defined by the earliest started_at observed for either SHA on t"},{"name":"find_contributions","description":"Find raw contribution rows for one person: git commit SHAs / buildfarm animals tagged with a role + release. Useful for drill-down on a contributor's recent wor"},{"name":"find_dead_code","description":"Find functions/methods with zero incoming call graph edges (potentially unused code)."},{"name":"find_entries_for_author","description":"Find commitfest entries where the given person is an author. Looks up by email (exact) or by name (substring, case-sensitive)."},{"name":"find_entries_for_thread","description":"Find commitfest entries linked to a pgsql-hackers thread by Message-ID. (Returns empty until the mailing-list cross-reference scrape lands; the index attribute "},{"name":"find_entries_with_failures_on","description":"Cross-domain feed: recent failed buildfarm runs for a named animal, plus commitfest entries with cfbot :failing rollups whose tracked branches overlap the anima"},{"name":"find_failing_patches","description":"Commitfest entries whose latest cfbot build fails on at least one platform: cf_id, title, entry_status and commitfest_number. entry_status filters (default the "},{"name":"find_failing_runs","description":"Most recent failing buildfarm runs across the entire fleet. Filterable by branch and start cutoff. Use to answer 'what is broken right now?'"},{"name":"find_passing_long_pending","description":"Green patches stuck in review: entries whose builds pass on every platform yet whose :entry/last-updated is older than N days. Useful for the 'why isn't this co"},{"name":"find_patches_by_platform_status","description":"Patches that pass on some platforms but not others. Example: passing on linux but failing on macos -> portability bug."},{"name":"find_pattern","description":"Search for a regex pattern in code symbol bodies. Uses trigram indexes for acceleration."},{"name":"find_rebase_needed_patches","description":"Entries cfbot reports as no longer applying to master tip (:entry/applies-cleanly is false). These need an author rebase."},{"name":"find_related_discussions","description":"Find mailing list messages related to a commit, topic, or PR. A postgres commit SHA (7-40 hex) returns the mail that refers to that commit (match_mode commit): "},{"name":"find_similar_messages","description":"Find messages similar to a given message using its embedding vector. Useful for finding related discussions or duplicate threads."},{"name":"get_animal","description":"Profile of one buildfarm animal: hardware/OS/compiler/owner, branches tracked, last build status, plus the last 20 runs (any branch)."},{"name":"get_attachment","description":"The content of one attachment of a mail message (a patch, a log, a test case), chosen by 1-based index or a filename substring, as listed in get_message/get_thr"},{"name":"get_author_messages","description":"Find messages by a specific author, optionally filtered by date range. Uses the f: (from) search prefix."},{"name":"get_callees","description":"Find all symbols that the given symbol calls/references (forward call graph)."},{"name":"get_callers","description":"Reverse call graph: the symbols that call or reference qualified_name (from search_symbols), each with its file and lines, like `git grep -w <name>` restricted "},{"name":"get_commitfest","description":"Get a single commitfest with entries grouped by status and the top contributors (authors with the most entries)."},{"name":"get_communities","description":"List Louvain community clusters detected in the call graph. Communities group related symbols by functional area."},{"name":"get_community","description":"Get details and member symbols for a specific community."},{"name":"get_contributor","description":"A contributor's profile by email (exact) or name (substring): canonical name, page hash, totals and per-release counts by role (authored, reviewed, committed, r"},{"name":"get_contributor_history","description":"Show all past mailing list submissions by a contributor (matched by email address or name)."},{"name":"get_dependents","description":"Get transitive dependents: all symbols in the blast radius if this symbol changes."},{"name":"get_doc_page","description":"One PostgreSQL documentation page as text: path (e.g. \"brin.html\" or \"sql-createtable.html\") and optional version (\"17\", \"current\"; default the latest). Returns"},{"name":"get_entry","description":"One commitfest entry by cf_id (the number in commitfest.postgresql.org/patch/<cf_id>/): title, status, commitfest, authors, reviewers, committer, its mail threa"},{"name":"get_execution_flows","description":"Trace execution flow paths through the call graph from entry points."},{"name":"get_impact","description":"Analyze the impact of modifying a symbol: risk level, blast radius, affected communities and execution flows."},{"name":"get_inbox_info","description":"Get metadata for an inbox (name, addresses, message count, last activity)"},{"name":"get_inbox_stats","description":"Return aggregate statistics about an inbox: message counts by time period, top authors, and activity trends."},{"name":"get_inbox_summary","description":"Per-inbox summary: total messages, top 10 posters, thread count, date range, and lifetime average messages/day (total messages divided by the days spanned by th"},{"name":"get_message","description":"One mail message by Message-ID: headers, in_reply_to/references, decoded body text (by default the author's own words: quotes, signature and inline patch remove"},{"name":"get_message_headers","description":"Get email headers as structured key/value pairs. Returns all headers or a specific header by name."},{"name":"get_message_references","description":"Discover cross-references in a message. Returns explicit References/In-Reply-To headers plus any Message-IDs found in the body text, with archive lookup for eac"},{"name":"get_new_messages","description":"Return messages newer than a given article number cursor, enabling agents to poll for new messages without re-scanning. Use after=0 for the first call, then use"},{"name":"get_patch_branches","description":"Get the git branches created from a patch series. Shows what branches were applied from email patches for code intelligence analysis."},{"name":"get_patch_build_history","description":"Build matrix for one entry: per-platform/config status, log URL, observation time, applies-cleanly flag, rollup."},{"name":"get_patch_series","description":"Get patch submission history for a forge pull request URL. Returns all iterations submitted to the mailing list."},{"name":"get_raw_message","description":"Get the complete raw RFC 822 email bytes for a message. Useful for agents that need to parse headers/structure themselves or forward messages."},{"name":"get_repo_sync_stats","description":"Get commit frequency analysis and sync statistics for a repository. Returns median commit interval, recommended poll frequency, and recent fetch log."},{"name":"get_repository_summary","description":"Per-repository summary: total commits, top 10 contributors, branches, language breakdown (from indexed symbols), and a sampled most-touched-paths list."},{"name":"get_signature","description":"Get the function/method signature and doc comment for a symbol."},{"name":"get_source_info","description":"Detail for a single source by name. Returns kind, item_count, last_update, next_sync, freshness_status, and description."},{"name":"get_symbol","description":"Get full details for a code symbol by its qualified name, including source code, signature, documentation, and file location."},{"name":"get_tests_for","description":"Find test symbols that reference the given symbol."},{"name":"get_thread","description":"A mail thread, found by any Message-ID in it, oldest first. Each message: from, to, cc, date, message_id, decoded body text (by default the author's own words: "},{"name":"get_thread_references","description":"Cross-reference graph for an entire thread. Collects all Message-IDs referenced in body text across all messages in the thread and resolves which other threads "},{"name":"get_wiki_history","description":"Get revision history for a wiki page."},{"name":"get_wiki_page","description":"One wiki.postgresql.org page by title: its latest revision content with author and date. Titles are as on the wiki (\"Don't Do This\", \"Todo\"). Use search_wiki to"},{"name":"git_analyze_activity","description":"Show commit activity over time, bucketed by period. Useful for understanding development pace and trends."},{"name":"git_analyze_authors","description":"Get commit statistics per author: total commits, first and last commit dates. Ranked by commit count."},{"name":"git_analyze_bus_factor","description":"Identify files with the fewest distinct authors (bus factor risk). Files modified by only one person are knowledge silos."},{"name":"git_analyze_churn","description":"Identify the most frequently modified files in the repository. High-churn files may indicate hotspots or unstable code."},{"name":"git_analyze_coupling","description":"Find files that are frequently changed together. Logical coupling can reveal hidden dependencies between components."},{"name":"git_analyze_hotspots","description":"Aggregate file churn by directory to find the most actively changed areas of the codebase."},{"name":"git_blame","description":"File version history, not a per-line blame: the commits that changed a file on the history of a commit (like `git log <rev> -- <path>`), newest first, each with"},{"name":"git_diff","description":"Two modes: (1) commit-range mode — pass base_branch and head_branch to get the list of commits unique to head_branch (set difference base..head), optionally fil"},{"name":"git_log","description":"Commit history like `git log`, newest first, filtered by path (commits touching a file), author (substring), since/until (YYYY-MM-DD or RFC 3339) and branch (an"},{"name":"git_search","description":"Search postgres commit messages (or file paths with search_in=paths) by keywords, newest first (all words must appear, case-insensitive; like `git log -i --grep"},{"name":"git_show_file","description":"Read a file at any commit, branch, tag or major version (like `git show <rev>:<path>`), from the git clone. commit takes a SHA (>= 7 hex), branch, tag, 17 or 9."},{"name":"history-of","description":"One-shot historical context for CI: given content (a diff, file path, symbol, commit subject, or feature name), return the most relevant default-branch commits,"},{"name":"hybrid_search","description":"Mailing-list search, keyword (BM25 over the authors' own words) and semantic (embeddings) blended per thread, over every list unless inbox names one or more. Re"},{"name":"hybrid_search_code","description":"Combined keyword + semantic code search using Reciprocal Rank Fusion. Requires embeddings to be generated."},{"name":"list_animals","description":"List PostgreSQL buildfarm animals. Filterable by OS, branch tracked, last build status, or owner. Failing animals are returned first (sort key: last_status='fai"},{"name":"list_branches","description":"List tracked branches for a repository, including head commit and default branch status."},{"name":"list_commitfests","description":"List PostgreSQL commitfests indexed in the mentat triple store. Each commitfest carries a status (:open / :in-progress / :closed) and an entry count grouped by "},{"name":"list_contributors","description":"List PostgreSQL community contributors aggregated across git trailers (Reviewed-by, Tested-by, etc.), commit author/committer headers, and buildfarm animal owne"},{"name":"list_discord_channels","description":"List monitored Discord channels with message counts."},{"name":"list_doc_versions","description":"List available documentation versions with page counts."},{"name":"list_entries","description":"List commitfest entries (proposed patch series). Filterable by status, commitfest number, or topic; paginated."},{"name":"list_inboxes","description":"List all configured agora mailboxes with name, message_count, latest_message_date, latest_import_date, listid (when known) and description. Optional min_message"},{"name":"list_projects","description":"List bridge-configured projects linking a forge repository to a mailing list inbox."},{"name":"list_recent","description":"List recent messages from an inbox"},{"name":"list_repositories","description":"List all registered git repositories with name, branch, commit_count, file_count, indexed-symbol_count, latest_commit, last_fetched_at, and import_state. Option"},{"name":"list_sources","description":"Every source behind this server with its kind (inbox, repository, docs, wiki, discord), item count, last update and freshness (fresh/stale): the 56 mailing list"},{"name":"list_threads","description":"Browse recent threads (topic-level view). Returns thread summaries with message counts, date ranges, and latest message metadata."},{"name":"recent_commitfest_activity","description":"Rolling window of commitfest entries updated in the last N days. Returns the entries plus a status histogram. Uses the relational commitfest.entries table for p"},{"name":"search_commitfest","description":"Full-text search of commitfest entries (title first, then author/reviewer/committer names), in the current commitfest by default, or commitfests=\"all\" (back to "},{"name":"release_contributors","description":"Top contributors per role for one release. Scope: canonical authoritative repos only (ag_repositories.is_authoritative = TRUE). Returns top 20 per role across a"},{"name":"repository_stats","description":"Get detailed statistics for a git repository including commit count, file count, branch, and import state."}],"toolCount":125,"toolsHash":"f6535d50ed2a11057f4c607dcd43ffd7d8d3b714c5e5a07cd8598e9cf39d7073","serverName":"pg.ddx.io","capabilities":["extensions","prompts","resources","tools"],"serverVersion":"1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T06:26:09.366Z","kind":"http_get","ok":false,"httpStatus":null,"latencyMs":null,"error":"timeout","detail":null},{"at":"2026-10-26T01:33:52.216Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":116,"error":null,"detail":{"tools":[{"name":"retrieve_context","description":"START HERE for a question about PostgreSQL. Searches every mailing list (inbox narrows it) with hybrid keyword + semantic ranking and returns cited passages tha"},{"name":"animal_history","description":"Run timeline for one animal. Filterable by branch and start cutoff; ordered newest first."},{"name":"animal_owner_contributions","description":"Animals run by one owner: list, branches each tracks, last status, first_seen_at and elapsed days since first observation."},{"name":"blame_symbol","description":"Show the commit history that modified a symbol's file, filtered to the symbol's line range."},{"name":"browse_by_date","description":"Browse threads within a specific date range. Useful for exploring what was discussed during a particular time period."},{"name":"build_status_freshness","description":"Most recent :entry/last-build-at observation across all entries. Use to detect a stalled cfbot scraper."},{"name":"buildfarm_overview","description":"High-level buildfarm health: animal count, recent run counts, currently-failing animals, top owners, OS / branch breakdown, and freshness."},{"name":"check_upstream_status","description":"Check whether a pull request has been merged upstream. Returns the latest patch series head commit and any merge information."},{"name":"code_index_status","description":"Get code indexing statistics: files indexed, symbol counts by kind and language, edge count, community count."},{"name":"codebase_map","description":"Get a directory-level overview of the codebase showing file counts and symbol counts per directory."},{"name":"commit_buildfarm_status","description":"Buildfarm results for one PostgreSQL commit: every animal that built it, with branch, status (passed/failed/flapping), the failing stage and the log url, plus a"},{"name":"commit_history","description":"Everything linked to one commit: subject, author and date with its sha, the mail thread its Discussion: link names (participants resolved to people and organiza"},{"name":"commitfest_stats","description":"Overview of all indexed commitfests: count by status, top contributors (entries authored), distinct people / commitfests / entries totals."},{"name":"contribution_summary","description":"Summary of contribution counts per release: unique people, distinct commits, role breakdown (count(DISTINCT commit_sha) per role, canonical authoritative repos "},{"name":"detect_changes","description":"Detect which symbols changed between two commits by comparing file content hashes."},{"name":"discussion_links","description":"Discussion / Closes / Fixes / Backpatch-through trailers attached to one commit. Returns the raw trailer text and any URL extracted. For the messages those link"},{"name":"embedding_status","description":"Get embedding coverage statistics: how many messages have embeddings, which model was used, and when embeddings were last generated."},{"name":"entry_branches","description":"Repository branches tracked for a commitfest entry. Joins commitfest.entry_repos with ag_repositories so callers see repo name + branch_name + is_authoritative."},{"name":"entry_history","description":"Status changes for a commitfest entry across commitfests. The relational table doesn't carry an audit log, so we approximate the patch's lifeline by joining on "},{"name":"find_breaks","description":"Animals that failed on a branch within the time window bounded by two commit SHAs. The window is defined by the earliest started_at observed for either SHA on t"},{"name":"find_contributions","description":"Find raw contribution rows for one person: git commit SHAs / buildfarm animals tagged with a role + release. Useful for drill-down on a contributor's recent wor"},{"name":"find_dead_code","description":"Find functions/methods with zero incoming call graph edges (potentially unused code)."},{"name":"find_entries_for_author","description":"Find commitfest entries where the given person is an author. Looks up by email (exact) or by name (substring, case-sensitive)."},{"name":"find_entries_for_thread","description":"Find commitfest entries linked to a pgsql-hackers thread by Message-ID. (Returns empty until the mailing-list cross-reference scrape lands; the index attribute "},{"name":"find_entries_with_failures_on","description":"Cross-domain feed: recent failed buildfarm runs for a named animal, plus commitfest entries with cfbot :failing rollups whose tracked branches overlap the anima"},{"name":"find_failing_patches","description":"Commitfest entries whose latest cfbot build fails on at least one platform: cf_id, title, entry_status and commitfest_number. entry_status filters (default the "},{"name":"find_failing_runs","description":"Most recent failing buildfarm runs across the entire fleet. Filterable by branch and start cutoff. Use to answer 'what is broken right now?'"},{"name":"find_passing_long_pending","description":"Green patches stuck in review: entries whose builds pass on every platform yet whose :entry/last-updated is older than N days. Useful for the 'why isn't this co"},{"name":"find_patches_by_platform_status","description":"Patches that pass on some platforms but not others. Example: passing on linux but failing on macos -> portability bug."},{"name":"find_pattern","description":"Search for a regex pattern in code symbol bodies. Uses trigram indexes for acceleration."},{"name":"find_rebase_needed_patches","description":"Entries cfbot reports as no longer applying to master tip (:entry/applies-cleanly is false). These need an author rebase."},{"name":"find_related_discussions","description":"Find mailing list messages related to a commit, topic, or PR. A postgres commit SHA (7-40 hex) returns the mail that refers to that commit (match_mode commit): "},{"name":"find_similar_messages","description":"Find messages similar to a given message using its embedding vector. Useful for finding related discussions or duplicate threads."},{"name":"get_animal","description":"Profile of one buildfarm animal: hardware/OS/compiler/owner, branches tracked, last build status, plus the last 20 runs (any branch)."},{"name":"get_attachment","description":"The content of one attachment of a mail message (a patch, a log, a test case), chosen by 1-based index or a filename substring, as listed in get_message/get_thr"},{"name":"get_author_messages","description":"Find messages by a specific author, optionally filtered by date range. Uses the f: (from) search prefix."},{"name":"get_callees","description":"Find all symbols that the given symbol calls/references (forward call graph)."},{"name":"get_callers","description":"Reverse call graph: the symbols that call or reference qualified_name (from search_symbols), each with its file and lines, like `git grep -w <name>` restricted "},{"name":"get_commitfest","description":"Get a single commitfest with entries grouped by status and the top contributors (authors with the most entries)."},{"name":"get_communities","description":"List Louvain community clusters detected in the call graph. Communities group related symbols by functional area."},{"name":"get_community","description":"Get details and member symbols for a specific community."},{"name":"get_contributor","description":"A contributor's profile by email (exact) or name (substring): canonical name, page hash, totals and per-release counts by role (authored, reviewed, committed, r"},{"name":"get_contributor_history","description":"Show all past mailing list submissions by a contributor (matched by email address or name)."},{"name":"get_dependents","description":"Get transitive dependents: all symbols in the blast radius if this symbol changes."},{"name":"get_doc_page","description":"One PostgreSQL documentation page as text: path (e.g. \"brin.html\" or \"sql-createtable.html\") and optional version (\"17\", \"current\"; default the latest). Returns"},{"name":"get_entry","description":"One commitfest entry by cf_id (the number in commitfest.postgresql.org/patch/<cf_id>/): title, status, commitfest, authors, reviewers, committer, its mail threa"},{"name":"get_execution_flows","description":"Trace execution flow paths through the call graph from entry points."},{"name":"get_impact","description":"Analyze the impact of modifying a symbol: risk level, blast radius, affected communities and execution flows."},{"name":"get_inbox_info","description":"Get metadata for an inbox (name, addresses, message count, last activity)"},{"name":"get_inbox_stats","description":"Return aggregate statistics about an inbox: message counts by time period, top authors, and activity trends."},{"name":"get_inbox_summary","description":"Per-inbox summary: total messages, top 10 posters, thread count, date range, and lifetime average messages/day (total messages divided by the days spanned by th"},{"name":"get_message","description":"One mail message by Message-ID: headers, in_reply_to/references, decoded body text (by default the author's own words: quotes, signature and inline patch remove"},{"name":"get_message_headers","description":"Get email headers as structured key/value pairs. Returns all headers or a specific header by name."},{"name":"get_message_references","description":"Discover cross-references in a message. Returns explicit References/In-Reply-To headers plus any Message-IDs found in the body text, with archive lookup for eac"},{"name":"get_new_messages","description":"Return messages newer than a given article number cursor, enabling agents to poll for new messages without re-scanning. Use after=0 for the first call, then use"},{"name":"get_patch_branches","description":"Get the git branches created from a patch series. Shows what branches were applied from email patches for code intelligence analysis."},{"name":"get_patch_build_history","description":"Build matrix for one entry: per-platform/config status, log URL, observation time, applies-cleanly flag, rollup."},{"name":"get_patch_series","description":"Get patch submission history for a forge pull request URL. Returns all iterations submitted to the mailing list."},{"name":"get_raw_message","description":"Get the complete raw RFC 822 email bytes for a message. Useful for agents that need to parse headers/structure themselves or forward messages."},{"name":"get_repo_sync_stats","description":"Get commit frequency analysis and sync statistics for a repository. Returns median commit interval, recommended poll frequency, and recent fetch log."},{"name":"get_repository_summary","description":"Per-repository summary: total commits, top 10 contributors, branches, language breakdown (from indexed symbols), and a sampled most-touched-paths list."},{"name":"get_signature","description":"Get the function/method signature and doc comment for a symbol."},{"name":"get_source_info","description":"Detail for a single source by name. Returns kind, item_count, last_update, next_sync, freshness_status, and description."},{"name":"get_symbol","description":"Get full details for a code symbol by its qualified name, including source code, signature, documentation, and file location."},{"name":"get_tests_for","description":"Find test symbols that reference the given symbol."},{"name":"get_thread","description":"A mail thread, found by any Message-ID in it, oldest first. Each message: from, to, cc, date, message_id, decoded body text (by default the author's own words: "},{"name":"get_thread_references","description":"Cross-reference graph for an entire thread. Collects all Message-IDs referenced in body text across all messages in the thread and resolves which other threads "},{"name":"get_wiki_history","description":"Get revision history for a wiki page."},{"name":"get_wiki_page","description":"One wiki.postgresql.org page by title: its latest revision content with author and date. Titles are as on the wiki (\"Don't Do This\", \"Todo\"). Use search_wiki to"},{"name":"git_analyze_activity","description":"Show commit activity over time, bucketed by period. Useful for understanding development pace and trends."},{"name":"git_analyze_authors","description":"Get commit statistics per author: total commits, first and last commit dates. Ranked by commit count."},{"name":"git_analyze_bus_factor","description":"Identify files with the fewest distinct authors (bus factor risk). Files modified by only one person are knowledge silos."},{"name":"git_analyze_churn","description":"Identify the most frequently modified files in the repository. High-churn files may indicate hotspots or unstable code."},{"name":"git_analyze_coupling","description":"Find files that are frequently changed together. Logical coupling can reveal hidden dependencies between components."},{"name":"git_analyze_hotspots","description":"Aggregate file churn by directory to find the most actively changed areas of the codebase."},{"name":"git_blame","description":"File version history, not a per-line blame: the commits that changed a file on the history of a commit (like `git log <rev> -- <path>`), newest first, each with"},{"name":"git_diff","description":"Two modes: (1) commit-range mode — pass base_branch and head_branch to get the list of commits unique to head_branch (set difference base..head), optionally fil"},{"name":"git_log","description":"Commit history like `git log`, newest first, filtered by path (commits touching a file), author (substring), since/until (YYYY-MM-DD or RFC 3339) and branch (an"},{"name":"git_search","description":"Search postgres commit messages (or file paths with search_in=paths) by keywords, newest first (all words must appear, case-insensitive; like `git log -i --grep"},{"name":"git_show_file","description":"Read a file at any commit, branch, tag or major version (like `git show <rev>:<path>`), from the git clone. commit takes a SHA (>= 7 hex), branch, tag, 17 or 9."},{"name":"history-of","description":"One-shot historical context for CI: given content (a diff, file path, symbol, commit subject, or feature name), return the most relevant default-branch commits,"},{"name":"hybrid_search","description":"Mailing-list search, keyword (BM25 over the authors' own words) and semantic (embeddings) blended per thread, over every list unless inbox names one or more. Re"},{"name":"hybrid_search_code","description":"Combined keyword + semantic code search using Reciprocal Rank Fusion. Requires embeddings to be generated."},{"name":"list_animals","description":"List PostgreSQL buildfarm animals. Filterable by OS, branch tracked, last build status, or owner. Failing animals are returned first (sort key: last_status='fai"},{"name":"list_branches","description":"List tracked branches for a repository, including head commit and default branch status."},{"name":"list_commitfests","description":"List PostgreSQL commitfests indexed in the mentat triple store. Each commitfest carries a status (:open / :in-progress / :closed) and an entry count grouped by "},{"name":"list_contributors","description":"List PostgreSQL community contributors aggregated across git trailers (Reviewed-by, Tested-by, etc.), commit author/committer headers, and buildfarm animal owne"},{"name":"list_discord_channels","description":"List monitored Discord channels with message counts."},{"name":"list_doc_versions","description":"List available documentation versions with page counts."},{"name":"list_entries","description":"List commitfest entries (proposed patch series). Filterable by status, commitfest number, or topic; paginated."},{"name":"list_inboxes","description":"List all configured agora mailboxes with name, message_count, latest_message_date, latest_import_date, listid (when known) and description. Optional min_message"},{"name":"list_projects","description":"List bridge-configured projects linking a forge repository to a mailing list inbox."},{"name":"list_recent","description":"List recent messages from an inbox"},{"name":"list_repositories","description":"List all registered git repositories with name, branch, commit_count, file_count, indexed-symbol_count, latest_commit, last_fetched_at, and import_state. Option"},{"name":"list_sources","description":"Every source behind this server with its kind (inbox, repository, docs, wiki, discord), item count, last update and freshness (fresh/stale): the 56 mailing list"},{"name":"list_threads","description":"Browse recent threads (topic-level view). Returns thread summaries with message counts, date ranges, and latest message metadata."},{"name":"recent_commitfest_activity","description":"Rolling window of commitfest entries updated in the last N days. Returns the entries plus a status histogram. Uses the relational commitfest.entries table for p"},{"name":"search_commitfest","description":"Full-text search of commitfest entries (title first, then author/reviewer/committer names), in the current commitfest by default, or commitfests=\"all\" (back to "},{"name":"release_contributors","description":"Top contributors per role for one release. Scope: canonical authoritative repos only (ag_repositories.is_authoritative = TRUE). Returns top 20 per role across a"},{"name":"repository_stats","description":"Get detailed statistics for a git repository including commit count, file count, branch, and import state."}],"toolCount":125,"toolsHash":"f6535d50ed2a11057f4c607dcd43ffd7d8d3b714c5e5a07cd8598e9cf39d7073","serverName":"pg.ddx.io","capabilities":["extensions","prompts","resources","tools"],"serverVersion":"1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-25T18:28:23.472Z","kind":"http_get","ok":false,"httpStatus":null,"latencyMs":null,"error":"timeout","detail":null},{"at":"2026-10-25T18:28:18.434Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":162,"error":null,"detail":{"tools":[{"name":"retrieve_context","description":"START HERE for a question about PostgreSQL. Searches every mailing list (inbox narrows it) with hybrid keyword + semantic ranking and returns cited passages tha"},{"name":"animal_history","description":"Run timeline for one animal. Filterable by branch and start cutoff; ordered newest first."},{"name":"animal_owner_contributions","description":"Animals run by one owner: list, branches each tracks, last status, first_seen_at and elapsed days since first observation."},{"name":"blame_symbol","description":"Show the commit history that modified a symbol's file, filtered to the symbol's line range."},{"name":"browse_by_date","description":"Browse threads within a specific date range. Useful for exploring what was discussed during a particular time period."},{"name":"build_status_freshness","description":"Most recent :entry/last-build-at observation across all entries. Use to detect a stalled cfbot scraper."},{"name":"buildfarm_overview","description":"High-level buildfarm health: animal count, recent run counts, currently-failing animals, top owners, OS / branch breakdown, and freshness."},{"name":"check_upstream_status","description":"Check whether a pull request has been merged upstream. Returns the latest patch series head commit and any merge information."},{"name":"code_index_status","description":"Get code indexing statistics: files indexed, symbol counts by kind and language, edge count, community count."},{"name":"codebase_map","description":"Get a directory-level overview of the codebase showing file counts and symbol counts per directory."},{"name":"commit_buildfarm_status","description":"Buildfarm results for one PostgreSQL commit: every animal that built it, with branch, status (passed/failed/flapping), the failing stage and the log url, plus a"},{"name":"commit_history","description":"Everything linked to one commit: subject, author and date with its sha, the mail thread its Discussion: link names (participants resolved to people and organiza"},{"name":"commitfest_stats","description":"Overview of all indexed commitfests: count by status, top contributors (entries authored), distinct people / commitfests / entries totals."},{"name":"contribution_summary","description":"Summary of contribution counts per release: unique people, distinct commits, role breakdown (count(DISTINCT commit_sha) per role, canonical authoritative repos "},{"name":"detect_changes","description":"Detect which symbols changed between two commits by comparing file content hashes."},{"name":"discussion_links","description":"Discussion / Closes / Fixes / Backpatch-through trailers attached to one commit. Returns the raw trailer text and any URL extracted. For the messages those link"},{"name":"embedding_status","description":"Get embedding coverage statistics: how many messages have embeddings, which model was used, and when embeddings were last generated."},{"name":"entry_branches","description":"Repository branches tracked for a commitfest entry. Joins commitfest.entry_repos with ag_repositories so callers see repo name + branch_name + is_authoritative."},{"name":"entry_history","description":"Status changes for a commitfest entry across commitfests. The relational table doesn't carry an audit log, so we approximate the patch's lifeline by joining on "},{"name":"find_breaks","description":"Animals that failed on a branch within the time window bounded by two commit SHAs. The window is defined by the earliest started_at observed for either SHA on t"},{"name":"find_contributions","description":"Find raw contribution rows for one person: git commit SHAs / buildfarm animals tagged with a role + release. Useful for drill-down on a contributor's recent wor"},{"name":"find_dead_code","description":"Find functions/methods with zero incoming call graph edges (potentially unused code)."},{"name":"find_entries_for_author","description":"Find commitfest entries where the given person is an author. Looks up by email (exact) or by name (substring, case-sensitive)."},{"name":"find_entries_for_thread","description":"Find commitfest entries linked to a pgsql-hackers thread by Message-ID. (Returns empty until the mailing-list cross-reference scrape lands; the index attribute "},{"name":"find_entries_with_failures_on","description":"Cross-domain feed: recent failed buildfarm runs for a named animal, plus commitfest entries with cfbot :failing rollups whose tracked branches overlap the anima"},{"name":"find_failing_patches","description":"Commitfest entries whose latest cfbot build fails on at least one platform: cf_id, title, entry_status and commitfest_number. entry_status filters (default the "},{"name":"find_failing_runs","description":"Most recent failing buildfarm runs across the entire fleet. Filterable by branch and start cutoff. Use to answer 'what is broken right now?'"},{"name":"find_passing_long_pending","description":"Green patches stuck in review: entries whose builds pass on every platform yet whose :entry/last-updated is older than N days. Useful for the 'why isn't this co"},{"name":"find_patches_by_platform_status","description":"Patches that pass on some platforms but not others. Example: passing on linux but failing on macos -> portability bug."},{"name":"find_pattern","description":"Search for a regex pattern in code symbol bodies. Uses trigram indexes for acceleration."},{"name":"find_rebase_needed_patches","description":"Entries cfbot reports as no longer applying to master tip (:entry/applies-cleanly is false). These need an author rebase."},{"name":"find_related_discussions","description":"Find mailing list messages related to a commit, topic, or PR. A postgres commit SHA (7-40 hex) returns the mail that refers to that commit (match_mode commit): "},{"name":"find_similar_messages","description":"Find messages similar to a given message using its embedding vector. Useful for finding related discussions or duplicate threads."},{"name":"get_animal","description":"Profile of one buildfarm animal: hardware/OS/compiler/owner, branches tracked, last build status, plus the last 20 runs (any branch)."},{"name":"get_attachment","description":"The content of one attachment of a mail message (a patch, a log, a test case), chosen by 1-based index or a filename substring, as listed in get_message/get_thr"},{"name":"get_author_messages","description":"Find messages by a specific author, optionally filtered by date range. Uses the f: (from) search prefix."},{"name":"get_callees","description":"Find all symbols that the given symbol calls/references (forward call graph)."},{"name":"get_callers","description":"Reverse call graph: the symbols that call or reference qualified_name (from search_symbols), each with its file and lines, like `git grep -w <name>` restricted "},{"name":"get_commitfest","description":"Get a single commitfest with entries grouped by status and the top contributors (authors with the most entries)."},{"name":"get_communities","description":"List Louvain community clusters detected in the call graph. Communities group related symbols by functional area."},{"name":"get_community","description":"Get details and member symbols for a specific community."},{"name":"get_contributor","description":"A contributor's profile by email (exact) or name (substring): canonical name, page hash, totals and per-release counts by role (authored, reviewed, committed, r"},{"name":"get_contributor_history","description":"Show all past mailing list submissions by a contributor (matched by email address or name)."},{"name":"get_dependents","description":"Get transitive dependents: all symbols in the blast radius if this symbol changes."},{"name":"get_doc_page","description":"One PostgreSQL documentation page as text: path (e.g. \"brin.html\" or \"sql-createtable.html\") and optional version (\"17\", \"current\"; default the latest). Returns"},{"name":"get_entry","description":"One commitfest entry by cf_id (the number in commitfest.postgresql.org/patch/<cf_id>/): title, status, commitfest, authors, reviewers, committer, its mail threa"},{"name":"get_execution_flows","description":"Trace execution flow paths through the call graph from entry points."},{"name":"get_impact","description":"Analyze the impact of modifying a symbol: risk level, blast radius, affected communities and execution flows."},{"name":"get_inbox_info","description":"Get metadata for an inbox (name, addresses, message count, last activity)"},{"name":"get_inbox_stats","description":"Return aggregate statistics about an inbox: message counts by time period, top authors, and activity trends."},{"name":"get_inbox_summary","description":"Per-inbox summary: total messages, top 10 posters, thread count, date range, and lifetime average messages/day (total messages divided by the days spanned by th"},{"name":"get_message","description":"One mail message by Message-ID: headers, in_reply_to/references, decoded body text (by default the author's own words: quotes, signature and inline patch remove"},{"name":"get_message_headers","description":"Get email headers as structured key/value pairs. Returns all headers or a specific header by name."},{"name":"get_message_references","description":"Discover cross-references in a message. Returns explicit References/In-Reply-To headers plus any Message-IDs found in the body text, with archive lookup for eac"},{"name":"get_new_messages","description":"Return messages newer than a given article number cursor, enabling agents to poll for new messages without re-scanning. Use after=0 for the first call, then use"},{"name":"get_patch_branches","description":"Get the git branches created from a patch series. Shows what branches were applied from email patches for code intelligence analysis."},{"name":"get_patch_build_history","description":"Build matrix for one entry: per-platform/config status, log URL, observation time, applies-cleanly flag, rollup."},{"name":"get_patch_series","description":"Get patch submission history for a forge pull request URL. Returns all iterations submitted to the mailing list."},{"name":"get_raw_message","description":"Get the complete raw RFC 822 email bytes for a message. Useful for agents that need to parse headers/structure themselves or forward messages."},{"name":"get_repo_sync_stats","description":"Get commit frequency analysis and sync statistics for a repository. Returns median commit interval, recommended poll frequency, and recent fetch log."},{"name":"get_repository_summary","description":"Per-repository summary: total commits, top 10 contributors, branches, language breakdown (from indexed symbols), and a sampled most-touched-paths list."},{"name":"get_signature","description":"Get the function/method signature and doc comment for a symbol."},{"name":"get_source_info","description":"Detail for a single source by name. Returns kind, item_count, last_update, next_sync, freshness_status, and description."},{"name":"get_symbol","description":"Get full details for a code symbol by its qualified name, including source code, signature, documentation, and file location."},{"name":"get_tests_for","description":"Find test symbols that reference the given symbol."},{"name":"get_thread","description":"A mail thread, found by any Message-ID in it, oldest first. Each message: from, to, cc, date, message_id, decoded body text (by default the author's own words: "},{"name":"get_thread_references","description":"Cross-reference graph for an entire thread. Collects all Message-IDs referenced in body text across all messages in the thread and resolves which other threads "},{"name":"get_wiki_history","description":"Get revision history for a wiki page."},{"name":"get_wiki_page","description":"One wiki.postgresql.org page by title: its latest revision content with author and date. Titles are as on the wiki (\"Don't Do This\", \"Todo\"). Use search_wiki to"},{"name":"git_analyze_activity","description":"Show commit activity over time, bucketed by period. Useful for understanding development pace and trends."},{"name":"git_analyze_authors","description":"Get commit statistics per author: total commits, first and last commit dates. Ranked by commit count."},{"name":"git_analyze_bus_factor","description":"Identify files with the fewest distinct authors (bus factor risk). Files modified by only one person are knowledge silos."},{"name":"git_analyze_churn","description":"Identify the most frequently modified files in the repository. High-churn files may indicate hotspots or unstable code."},{"name":"git_analyze_coupling","description":"Find files that are frequently changed together. Logical coupling can reveal hidden dependencies between components."},{"name":"git_analyze_hotspots","description":"Aggregate file churn by directory to find the most actively changed areas of the codebase."},{"name":"git_blame","description":"File version history, not a per-line blame: the commits that changed a file on the history of a commit (like `git log <rev> -- <path>`), newest first, each with"},{"name":"git_diff","description":"Two modes: (1) commit-range mode — pass base_branch and head_branch to get the list of commits unique to head_branch (set difference base..head), optionally fil"},{"name":"git_log","description":"Commit history like `git log`, newest first, filtered by path (commits touching a file), author (substring), since/until (YYYY-MM-DD or RFC 3339) and branch (an"},{"name":"git_search","description":"Search postgres commit messages (or file paths with search_in=paths) by keywords, newest first (all words must appear, case-insensitive; like `git log -i --grep"},{"name":"git_show_file","description":"Read a file at any commit, branch, tag or major version (like `git show <rev>:<path>`), from the git clone. commit takes a SHA (>= 7 hex), branch, tag, 17 or 9."},{"name":"history-of","description":"One-shot historical context for CI: given content (a diff, file path, symbol, commit subject, or feature name), return the most relevant default-branch commits,"},{"name":"hybrid_search","description":"Mailing-list search, keyword (BM25 over the authors' own words) and semantic (embeddings) blended per thread, over every list unless inbox names one or more. Re"},{"name":"hybrid_search_code","description":"Combined keyword + semantic code search using Reciprocal Rank Fusion. Requires embeddings to be generated."},{"name":"list_animals","description":"List PostgreSQL buildfarm animals. Filterable by OS, branch tracked, last build status, or owner. Failing animals are returned first (sort key: last_status='fai"},{"name":"list_branches","description":"List tracked branches for a repository, including head commit and default branch status."},{"name":"list_commitfests","description":"List PostgreSQL commitfests indexed in the mentat triple store. Each commitfest carries a status (:open / :in-progress / :closed) and an entry count grouped by "},{"name":"list_contributors","description":"List PostgreSQL community contributors aggregated across git trailers (Reviewed-by, Tested-by, etc.), commit author/committer headers, and buildfarm animal owne"},{"name":"list_discord_channels","description":"List monitored Discord channels with message counts."},{"name":"list_doc_versions","description":"List available documentation versions with page counts."},{"name":"list_entries","description":"List commitfest entries (proposed patch series). Filterable by status, commitfest number, or topic; paginated."},{"name":"list_inboxes","description":"List all configured agora mailboxes with name, message_count, latest_message_date, latest_import_date, listid (when known) and description. Optional min_message"},{"name":"list_projects","description":"List bridge-configured projects linking a forge repository to a mailing list inbox."},{"name":"list_recent","description":"List recent messages from an inbox"},{"name":"list_repositories","description":"List all registered git repositories with name, branch, commit_count, file_count, indexed-symbol_count, latest_commit, last_fetched_at, and import_state. Option"},{"name":"list_sources","description":"Every source behind this server with its kind (inbox, repository, docs, wiki, discord), item count, last update and freshness (fresh/stale): the 56 mailing list"},{"name":"list_threads","description":"Browse recent threads (topic-level view). Returns thread summaries with message counts, date ranges, and latest message metadata."},{"name":"recent_commitfest_activity","description":"Rolling window of commitfest entries updated in the last N days. Returns the entries plus a status histogram. Uses the relational commitfest.entries table for p"},{"name":"search_commitfest","description":"Full-text search of commitfest entries (title first, then author/reviewer/committer names), in the current commitfest by default, or commitfests=\"all\" (back to "},{"name":"release_contributors","description":"Top contributors per role for one release. Scope: canonical authoritative repos only (ag_repositories.is_authoritative = TRUE). Returns top 20 per role across a"},{"name":"repository_stats","description":"Get detailed statistics for a git repository including commit count, file count, branch, and import state."}],"toolCount":125,"toolsHash":"f6535d50ed2a11057f4c607dcd43ffd7d8d3b714c5e5a07cd8598e9cf39d7073","serverName":"pg.ddx.io","capabilities":["extensions","prompts","resources","tools"],"serverVersion":"1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"retrieve_context","description":"START HERE for a question about PostgreSQL. Searches every mailing list (inbox narrows it) with hybrid keyword + semantic ranking and returns cited passages tha"},{"name":"animal_history","description":"Run timeline for one animal. Filterable by branch and start cutoff; ordered newest first."},{"name":"animal_owner_contributions","description":"Animals run by one owner: list, branches each tracks, last status, first_seen_at and elapsed days since first observation."},{"name":"blame_symbol","description":"Show the commit history that modified a symbol's file, filtered to the symbol's line range."},{"name":"browse_by_date","description":"Browse threads within a specific date range. Useful for exploring what was discussed during a particular time period."},{"name":"build_status_freshness","description":"Most recent :entry/last-build-at observation across all entries. Use to detect a stalled cfbot scraper."},{"name":"buildfarm_overview","description":"High-level buildfarm health: animal count, recent run counts, currently-failing animals, top owners, OS / branch breakdown, and freshness."},{"name":"check_upstream_status","description":"Check whether a pull request has been merged upstream. Returns the latest patch series head commit and any merge information."},{"name":"code_index_status","description":"Get code indexing statistics: files indexed, symbol counts by kind and language, edge count, community count."},{"name":"codebase_map","description":"Get a directory-level overview of the codebase showing file counts and symbol counts per directory."},{"name":"commit_buildfarm_status","description":"Buildfarm results for one PostgreSQL commit: every animal that built it, with branch, status (passed/failed/flapping), the failing stage and the log url, plus a"},{"name":"commit_history","description":"Everything linked to one commit: subject, author and date with its sha, the mail thread its Discussion: link names (participants resolved to people and organiza"},{"name":"commitfest_stats","description":"Overview of all indexed commitfests: count by status, top contributors (entries authored), distinct people / commitfests / entries totals."},{"name":"contribution_summary","description":"Summary of contribution counts per release: unique people, distinct commits, role breakdown (count(DISTINCT commit_sha) per role, canonical authoritative repos "},{"name":"detect_changes","description":"Detect which symbols changed between two commits by comparing file content hashes."},{"name":"discussion_links","description":"Discussion / Closes / Fixes / Backpatch-through trailers attached to one commit. Returns the raw trailer text and any URL extracted. For the messages those link"},{"name":"embedding_status","description":"Get embedding coverage statistics: how many messages have embeddings, which model was used, and when embeddings were last generated."},{"name":"entry_branches","description":"Repository branches tracked for a commitfest entry. Joins commitfest.entry_repos with ag_repositories so callers see repo name + branch_name + is_authoritative."},{"name":"entry_history","description":"Status changes for a commitfest entry across commitfests. The relational table doesn't carry an audit log, so we approximate the patch's lifeline by joining on "},{"name":"find_breaks","description":"Animals that failed on a branch within the time window bounded by two commit SHAs. The window is defined by the earliest started_at observed for either SHA on t"},{"name":"find_contributions","description":"Find raw contribution rows for one person: git commit SHAs / buildfarm animals tagged with a role + release. Useful for drill-down on a contributor's recent wor"},{"name":"find_dead_code","description":"Find functions/methods with zero incoming call graph edges (potentially unused code)."},{"name":"find_entries_for_author","description":"Find commitfest entries where the given person is an author. Looks up by email (exact) or by name (substring, case-sensitive)."},{"name":"find_entries_for_thread","description":"Find commitfest entries linked to a pgsql-hackers thread by Message-ID. (Returns empty until the mailing-list cross-reference scrape lands; the index attribute "},{"name":"find_entries_with_failures_on","description":"Cross-domain feed: recent failed buildfarm runs for a named animal, plus commitfest entries with cfbot :failing rollups whose tracked branches overlap the anima"},{"name":"find_failing_patches","description":"Commitfest entries whose latest cfbot build fails on at least one platform: cf_id, title, entry_status and commitfest_number. entry_status filters (default the "},{"name":"find_failing_runs","description":"Most recent failing buildfarm runs across the entire fleet. Filterable by branch and start cutoff. Use to answer 'what is broken right now?'"},{"name":"find_passing_long_pending","description":"Green patches stuck in review: entries whose builds pass on every platform yet whose :entry/last-updated is older than N days. Useful for the 'why isn't this co"},{"name":"find_patches_by_platform_status","description":"Patches that pass on some platforms but not others. Example: passing on linux but failing on macos -> portability bug."},{"name":"find_pattern","description":"Search for a regex pattern in code symbol bodies. Uses trigram indexes for acceleration."},{"name":"find_rebase_needed_patches","description":"Entries cfbot reports as no longer applying to master tip (:entry/applies-cleanly is false). These need an author rebase."},{"name":"find_related_discussions","description":"Find mailing list messages related to a commit, topic, or PR. A postgres commit SHA (7-40 hex) returns the mail that refers to that commit (match_mode commit): "},{"name":"find_similar_messages","description":"Find messages similar to a given message using its embedding vector. Useful for finding related discussions or duplicate threads."},{"name":"get_animal","description":"Profile of one buildfarm animal: hardware/OS/compiler/owner, branches tracked, last build status, plus the last 20 runs (any branch)."},{"name":"get_attachment","description":"The content of one attachment of a mail message (a patch, a log, a test case), chosen by 1-based index or a filename substring, as listed in get_message/get_thr"},{"name":"get_author_messages","description":"Find messages by a specific author, optionally filtered by date range. Uses the f: (from) search prefix."},{"name":"get_callees","description":"Find all symbols that the given symbol calls/references (forward call graph)."},{"name":"get_callers","description":"Reverse call graph: the symbols that call or reference qualified_name (from search_symbols), each with its file and lines, like `git grep -w <name>` restricted "},{"name":"get_commitfest","description":"Get a single commitfest with entries grouped by status and the top contributors (authors with the most entries)."},{"name":"get_communities","description":"List Louvain community clusters detected in the call graph. Communities group related symbols by functional area."},{"name":"get_community","description":"Get details and member symbols for a specific community."},{"name":"get_contributor","description":"A contributor's profile by email (exact) or name (substring): canonical name, page hash, totals and per-release counts by role (authored, reviewed, committed, r"},{"name":"get_contributor_history","description":"Show all past mailing list submissions by a contributor (matched by email address or name)."},{"name":"get_dependents","description":"Get transitive dependents: all symbols in the blast radius if this symbol changes."},{"name":"get_doc_page","description":"One PostgreSQL documentation page as text: path (e.g. \"brin.html\" or \"sql-createtable.html\") and optional version (\"17\", \"current\"; default the latest). Returns"},{"name":"get_entry","description":"One commitfest entry by cf_id (the number in commitfest.postgresql.org/patch/<cf_id>/): title, status, commitfest, authors, reviewers, committer, its mail threa"},{"name":"get_execution_flows","description":"Trace execution flow paths through the call graph from entry points."},{"name":"get_impact","description":"Analyze the impact of modifying a symbol: risk level, blast radius, affected communities and execution flows."},{"name":"get_inbox_info","description":"Get metadata for an inbox (name, addresses, message count, last activity)"},{"name":"get_inbox_stats","description":"Return aggregate statistics about an inbox: message counts by time period, top authors, and activity trends."},{"name":"get_inbox_summary","description":"Per-inbox summary: total messages, top 10 posters, thread count, date range, and lifetime average messages/day (total messages divided by the days spanned by th"},{"name":"get_message","description":"One mail message by Message-ID: headers, in_reply_to/references, decoded body text (by default the author's own words: quotes, signature and inline patch remove"},{"name":"get_message_headers","description":"Get email headers as structured key/value pairs. Returns all headers or a specific header by name."},{"name":"get_message_references","description":"Discover cross-references in a message. Returns explicit References/In-Reply-To headers plus any Message-IDs found in the body text, with archive lookup for eac"},{"name":"get_new_messages","description":"Return messages newer than a given article number cursor, enabling agents to poll for new messages without re-scanning. Use after=0 for the first call, then use"},{"name":"get_patch_branches","description":"Get the git branches created from a patch series. Shows what branches were applied from email patches for code intelligence analysis."},{"name":"get_patch_build_history","description":"Build matrix for one entry: per-platform/config status, log URL, observation time, applies-cleanly flag, rollup."},{"name":"get_patch_series","description":"Get patch submission history for a forge pull request URL. Returns all iterations submitted to the mailing list."},{"name":"get_raw_message","description":"Get the complete raw RFC 822 email bytes for a message. Useful for agents that need to parse headers/structure themselves or forward messages."},{"name":"get_repo_sync_stats","description":"Get commit frequency analysis and sync statistics for a repository. Returns median commit interval, recommended poll frequency, and recent fetch log."},{"name":"get_repository_summary","description":"Per-repository summary: total commits, top 10 contributors, branches, language breakdown (from indexed symbols), and a sampled most-touched-paths list."},{"name":"get_signature","description":"Get the function/method signature and doc comment for a symbol."},{"name":"get_source_info","description":"Detail for a single source by name, the same row list_sources returns. Returns kind, item_count, last_update, next_sync, freshness_status, and description."},{"name":"get_symbol","description":"Get full details for a code symbol by its qualified name, including source code, signature, documentation, and file location."},{"name":"get_tests_for","description":"Find test symbols that reference the given symbol."},{"name":"get_thread","description":"A mail thread, found by any Message-ID in it, oldest first. Each message: from, to, cc, date, message_id, decoded body text (by default the author's own words: "},{"name":"get_thread_references","description":"Cross-reference graph for an entire thread. Collects all Message-IDs referenced in body text across all messages in the thread and resolves which other threads "},{"name":"get_wiki_history","description":"Get revision history for a wiki page."},{"name":"get_wiki_page","description":"One wiki.postgresql.org page by title: its latest revision content with author and date. Titles are as on the wiki (\"Don't Do This\", \"Todo\"). Use search_wiki to"},{"name":"git_analyze_activity","description":"Show commit activity over time, bucketed by period. Useful for understanding development pace and trends."},{"name":"git_analyze_authors","description":"Get commit statistics per author: total commits, first and last commit dates. Ranked by commit count."},{"name":"git_analyze_bus_factor","description":"Identify files with the fewest distinct authors (bus factor risk). Files modified by only one person are knowledge silos."},{"name":"git_analyze_churn","description":"Identify the most frequently modified files in the repository. High-churn files may indicate hotspots or unstable code."},{"name":"git_analyze_coupling","description":"Find files that are frequently changed together. Logical coupling can reveal hidden dependencies between components."},{"name":"git_analyze_hotspots","description":"Aggregate file churn by directory to find the most actively changed areas of the codebase."},{"name":"git_blame","description":"File version history, not a per-line blame: the commits that changed a file on the history of a commit (like `git log <rev> -- <path>`), newest first, each with"},{"name":"git_diff","description":"Two modes: (1) commit-range mode — pass base_branch and head_branch to get the list of commits unique to head_branch (set difference base..head), optionally fil"},{"name":"git_log","description":"Commit history like `git log`, newest first, filtered by path (commits touching a file), author (substring), since/until (YYYY-MM-DD or RFC 3339) and branch (an"},{"name":"git_search","description":"Search postgres commit messages (or file paths with search_in=paths) by keywords, newest first (all words must appear, case-insensitive; like `git log -i --grep"},{"name":"git_show_file","description":"Read a file at any commit, branch, tag or major version (like `git show <rev>:<path>`), from the git clone. commit takes a SHA (>= 7 hex), branch, tag, 17 or 9."},{"name":"history-of","description":"One-shot historical context for CI: given content (a diff, file path, symbol, commit subject, or feature name), return the most relevant default-branch commits,"},{"name":"hybrid_search","description":"Mailing-list search, keyword (BM25 over the authors' own words) and semantic (embeddings) blended per thread, over every list unless inbox names one or more. Re"},{"name":"hybrid_search_code","description":"Combined keyword + semantic code search using Reciprocal Rank Fusion. Requires embeddings to be generated."},{"name":"list_animals","description":"List PostgreSQL buildfarm animals. Filterable by OS, branch tracked, last build status, or owner. Failing animals are returned first (sort key: last_status='fai"},{"name":"list_branches","description":"List tracked branches for a repository, including head commit and default branch status."},{"name":"list_commitfests","description":"List PostgreSQL commitfests indexed in the mentat triple store. Each commitfest carries a status (:open / :in-progress / :closed) and an entry count grouped by "},{"name":"list_contributors","description":"List PostgreSQL community contributors aggregated across git trailers (Reviewed-by, Tested-by, etc.), commit author/committer headers, and buildfarm animal owne"},{"name":"list_discord_channels","description":"List monitored Discord channels with message counts."},{"name":"list_doc_versions","description":"List available documentation versions with page counts."},{"name":"list_entries","description":"List commitfest entries (proposed patch series). Filterable by status, commitfest number, or topic; paginated."},{"name":"list_inboxes","description":"List all configured agora mailboxes with name, message_count, latest_message_date, latest_import_date, listid (when known) and description. Optional min_message"},{"name":"list_projects","description":"List bridge-configured projects linking a forge repository to a mailing list inbox."},{"name":"list_recent","description":"List recent messages from an inbox"},{"name":"list_repositories","description":"List all registered git repositories with name, branch, commit_count, file_count, indexed-symbol_count, latest_commit, last_fetched_at, and import_state. Option"},{"name":"list_sources","description":"Every source behind this server with its kind (inbox, repository, docs, wiki, discord), item count, last update and freshness (fresh/stale): the 56 mailing list"},{"name":"list_threads","description":"Browse recent threads (topic-level view). Returns thread summaries with message counts, date ranges, and latest message metadata."},{"name":"recent_commitfest_activity","description":"Rolling window of commitfest entries updated in the last N days. Returns the entries plus a status histogram. Uses the relational commitfest.entries table for p"},{"name":"search_commitfest","description":"Full-text search of commitfest entries (title first, then author/reviewer/committer names), in the current commitfest by default, or commitfests=\"all\" (back to "},{"name":"release_contributors","description":"Top contributors per role for one release. Scope: canonical authoritative repos only (ag_repositories.is_authoritative = TRUE). Returns top 20 per role across a"},{"name":"repository_stats","description":"Get detailed statistics for a git repository including commit count, file count, branch, and import state."}],"package":null,"toolSurface":{"id":"ts_uxj8tkfywapp","endpointId":"ep_pg7cw4mczhvg","hash":"29657bcfbd66d3d07d5ef236d3b6546493c886acdac6b1255f3e8683ee262437","toolCount":125,"serverName":"pg.ddx.io","serverVersion":"1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-26T16:29:07.405Z","lastSeenAt":"2026-10-27T06:23:07.513Z","observations":3,"toolNames":["retrieve_context","animal_history","animal_owner_contributions","blame_symbol","browse_by_date","build_status_freshness","buildfarm_overview","check_upstream_status","code_index_status","codebase_map","commit_buildfarm_status","commit_history","commitfest_stats","contribution_summary","detect_changes","discussion_links","embedding_status","entry_branches","entry_history","find_breaks","find_contributions","find_dead_code","find_entries_for_author","find_entries_for_thread","find_entries_with_failures_on","find_failing_patches","find_failing_runs","find_passing_long_pending","find_patches_by_platform_status","find_pattern","find_rebase_needed_patches","find_related_discussions","find_similar_messages","get_animal","get_attachment","get_author_messages","get_callees","get_callers","get_commitfest","get_communities","get_community","get_contributor","get_contributor_history","get_dependents","get_doc_page","get_entry","get_execution_flows","get_impact","get_inbox_info","get_inbox_stats","get_inbox_summary","get_message","get_message_headers","get_message_references","get_new_messages","get_patch_branches","get_patch_build_history","get_patch_series","get_raw_message","get_repo_sync_stats","get_repository_summary","get_signature","get_source_info","get_symbol","get_tests_for","get_thread","get_thread_references","get_wiki_history","get_wiki_page","git_analyze_activity","git_analyze_authors","git_analyze_bus_factor","git_analyze_churn","git_analyze_coupling","git_analyze_hotspots","git_blame","git_diff","git_log","git_search","git_show_file","history-of","hybrid_search","hybrid_search_code","list_animals","list_branches","list_commitfests","list_contributors","list_discord_channels","list_doc_versions","list_entries","list_inboxes","list_projects","list_recent","list_repositories","list_sources","list_threads","recent_commitfest_activity","search_commitfest","release_contributors","repository_stats","search","search-regex","search_all_sources","search_discord_topics","search_docs","search_patches","search_symbols","search_wiki","semantic_search","semantic_search_code","symbols_in_file","regex_search_code","grep_repository","find_string_literals","upcoming_events","calendar_feeds","combine_calendars","cross_reference","whats_new","code_search","read_file","list_files","blame","get_commit","search_commits"],"distinctSurfaces":2},"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.ddx.pg/archive","url":"https://registry.modelcontextprotocol.io/v0/servers/io.ddx.pg%2Farchive","firstSeenAt":"2026-10-25T17:19:17.416Z","fetchedAt":"2026-10-25T17:19:17.416Z","normalizedAt":"2026-10-25T17:19:17.416Z"}]},"firstSeenAt":"2026-10-25T17:19:17.416Z","updatedAt":"2026-10-27T06:26:52.586Z"}