Skip to content
pg.ddx.io logo

pg.ddx.io MCP server

Which MCP servers are pg.ddx.io's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-28

← Back to pg.ddx.io

Whose server it is
  • Registry nameio.ddx.pg/archiveverified in the MCP registry

The registry name sits under ddx.io. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-28
  • Stateanswerschecked 2026-10-28
  • Tools125
  • Server calls itselfpg.ddx.io
  • Server version1.0
  • Protocol version2025-06-18

On 2026-10-28 the server answered initialize and tools/list without a sign-in. First answer in 222 ms.

Should an agent connect itNot proven either way yet
  • Whether its tools do the product's job has not been judged yet.
  • Checked on 5 of the 7 days it takes to judge reliability.

Once connected

  • For "find the mailing-list thread behind a PostgreSQL change", the likely first call is find_related_discussions.
  • Its definitions take about 23736 tokens of context: enable only the tools a task needs.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 5, the first on 2026-10-28
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 5 so far
  • Answeredmeasuring5 of the 7 daily checks it takes to print a share
  • Median first answer246 ms
  • Space in an agent's context≈ 23,736 tokensthe definitions of all its tools (126), which an agent carries on every turn
  • Tool definitionsA · 100 of 100
  • Typed results8 of 126 toolsdeclared outputSchema: results come typed, read once
  • Every tool passes all six checks.

What an agent can do with it

  • can do · find the mailing-list thread behind a PostgreSQL change
  • not sure · trace a commit to its back-patched branches and first releases
  • not sure · check an agent's PostgreSQL history answer against cited sources

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

None of the five warning signs in these definitions.

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers125 tools · read 2026-10-28
  • retrieve_context

    START HERE for a question about PostgreSQL. Searches every mailing list (inbox narrows it) with hybrid keyword + semantic ranking and returns cited passages that fit token_budget (default 4000, max 32000): one passage per thread, each the…

  • animal_history

    Run timeline for one animal. Filterable by branch and start cutoff; ordered newest first.

  • animal_owner_contributions

    Animals run by one owner: list, branches each tracks, last status, first_seen_at and elapsed days since first observation.

  • blame_symbol

    Show the commit history that modified a symbol's file, filtered to the symbol's line range.

  • browse_by_date

    Browse threads within a specific date range. Useful for exploring what was discussed during a particular time period.

  • build_status_freshness

    Most recent :entry/last-build-at observation across all entries. Use to detect a stalled cfbot scraper.

  • buildfarm_overview

    High-level buildfarm health: animal count, recent run counts, currently-failing animals, top owners, OS / branch breakdown, and freshness.

  • check_upstream_status

    Check whether a pull request has been merged upstream. Returns the latest patch series head commit and any merge information.

  • code_index_status

    Get code indexing statistics: files indexed, symbol counts by kind and language, edge count, community count.

  • codebase_map

    Get a directory-level overview of the codebase showing file counts and symbol counts per directory.

  • commit_buildfarm_status

    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 {passed, failed, flapping, unknown} rollup. commit_sha is a SHA (>= 7 hex) or…

  • commit_history

    Everything linked to one commit: subject, author and date with its sha, the mail thread its Discussion: link names (participants resolved to people and organizations), the commitfest entry if tracked, and Discord mentions. For postgres…

  • commitfest_stats

    Overview of all indexed commitfests: count by status, top contributors (entries authored), distinct people / commitfests / entries totals.

  • contribution_summary

    Summary of contribution counts per release: unique people, distinct commits, role breakdown (count(DISTINCT commit_sha) per role, canonical authoritative repos only), and revert-commit count. Powers the /community hero strip.

  • detect_changes

    Detect which symbols changed between two commits by comparing file content hashes.

  • discussion_links

    Discussion / Closes / Fixes / Backpatch-through trailers attached to one commit. Returns the raw trailer text and any URL extracted. For the messages those links resolve to, plus the committers announcement and messages citing the SHA…

  • embedding_status

    Get embedding coverage statistics: how many messages have embeddings, which model was used, and when embeddings were last generated.

  • entry_branches

    Repository branches tracked for a commitfest entry. Joins commitfest.entry_repos with ag_repositories so callers see repo name + branch_name + is_authoritative.

  • entry_history

    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 shared :entry/thread-message-id (precise) and falling back to title-prefix…

  • find_breaks

    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 that branch — not by git topological order, since the buildfarm tables don't…

  • find_contributions

    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 work.

  • find_dead_code

    Find functions/methods with zero incoming call graph edges (potentially unused code).

  • find_entries_for_author

    Find commitfest entries where the given person is an author. Looks up by email (exact) or by name (substring, case-sensitive).

  • find_entries_for_thread

    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 :entry/thread-message-id is in the schema.)

  • find_entries_with_failures_on

    Cross-domain feed: recent failed buildfarm runs for a named animal, plus commitfest entries with cfbot :failing rollups whose tracked branches overlap the animal's. Note: buildfarm runs commit SHAs and cfbot runs cf/<id> branches, so this…

  • find_failing_patches

    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 active reviewable statuses, e.g. needs-review, ready-for-committer); platform…

  • find_failing_runs

    Most recent failing buildfarm runs across the entire fleet. Filterable by branch and start cutoff. Use to answer 'what is broken right now?'

  • find_passing_long_pending

    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 committed yet?' question.

  • find_patches_by_platform_status

    Patches that pass on some platforms but not others. Example: passing on linux but failing on macos -> portability bug.

  • find_pattern

    Search for a regex pattern in code symbol bodies. Uses trigram indexes for acceleration.

  • find_rebase_needed_patches

    Entries cfbot reports as no longer applying to master tip (:entry/applies-cleanly is false). These need an author rebase.

  • find_related_discussions

    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): its Discussion: threads first, then the committers announcement, then messages…

  • find_similar_messages

    Find messages similar to a given message using its embedding vector. Useful for finding related discussions or duplicate threads.

  • get_animal

    Profile of one buildfarm animal: hardware/OS/compiler/owner, branches tracked, last build status, plus the last 20 runs (any branch).

  • get_attachment

    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_thread attachments. Text attachments come back as decoded text (a .patch is ready…

  • get_author_messages

    Find messages by a specific author, optionally filtered by date range. Uses the f: (from) search prefix.

  • get_callees

    Find all symbols that the given symbol calls/references (forward call graph).

  • get_callers

    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 to call sites. HEAD only; macro expansion and function pointers are not…

  • get_commitfest

    Get a single commitfest with entries grouped by status and the top contributors (authors with the most entries).

  • get_communities

    List Louvain community clusters detected in the call graph. Communities group related symbols by functional area.

  • get_community

    Get details and member symbols for a specific community.

  • get_contributor

    A contributor's profile by email (exact) or name (substring): canonical name, page hash, totals and per-release counts by role (authored, reviewed, committed, reported, ...), the 5 latest credited commits (commit_sha = the git SHA, roles…

  • get_contributor_history

    Show all past mailing list submissions by a contributor (matched by email address or name).

  • get_dependents

    Get transitive dependents: all symbols in the blast radius if this symbol changes.

  • get_doc_page

    One PostgreSQL documentation page as text: path (e.g. "brin.html" or "sql-createtable.html") and optional version ("17", "current"; default the latest). Returns its url, path and stored text (body) with fetched_at. Use search_docs to find…

  • get_entry

    One commitfest entry by cf_id (the number in commitfest.postgresql.org/patch/<cf_id>/): title, status, commitfest, authors, reviewers, committer, its mail threads and branches. Read the thread with get_thread; cfbot state with…

  • get_execution_flows

    Trace execution flow paths through the call graph from entry points.

  • get_impact

    Analyze the impact of modifying a symbol: risk level, blast radius, affected communities and execution flows.

  • get_inbox_info

    Get metadata for an inbox (name, addresses, message count, last activity)

  • get_inbox_stats

    Return aggregate statistics about an inbox: message counts by time period, top authors, and activity trends.

  • get_inbox_summary

    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 the archive).

  • get_message

    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 removed; full_text=true for everything, quotes included), attachments [{index…

  • get_message_headers

    Get email headers as structured key/value pairs. Returns all headers or a specific header by name.

  • get_message_references

    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 each.

  • get_new_messages

    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 the returned last_article_num as the cursor for subsequent calls.

  • get_patch_branches

    Get the git branches created from a patch series. Shows what branches were applied from email patches for code intelligence analysis.

  • get_patch_build_history

    Build matrix for one entry: per-platform/config status, log URL, observation time, applies-cleanly flag, rollup.

  • get_patch_series

    Get patch submission history for a forge pull request URL. Returns all iterations submitted to the mailing list.

  • get_raw_message

    Get the complete raw RFC 822 email bytes for a message. Useful for agents that need to parse headers/structure themselves or forward messages.

  • get_repo_sync_stats

    Get commit frequency analysis and sync statistics for a repository. Returns median commit interval, recommended poll frequency, and recent fetch log.

The first 60 of 125, as the server listed them.

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "archive": {
      "type": "http",
      "url": "https://pg.ddx.io/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http ddx https://pg.ddx.io/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://pg.ddx.io/mcp as a custom connector in the settings.

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.