Chroma’s official MCP server: vector search and collection management for RAG workflows.
pg.ddx.io: the PostgreSQL community's memory is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Every PostgreSQL mailing list since 1991, linked to the commits, code, commitfest and docs.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http pg-ddx-io-the-postgresql-community-s-memory-mcp https://pg.ddx.io/mcp
# 2 — ask your agent for something these tools do
# retrieve_context, animal_history, animal_owner_contributions and 122 more
pg.ddx.io: the PostgreSQL community's memory costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http pg-ddx-io-the-postgresql-community-s-memory-mcp https://pg.ddx.io/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
125 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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 author's own words (quotes, signature and patch removed, cut at ~1200 chars) with url, inbox, message_id, from and date. found=false with a reason when the archi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| author | string | no | Only messages this person sent: a name, an e-mail address or hash:<8 hex> (a person page). Resolved to every address they post from; an ambiguous name returns the candidates to choose from. |
| inbox | string | no | Lists to search: omit (or "all") for every list, the default; one name such as pgsql-bugs; or several, comma-separated ("pgsql-hackers,pgsql-bugs"). Names from list_inboxes. Aliases: list, inbox_name. |
| question | string | yes | The question, in plain language. |
| since | string | no | Only messages sent on or after this date (UTC): YYYY, YYYY-MM, YYYY-MM-DD, an ISO date-time, or 2w / 6m / 1y ago. |
| token_budget | number | no | Maximum tokens of evidence to return (default 4000, max 32000). |
| until | string | no | Only messages sent before this date (exclusive), same forms as since. With author: what that person had said by then. |
Run timeline for one animal. Filterable by branch and start cutoff; ordered newest first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch | string | no | Restrict to a single PG branch |
| limit | number | no | Max runs (1-1000, default 100) |
| name | string | yes | Animal name |
| since | string | no | Only runs with started_at >= this RFC3339 timestamp |
Animals run by one owner: list, branches each tracks, last status, first_seen_at and elapsed days since first observation.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| owner_email | string | no | Owner email (exact) |
| owner_name | string | no | Owner name (exact) |
Show the commit history that modified a symbol's file, filtered to the symbol's line range.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| qualified_name | string | yes | Fully qualified symbol name |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Browse threads within a specific date range. Useful for exploring what was discussed during a particular time period.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| after | string | yes | Start date (YYYY-MM-DD or YYYYMMDD) |
| before | string | yes | End date (YYYY-MM-DD or YYYYMMDD) |
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| limit | number | no | Maximum threads to return (1-200, default 50) |
Most recent :entry/last-build-at observation across all entries. Use to detect a stalled cfbot scraper.
No parameter schema on file.
High-level buildfarm health: animal count, recent run counts, currently-failing animals, top owners, OS / branch breakdown, and freshness.
No parameter schema on file.
Check whether a pull request has been merged upstream. Returns the latest patch series head commit and any merge information.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pr_url | string | yes | Forge pull request URL |
Get code indexing statistics: files indexed, symbol counts by kind and language, edge count, community count.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Get a directory-level overview of the codebase showing file counts and symbol counts per directory.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| depth | number | no | Directory depth for grouping (default 2) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
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 a branch, tag or major version (17, 9.6) for the commit it points at. Cite the commit SHA and the log urls.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commit_sha | string | yes | A commit SHA (>= 7 hex), or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.io), or a branch, tag or major version (17, 9.6) for the commit it points at |
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 also first_releases (per branch the change landed on: branch, sha, release e.g. 14.23 or null when unreleased, first_version incl. betas, shipped=false when it was
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commit_id | string | yes | The commit: a SHA (>= 7 hex), branch, tag, major version (17, 9.6), <ref>~N, or a commit_id from another tool, or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.io). |
Overview of all indexed commitfests: count by status, top contributors (entries authored), distinct people / commitfests / entries totals.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| release | string | no | Restrict to one release (PG17; 17, pg17, REL_17 also work); empty = all releases. |
Detect which symbols changed between two commits by comparing file content hashes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from_commit | string | yes | Base commit: a SHA (>= 7 hex), branch, tag, major version (17, 9.6), <ref>~N, or a commit_id from another tool, or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.io). |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
| to_commit | string | no | Target commit: a SHA (>= 7 hex), branch, tag, major version (17, 9.6), <ref>~N, or a commit_id from another tool, or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.io). Default HEAD. |
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, use git_search (mail_refs on each result).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commit_sha | string | yes | The commit: a SHA (>= 7 hex), branch, tag, major version (17, 9.6), <ref>~N, or a commit_id from another tool, or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.io). |
Get embedding coverage statistics: how many messages have embeddings, which model was used, and when embeddings were last generated.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
Repository branches tracked for a commitfest entry. Joins commitfest.entry_repos with ag_repositories so callers see repo name + branch_name + is_authoritative.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cf_id | number | yes | commitfest.postgresql.org entry id |
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 substring (weak).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cf_id | number | yes | commitfest.postgresql.org entry id |
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 carry commit ordering.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch | string | yes | PG branch (e.g. master) |
| end_sha | string | yes | Later commit SHA (window upper bound), or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.io) |
| start_sha | string | yes | Earlier commit SHA (window lower bound), or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.io) |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | no | Person's canonical email | |
| limit | number | no | Max rows (1-500, default 50) |
| name | string | no | Person's name (substring; used when email is not given) |
| release | string | no | Restrict to one release (PG17; 17, pg17, REL_17 also work) |
| role | string | no | Restrict to one role |
Find functions/methods with zero incoming call graph edges (potentially unused code).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results (1-200, default 50) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Find commitfest entries where the given person is an author. Looks up by email (exact) or by name (substring, case-sensitive).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | no | Exact :person/email | |
| limit | number | no | Max entries to return (1-500, default 100) |
| name | string | no | :person/name substring (case-sensitive) |
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.)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| message_id | string | yes | RFC822 Message-ID, with or without angle brackets, or a message URL (postgr.es/m/..., postgresql.org/message-id/..., pg.ddx.io/m/...) |
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 verb correlates by branch overlap and time window — not by direct schema join.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| animal_name | string | yes | Buildfarm animal name (e.g. fairywren) |
| limit | number | no | Max recent failed runs (1-200, default 50) |
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 narrows to one CI platform; limit caps the list. Cite https://commitfest.postgresql.org/patch/<cf_id>/.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| entry_status | string | no | Restrict to entries in this status (e.g. needs-review, ready-for-committer). Default: any active status. |
| limit | number | no | Max entries (1-500, default 100) |
| platform | string | no | Restrict to entries failing on this platform keyword (e.g. linux, macos, windows, freebsd, netbsd, openbsd). |
Most recent failing buildfarm runs across the entire fleet. Filterable by branch and start cutoff. Use to answer 'what is broken right now?'
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch | string | no | Restrict to a single PG branch |
| limit | number | no | Max runs (1-1000, default 100) |
| since | string | no | Only runs with started_at >= this RFC3339 timestamp (default: 24h ago) |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Max entries (1-500, default 100) |
| min_days | number | no | Minimum days since last update (default 14) |
Patches that pass on some platforms but not others. Example: passing on linux but failing on macos -> portability bug.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| failing_on | string | no | Platform keyword the entry must be failing on (e.g. macos) |
| limit | number | no | Max entries (1-500, default 100) |
| passing_on | string | no | Platform keyword the entry must be passing on (e.g. linux) |
Search for a regex pattern in code symbol bodies. Uses trigram indexes for acceleration.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results (1-100, default 50) |
| pattern | string | yes | Regular expression pattern |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Entries cfbot reports as no longer applying to master tip (:entry/applies-cleanly is false). These need an author rebase.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Max entries (1-500, default 100) |
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 citing the hash, each with how_it_refers. Anything else searches subject and Message-ID fields via case-insensitive substring; if that returns no hits and an emb
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results (1-50, default 20) |
| query | string | yes | Search term (subject keyword, Message-ID substring, or commit hash) |
Find messages similar to a given message using its embedding vector. Useful for finding related discussions or duplicate threads.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| limit | number | no | Maximum results to return (1-50, default 10) |
| message_id | string | yes | Message-ID of the message to find similar messages for, or a message URL (postgr.es/m/..., postgresql.org/message-id/..., pg.ddx.io/m/...) |
Profile of one buildfarm animal: hardware/OS/compiler/owner, branches tracked, last build status, plus the last 20 runs (any branch).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Animal name (e.g. elasmobranch, fairywren) |
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 to read or git apply), binary ones as base64 with encoding=base64; size is the decoded byte count. Cite the message as https://postgr.es/m/<message_id>.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filename | string | no | Substring to match against attachment filenames |
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| index | number | no | 1-based attachment index (from get_message attachment metadata) |
| message_id | string | yes | Message-ID (with or without angle brackets), or a message URL (postgr.es/m/..., postgresql.org/message-id/..., pg.ddx.io/m/...) |
Find messages by a specific author, optionally filtered by date range. Uses the f: (from) search prefix.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| after | string | no | Only return messages after this date (YYYY-MM-DD or YYYYMMDD) |
| author | string | yes | Author name or email to search for |
| before | string | no | Only return messages before this date (YYYY-MM-DD or YYYYMMDD) |
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| limit | number | no | Maximum results to return (1-200, default 50) |
| offset | number | no | Offset for pagination |
Find all symbols that the given symbol calls/references (forward call graph).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results (1-100, default 50) |
| qualified_name | string | yes | Fully qualified symbol name |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
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 followed. limit caps the list. Read a caller with git_show_file at its line.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results (1-100, default 50) |
| qualified_name | string | yes | Fully qualified symbol name |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Get a single commitfest with entries grouped by status and the top contributors (authors with the most entries).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| number | number | yes | Commitfest sequence number, e.g. 59 |
List Louvain community clusters detected in the call graph. Communities group related symbols by functional area.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum communities (1-100, default 20) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Get details and member symbols for a specific community.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| community_id | number | yes | Community ID |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
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 = every role they had in it), and buildfarm animals they own. People who hid their page are excluded from name lookups. For what they did recently use whats_new.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | no | Exact :person/canonical-email match | |
| name | string | no | :person/canonical-name substring (case-insensitive). Used only when email is not provided. |
Show all past mailing list submissions by a contributor (matched by email address or name).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| contributor | string | yes | Contributor email address or display name |
| limit | number | no | Maximum results (1-100, default 50) |
Get transitive dependents: all symbols in the blast radius if this symbol changes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results (1-200, default 50) |
| max_depth | number | no | Maximum BFS depth (1-5, default 3) |
| qualified_name | string | yes | Fully qualified symbol name |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
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 the path. Cite the returned url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | URL path of the documentation page |
| version | string | no | Documentation version (default: latest available) |
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 find_failing_patches. Cite https://commitfest.postgresql.org/patch/<cf_id>/.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cf_id | number | yes | commitfest.postgresql.org entry id |
Trace execution flow paths through the call graph from entry points.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| max_depth | number | no | Maximum BFS depth (1-10, default 8) |
| max_flows | number | no | Maximum flows to return (1-50, default 20) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Analyze the impact of modifying a symbol: risk level, blast radius, affected communities and execution flows.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| qualified_name | string | yes | Fully qualified symbol name |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Get metadata for an inbox (name, addresses, message count, last activity)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
Return aggregate statistics about an inbox: message counts by time period, top authors, and activity trends.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| period | string | no | Aggregation period: "day", "week", "month" (default), or "year" |
| top_authors | number | no | Number of top authors to return (1-50, default 10) |
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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Inbox name |
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, filename, content_type, size}] and has_patch. Never raw MIME: get_attachment returns an attachment's content, get_raw_message the RFC 822 source. Finds the list itself
| Parameter | Type | Required | Notes |
|---|---|---|---|
| body_only | boolean | no | Older spelling of full_text=true: the whole decoded text (default false). |
| full_text | boolean | no | Return the whole decoded text, quoted replies and signature included (default false: the author's own words only). |
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| include_body | boolean | no | Include message body (default true) |
| message_id | string | yes | Message-ID (with or without angle brackets), or a message URL (postgr.es/m/..., postgresql.org/message-id/..., pg.ddx.io/m/...) |
Get email headers as structured key/value pairs. Returns all headers or a specific header by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| header | string | no | Specific header name to retrieve (e.g. "X-Mailer"); omit to get all headers |
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| message_id | string | yes | Message-ID (with or without angle brackets), or a message URL (postgr.es/m/..., postgresql.org/message-id/..., pg.ddx.io/m/...) |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| message_id | string | yes | Message-ID (with or without angle brackets), or a message URL (postgr.es/m/..., postgresql.org/message-id/..., pg.ddx.io/m/...) |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| after | number | yes | Article number cursor; returns messages with article numbers greater than this value. Use 0 for the first call. |
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| limit | number | no | Maximum messages to return (1-1000, default 200) |
Get the git branches created from a patch series. Shows what branches were applied from email patches for code intelligence analysis.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pr_url | string | yes | Forge pull request URL |
Build matrix for one entry: per-platform/config status, log URL, observation time, applies-cleanly flag, rollup.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cf_id | number | yes | commitfest.postgresql.org entry id |
Get patch submission history for a forge pull request URL. Returns all iterations submitted to the mailing list.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pr_url | string | yes | Forge pull request URL |
Get the complete raw RFC 822 email bytes for a message. Useful for agents that need to parse headers/structure themselves or forward messages.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| message_id | string | yes | Message-ID (with or without angle brackets), or a message URL (postgr.es/m/..., postgresql.org/message-id/..., pg.ddx.io/m/...) |
Get commit frequency analysis and sync statistics for a repository. Returns median commit interval, recommended poll frequency, and recent fetch log.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Per-repository summary: total commits, top 10 contributors, branches, language breakdown (from indexed symbols), and a sampled most-touched-paths list.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Repository name |
Get the function/method signature and doc comment for a symbol.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| qualified_name | string | yes | Fully qualified symbol name |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | no | Only this kind (inbox, repository, docs, wiki, discord, legacy): a name two kinds share (psqlodbc is an inbox and a repository) otherwise answers the inbox. |
| name | string | yes | A name list_sources returns: an inbox (pgsql-hackers), a repository (postgres), pg-docs, pg-wiki, pg-discord or legacy. A kind with one source (wiki, docs, discord) names that source. |
Get full details for a code symbol by its qualified name, including source code, signature, documentation, and file location.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| qualified_name | string | yes | Fully qualified symbol name (e.g. 'MyClass.myMethod', 'pkg::func_name') |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Find test symbols that reference the given symbol.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| qualified_name | string | yes | Fully qualified symbol name |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
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: quoted replies, signature and inline patch removed; full_text=true for the whole decoded text; never raw MIME), attachments [{index, filename, content_type, size}] and has_patch. Paged: 20 messages per call (limit max 500; offset/next_offse
| Parameter | Type | Required | Notes |
|---|---|---|---|
| full_text | boolean | no | Whole decoded text of each message, quotes included (default false: own words only). |
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| include_bodies | boolean | no | Include message bodies (default true). false returns an outline: headers only. |
| limit | number | no | Messages per page (1-500, default 20). |
| max_body_chars | number | no | Cap each body at this many characters (default 4000; 0 = no cap). |
| message_id | string | yes | Message-ID of any message in the thread, or a message URL (postgr.es/m/..., postgresql.org/message-id/..., pg.ddx.io/m/...) |
| offset | number | no | Skip this many messages; use next_offset from the previous page. |
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 they point to.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| message_id | string | yes | Message-ID of any message in the thread, or a message URL (postgr.es/m/..., postgresql.org/message-id/..., pg.ddx.io/m/...) |
Get revision history for a wiki page.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum revisions to return (1-100, default 20) |
| title | string | yes | Wiki page title |
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 find a title, get_wiki_history for older revisions. Cite https://wiki.postgresql.org/wiki/<title>.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | Wiki page title |
Show commit activity over time, bucketed by period. Useful for understanding development pace and trends.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| period | string | no | Aggregation period: "week", "month" (default), "quarter", or "year" |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Get commit statistics per author: total commits, first and last commit dates. Ranked by commit count.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum authors to return (1-100, default 25) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Identify files with the fewest distinct authors (bus factor risk). Files modified by only one person are knowledge silos.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum files to return (1-100, default 25) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Identify the most frequently modified files in the repository. High-churn files may indicate hotspots or unstable code.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results to return (1-100, default 25) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Find files that are frequently changed together. Logical coupling can reveal hidden dependencies between components.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum pairs to return (1-100, default 25) |
| min_count | number | no | Minimum co-change count to include a pair (default 2) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Aggregate file churn by directory to find the most actively changed areas of the codebase.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| depth | number | no | Directory depth for aggregation (default 1) |
| limit | number | no | Maximum directories to return (1-100, default 25) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
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 sha, commit_id, author, date, summary and status (added/modified/deleted). Renames are not followed. Up to limit commits (default 100, max 1000); has_more says there are older ones.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commit | string | no | List the commits on the history of this commit: a SHA (>= 7 hex), branch, tag, major version (17, 9.6), <ref>~N, or a commit_id from another tool, or a commit URL (gitweb, git.postgresql.org, GitHub, |
| limit | number | no | Maximum commits to return (1-1000, default 100). |
| path | string | yes | File path within the repository |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
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 filtered by author/message/path; (2) content-diff mode — pass from_commit and to_commit to compute file-level unified diffs between two specific commits.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| author | string | no | Commit-range mode: filter by author name or email (substring match) |
| base_branch | string | no | Commit-range mode: base side of the range (excluded). Defaults to the repository's default branch when head_branch is set. |
| from_commit | string | no | Content-diff mode: commit to diff from: a SHA (>= 7 hex), branch, tag, major version (17, 9.6), <ref>~N, or a commit_id from another tool, or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.i |
| head_branch | string | no | Commit-range mode: head side of the range (included). When set, switches to commit-range mode. |
| limit | number | no | Commit-range mode: maximum commits to return (1-1000, default 100) |
| message_filter | string | no | Commit-range mode: filter commits whose message matches this string (case-insensitive substring; passed to git log --grep) |
| path | string | no | Limit results to a specific file path |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
| to_commit | string | no | Content-diff mode: commit to diff to: a SHA (>= 7 hex), branch, tag, major version (17, 9.6), <ref>~N, or a commit_id from another tool, or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.io) |
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 (any branch, tag or major version such as 17 or 9.6; default the indexed default branch). Each commit: sha (40-hex, cite it), commit_id, message (subject for a branch log), author and dates. limit default 50, max 200; offset pages; has_more. r
| Parameter | Type | Required | Notes |
|---|---|---|---|
| author | string | no | Filter by author name or email (substring match) |
| branch | string | no | Restrict the log to commits reachable from this branch (e.g. cf/5556). Default: the repository's default branch. |
| limit | number | no | Maximum commits to return (1-200, default 50) |
| offset | number | no | Offset for pagination (default 0) |
| path | string | no | Filter commits to those touching this file path |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
| since | string | no | Only commits after this date (YYYY-MM-DD or RFC3339) |
| until | string | no | Only commits before this date (YYYY-MM-DD or RFC3339) |
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 with every word). Each commit: sha (40-hex, cite it), commit_id, message, author, date, people credited, and mail_refs: up to 5 messages that refer to it {inbox, message_id, subject, url, how_it_refers: discussion-trailer, committers-anno
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results to return (1-200, default 50) |
| query | string | yes | Search query string |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
| search_in | string | no | What to search: "messages" (commit messages, default) or "paths" (file paths) |
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.6, <ref>~N or a commit_id; default HEAD; an unknown name or path is an error, never a silent HEAD. Returns at most 2000 lines per call: start_line/end_line pick the range, total_lines gives the length and cut=true says more follow. Lines ar
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commit | string | no | Commit to read the file at: a SHA (>= 7 hex), branch, tag, major version (17, 9.6), <ref>~N, or a commit_id from another tool, or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.io). Default |
| end_line | number | no | Last line to return (1-based, inclusive). Default: the end of the file, capped at start_line + 1999. |
| numbered | boolean | no | Prefix each line with its line number and a tab (default true). false returns the exact file bytes. |
| path | string | yes | File path within the repository |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
| start_line | number | no | First line to return (1-based). Default 1. |
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, the associated mailing-list discussion (message links), and the tracked people involved (community page links). Read-only; composes git history + list search.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| content | string | yes | Free text: a diff/hunk, file path(s), symbol name, commit subject, feature name, or error text. |
| inbox | string | no | Mailing list to search for discussion (default: pgsql-hackers). |
| limit | number | no | Max items per section (default 5). |
| repo | string | no | Tracked repo whose default branch to trace (default: postgres). |
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. Returns up to limit threads (default 20, max 50), best first, each its best message: inbox, message_id, subject, from, date, thread_id, fused_score (0-1), similarity and a short excerpt of the author's own words. Like a ranked `git log --grep
| Parameter | Type | Required | Notes |
|---|---|---|---|
| author | string | no | Only messages this person sent: a name, an e-mail address or hash:<8 hex> (a person page). Resolved to every address they post from; an ambiguous name returns the candidates to choose from. |
| inbox | string | no | Lists to search: omit (or "all") for every list, the default; one name such as pgsql-bugs; or several, comma-separated ("pgsql-hackers,pgsql-bugs"). Names from list_inboxes. Aliases: list, inbox_name. |
| keyword_weight | number | no | Weight for keyword results in the fusion, 0.0-1.0 (default 0.65). Raise it for exact identifiers (function names, GUCs, error text); lower it to lean on semantic similarity. |
| limit | number | no | Maximum results to return (1-50, default 20) |
| query | string | yes | Search query (supports both keywords and natural language). Operators: after:/before:YYYY[-MM[-DD]], d:A..B, site:<list|docs|wiki|commits>, from:/author:, intitle:/s:, intext:/b:, to:/cc:, filetype:pa |
| since | string | no | Only messages sent on or after this date (UTC): YYYY, YYYY-MM, YYYY-MM-DD, an ISO date-time, or 2w / 6m / 1y ago. |
| until | string | no | Only messages sent before this date (exclusive), same forms as since. With author: what that person had said by then. |
Combined keyword + semantic code search using Reciprocal Rank Fusion. Requires embeddings to be generated.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| keyword_weight | number | no | Weight for keyword results in fusion (0.0-1.0, default 0.5) |
| limit | number | no | Maximum results (1-100, default 20) |
| query | string | yes | Search query (supports keywords and natural language) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
List PostgreSQL buildfarm animals. Filterable by OS, branch tracked, last build status, or owner. Failing animals are returned first (sort key: last_status='failed' DESC, name ASC).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch | string | no | Restrict to animals tracking this PostgreSQL branch (e.g. master, REL_18_STABLE) |
| limit | number | no | Max animals (1-500, default 100) |
| os | string | no | Restrict to animals running this OS (exact match against ag_buildfarm_animals.os) |
| owner | string | no | Restrict to a single owner_name or owner_email (exact match) |
| status | string | no | Restrict to animals with this last_status: passed, failed, flapping, unknown |
List tracked branches for a repository, including head commit and default branch status.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
List PostgreSQL commitfests indexed in the mentat triple store. Each commitfest carries a status (:open / :in-progress / :closed) and an entry count grouped by status.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | Filter by commitfest status: open, in-progress, or closed |
List PostgreSQL community contributors aggregated across git trailers (Reviewed-by, Tested-by, etc.), commit author/committer headers, and buildfarm animal owners. Sorted by total contributions descending. Filterable by release / role / source.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Max contributors to return (1-500, default 100) |
| offset | number | no | Pagination offset (default 0) |
| release | string | no | Restrict to one release, e.g. PG18 / PG17 / pre-9.6; 17, pg17, REL_17 and REL_17_STABLE mean PG17 |
| role | string | no | Restrict to one role: authored, reviewed, tested, reported, committed, co-authored, suggested, signed-off, buildfarm-owner, ... |
| source | string | no | Restrict to one source: git, buildfarm, email, wiki, commitfest |
List monitored Discord channels with message counts.
No parameter schema on file.
List available documentation versions with page counts.
No parameter schema on file.
List commitfest entries (proposed patch series). Filterable by status, commitfest number, or topic; paginated.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commitfest_number | number | no | Restrict to entries from this commitfest (e.g. 59) |
| limit | number | no | Max entries to return (1-500, default 100) |
| offset | number | no | Pagination offset (default 0) |
| status | string | no | Status keyword without leading colon, e.g. needs-review, ready-for-committer, waiting-on-author, committed, withdrawn, returned-with-feedback |
| topic | string | no | Restrict to entries with this :entry/topic value (substring match) |
List all configured agora mailboxes with name, message_count, latest_message_date, latest_import_date, listid (when known) and description. Optional min_messages filter; limit/offset are accepted for forward compatibility.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Forward-compat: max rows (default unlimited) |
| min_messages | number | no | Only return inboxes with at least this many messages |
| offset | number | no | Forward-compat: skip the first N rows |
List bridge-configured projects linking a forge repository to a mailing list inbox.
No parameter schema on file.
List recent messages from an inbox
| Parameter | Type | Required | Notes |
|---|---|---|---|
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| limit | number | no | Maximum messages to return (1-200, default 25) |
List all registered git repositories with name, branch, commit_count, file_count, indexed-symbol_count, latest_commit, last_fetched_at, and import_state. Optional min_commits and branch filters; limit/offset accepted for forward compatibility.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch | string | no | Filter to repositories whose default branch matches this string |
| limit | number | no | Forward-compat: max rows (default unlimited) |
| min_commits | number | no | Only return repositories with at least this many commits |
| offset | number | no | Forward-compat: skip the first N rows |
Every source behind this server with its kind (inbox, repository, docs, wiki, discord), item count, last update and freshness (fresh/stale): the 56 mailing lists, the git repositories, the documentation releases, the wiki and Discord. Use it to learn the inbox and repository names other tools accept and how current each is. kind filters; min_items drops small sources.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | no | Filter to a single kind (inbox|repository|docs|wiki|discord) |
| limit | number | no | Forward-compat: max rows (default unlimited) |
| min_items | number | no | Only return sources with at least this many items |
| offset | number | no | Forward-compat: skip the first N rows |
Browse recent threads (topic-level view). Returns thread summaries with message counts, date ranges, and latest message metadata.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| before | number | no | Unix timestamp; only return threads with last activity before this time (for pagination) |
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| limit | number | no | Maximum threads to return (1-100, default 20) |
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 predictable latency.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Max entries (1-500, default 100) |
| since | string | no | RFC3339 cutoff (default: 7 days ago) |
Full-text search of commitfest entries (title first, then author/reviewer/committer names), in the current commitfest by default, or commitfests="all" (back to 2014) or a comma list of numbers. Websearch syntax: "phrase", -term, or. Each result: cf_id, title, status, commitfest(s), people, last update, the commitfest.postgresql.org patch url and the pg.ddx.io thread link. limit default 20, max 50.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commitfests | string | no | "current" (default: the commitfest commitfest.postgresql.org/current/ shows), "all", or a comma list of commitfest numbers, e.g. "62,61" or "current,55"; see /api/v2/commitfest/commitfests |
| limit | integer | no | Max results (default 20, max 50) |
| query | string | yes | Search query, e.g. NUMA or "Tom Lane". commitfest:this|next|<name> and release:this|next|PG20 keep entries the commit model estimates for that commitfest or release |
| sort | string | no | relevance (default), likely or unlikely: by the commit model's P(commit) (the release's when the query has release:), entries without an estimate last |
Top contributors per role for one release. Scope: canonical authoritative repos only (ag_repositories.is_authoritative = TRUE). Returns top 20 per role across authored / reviewed / tested / reported / committed (per-role distinct-commit counts).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| per_role_limit | number | no | Top-N per role (1-100, default 20) |
| release | string | yes | Release, e.g. PG18 / PG17 / pre-9.6; 17, pg17, REL_17 and REL_17_STABLE mean PG17 |
Get detailed statistics for a git repository including commit count, file count, branch, and import state.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Keyword search of mailing-list messages (BM25 over subject, sender and the authors' own words), every list unless inbox narrows it. Operators in query: s:/intitle: subject, f:/from: sender, b:/intext: body, after:/before:/d:2024-01..2025-01 dates, site:<list>, filetype:patch, link:<url glob>, /regex/. Returns messages best first (limit default 50, max 200; offset pages; collapse_threads=true keeps
| Parameter | Type | Required | Notes |
|---|---|---|---|
| author | string | no | Only messages this person sent: a name, an e-mail address or hash:<8 hex> (a person page). Resolved to every address they post from; an ambiguous name returns the candidates to choose from. |
| collapse_threads | boolean | no | Deduplicate results to one per thread, keeping the highest-scoring hit (default false) |
| inbox | string | no | Lists to search: omit (or "all") for every list, the default; one name such as pgsql-bugs; or several, comma-separated ("pgsql-hackers,pgsql-bugs"). Names from list_inboxes. Aliases: list, inbox_name. |
| limit | number | no | Maximum results to return (1-200, default 50) |
| offset | number | no | Offset for pagination |
| query | string | yes | Search query string. Operators: after:/before:YYYY[-MM[-DD]], d:A..B, site:<list|docs|wiki|commits>, from:/author:, intitle:/s:, intext:/b:, to:/cc:, filetype:patch, has:patch, link:<url glob> (messag |
| since | string | no | Only messages sent on or after this date (UTC): YYYY, YYYY-MM, YYYY-MM-DD, an ISO date-time, or 2w / 6m / 1y ago. |
| until | string | no | Only messages sent before this date (exclusive), same forms as since. With author: what that person had said by then. |
Full-text search across mailing list messages using POSIX regex patterns. Supports edit-distance fuzzy matching via the k parameter (0 = exact regex, >=1 = up to k insertions/deletions/substitutions per match). Same prefix syntax as search: s:subject f:from t:to d:2024-01..2025-01 b:body_text
| Parameter | Type | Required | Notes |
|---|---|---|---|
| collapse_threads | boolean | no | Deduplicate results to one per thread (default false) |
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| k | number | no | Edit distance for fuzzy match (0-5, default 0) |
| limit | number | no | Maximum results to return (1-200, default 50) |
| offset | number | no | Offset for pagination |
| query | string | yes | POSIX regex pattern |
Unified search across all document sources (docs, wiki, and email). Returns results ranked by relevance. Search operators (site:, after:, before:, from:, link:, /regex/ ...) are applied per source; operators and warnings say what the query used, and skipped names each source the query left out and why. With define:<term> it also returns definition, the same card search_docs returns.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results to return (1-50, default 20) |
| query | string | yes | Search query (supports both keywords and natural language). Operators apply to every source they fit: after:/before:, site:docs|wiki|mail|commits, intitle:, from:, link:<url glob>, /regex/ (see GET /a |
Find PostgreSQL Discord discussions semantically related to a query. Returns only the channel, approximate date range, and participants of relevant conversations — never message content or links (per the Discord community agreement).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results to return (1-25, default 10) |
| query | string | yes | Natural language query to find semantically related Discord discussions |
Full-text search of the PostgreSQL documentation (websearch syntax: "phrase", -term, or), title matches first. Searches the current release unless version (one, e.g. "17") or versions (several) is given; a page matching in several selected versions is one result listing each version and its URL. Returns title, path, url, the versions it matched and a snippet. With define:<term> in query (define:MV
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results to return (1-50, default 20) |
| query | string | yes | Search query string |
| version | string | no | One documentation version (e.g. "18", "17"; "current" = the current release). Ignored when versions is given. |
| versions | array | no | Documentation versions to search, e.g. ["18", "17"] (default: the current release; see list_doc_versions) |
Find patch series by parsing [PATCH v2 3/7]-style subject prefixes. Returns structured patch metadata including version, sequence, total, and series grouping.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| inbox | string | no | Mailing list name, e.g. pgsql-general. Defaults to pgsql-hackers when omitted. Aliases: list, inbox_name. |
| limit | number | no | Maximum results to return (1-100, default 50) |
| query | string | no | Additional search query to filter patches |
Find C functions, macros, types and variables by name in the indexed source (HEAD): BM25 on names, then fuzzy and body matches. Filter by kind (function, struct, macro, ...), language, repository. Each result: qualified_name, name, kind, language, file, start_line and end_line. Like ctags/git grep -w for definitions. Follow with get_callers, or git_show_file with start_line/end_line to read th
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | no | Filter by symbol kind: function, class, method, struct, enum, interface, trait, etc. |
| language | string | no | Filter by language: go, python, c, cpp, rust, java, typescript, javascript, etc. |
| limit | number | no | Maximum results (1-200, default 50) |
| query | string | yes | Search query (symbol name, partial name, or keyword) |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Full-text search (websearch syntax) of wiki.postgresql.org. By default searches each page's current text; history=true searches every revision and returns, per page, the latest matching revision (rev_id, revision_url, author, comment, timestamp, is_current) and how many matched; since/until bound the revision dates. Read a page with get_wiki_page; cite its wiki url. Search operators apply (intitle
| Parameter | Type | Required | Notes |
|---|---|---|---|
| history | boolean | no | Search every revision, not only the current text (default false) |
| limit | number | no | Maximum results to return (1-50, default 20) |
| query | string | yes | Search query string |
| since | string | no | With history: only revisions at or after this date (YYYY-MM-DD or ISO-8601) |
| until | string | no | With history: only revisions before the end of this date (YYYY-MM-DD or ISO-8601) |
Search messages on every list (or the lists in inbox) by semantic similarity using vector embeddings; each result names its inbox. Returns messages most similar in meaning to the query text. Requires embeddings to be generated first (see embedding_status). Each result carries an 'excerpt': the author's own words, quoted text and signatures removed.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| inbox | string | no | Lists to search: omit (or "all") for every list, the default; one name such as pgsql-bugs; or several, comma-separated ("pgsql-hackers,pgsql-bugs"). Names from list_inboxes. Aliases: list, inbox_name. |
| limit | number | no | Maximum results to return (1-50, default 20) |
| query | string | yes | Natural language query to search for semantically similar messages |
Search code symbols by semantic similarity using vector embeddings. Requires embeddings.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum results (1-50, default 20) |
| query | string | yes | Natural language query |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
List all code symbols defined in a file, ordered by line number.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | File path within the repository |
| repository | string | no | Repository name, e.g. pgbouncer. Defaults to postgres when omitted. Aliases: repo, repo_name. |
Regular-expression search of the CURRENT source only (HEAD of master for postgres, the default branch elsewhere), like git grep -E with grep's line semantics: ^ and $ anchor at line starts and ends, . does not cross lines. PostgreSQL regex syntax (\s, \w, (?i) work). path_glob narrows by SQL LIKE pattern ("src/backend/%.c"), repository by name. Returns up to max_results files (default 50, max 50
| Parameter | Type | Required | Notes |
|---|---|---|---|
| max_results | number | no | Max matches to return (1-500, default 50). |
| path_glob | string | no | Restrict results to paths matching this SQL LIKE pattern, e.g. "%/src/backend/%.c". |
| pattern | string | yes | POSIX extended regex pattern, e.g. "^static\\s+void\\s+ProcSignal". |
| repository | string | no | Restrict results to this repository name (exact match against ag_repositories.name). |
Literal-text search of the CURRENT source only (HEAD of master for postgres, the default branch elsewhere), like git grep -F (regex characters are escaped; case_insensitive=true for -i). Returns up to max_results files (default 50, max 500), each with repo_name, file_path, line_no and snippet (its first matching line). For any other commit, branch, tag, major version or date, for every match wit
| Parameter | Type | Required | Notes |
|---|---|---|---|
| case_insensitive | boolean | no | Match case-insensitively (default false). |
| max_results | number | no | Max matches to return (1-500, default 50). |
| repository | string | no | Restrict results to this repository name. |
| text | string | yes | Literal substring to search for. Regex metachars are escaped before searching. |
Find occurrences of a literal in current (HEAD) source, restricted to a syntactic kind: "strings" (inside double quotes), "comments" (after // or /*), or "all".
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | no | One of "all" (default), "strings", or "comments". |
| literal | string | yes | Literal text to find. Regex metachars are escaped. |
| max_results | number | no | Max matches to return (1-500, default 50). |
| repository | string | no | Restrict results to this repository name. |
PostgreSQL community events in a date window: conferences, PGDays, meetups, online events, Call for Papers and registration deadlines, conference talks (with speakers and their pg.ddx.io person hash), Talking Postgres episodes, release dates and commitfests. Same data as the iCalendar feeds at https://pg.ddx.io/calendars (community event listings from the PostgreSQL Event Calendar, curated by Andr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| days | integer | no | Look-ahead window in days (default 90, max 730) |
| from | string | no | Start date YYYY-MM-DD (default today) |
| kind | string | no | event, cfp, deadline, session (a conference talk), release, or signal |
| limit | integer | no | Max rows (default 50, max 500) |
| offset | integer | no | Pagination offset |
| person | string | no | pg.ddx.io person hash (8 hex): only their talks/appearances |
| series | string | no | Series slug, e.g. pgconf-eu, pgconf-dev, posette, talking-postgres |
| speaker | string | no | Substring of a speaker's name |
| to | string | no | End date YYYY-MM-DD (default from + days) |
| where | string | no | Country (ISO code or name, e.g. 'de', 'Germany'), region slug (europe, north-america, south-america, asia-pacific, middle-east-africa), a series slug (pgconf-eu, talking-postgres, ...), or 'online' |
List every pg.ddx.io calendar feed (iCalendar URLs) with event counts: all events, regions, countries, conference series, the PostgreSQL release cycle, teams and organisations.
No parameter schema on file.
Combine several pg.ddx.io calendar feeds into ONE subscription. Give feed paths or URLs as listed by calendar_feeds (e.g. events/region/europe, series/pgconf-eu, teams/committers, people/<8hex>, https://pg.ddx.io/cal/orgs/edb.ics; 1-200). Returns the combined feed's hash, canonical feed list, https url and webcal url. The same selection always yields the same URL.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| excludes | array | no | Feeds whose events are removed from the combination (but not), e.g. events/country/rs or teams/security-team |
| feeds | array | yes | Feed paths or /cal/ URLs to combine |
What relates to one stored item, and what happened to it. ref: a Message-ID or message URL, a commit SHA or URL, a docs URL or page.html, a wiki URL or title, a commitfest URL, CVE-YYYY-NNNNN, or feature:<words> (matched to commitfest titles and to the subjects of the postgres commits that introduce it; ref.entries_used and ref.commits_used say which; a name nothing matches gives empty results, no
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kinds | array | no | Result kinds to return (default all) |
| limit_per_kind | number | no | Items per kind (1-25, default 5) |
| ref | string | yes | The item: e.g. 19705-548fda77321e062d@postgresql.org, https://www.postgresql.org/docs/current/brin.html, Don't Do This, b536d5a0bd7a, CVE-2024-10979, feature:incremental backup |
| timeline | boolean | no | Include the timeline (default true) |
| version | string | no | Docs version for a page given without one (default current), e.g. 17 |
Catch up: everything a person or group did, and where they were named, in a window, newest first per kind (mail grouped by thread). who: a name (fuzzy; close matches return ambiguous [{name, hash}]), email, hash:<8 hex>, team:<slug>, org:<name>, new:<window>, a phrase ('the core team'), or a list. since/until: ISO date, today, 2w/14d/1m, pg19 (a release's development window), all; default 14 days.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| during | string | no | A calendar event uid or url, or pg19: sets since and until to its dates |
| kinds | array | no | Result kinds to return (default all) |
| limit | number | no | Items per kind (1-100, default 20) |
| since | string | no | Window start: 2026-10-01, 2w, 14d, 1m, today, pg19, all (default 14 days ago) |
| topic | string | no | Optional topic that narrows every kind, e.g. NUMA, benchmarking |
| until | string | no | Window end: now (default), today 08:00, 2026-10-21T08:00, pg19 |
| who | yes | Who: 'Tom Lane', 'team:core-team', 'org:Amazon/AWS', 'new:30d', a 8-hex person hash, an email; a string or a list of strings |
Search the postgres source at any commit, branch, tag or date (or across history), from the code-history index: every line of every commit, byte-exact. A literal by default; match=regex for a PostgreSQL regex (^ and $ are per line; \b \< \> as in grep), match=identifier for any of snake_case/CamelCase/UPPER spellings. File sets agree with git grep -l at the same commit. Results name the resolved
| Parameter | Type | Required | Notes |
|---|---|---|---|
| budget_ms | number | no | Time budget (100-15000, default 10000) |
| case_sensitive | boolean | no | Default true |
| context | number | no | Lines of context around each match (0-20, default 0) |
| exclude | array | no | Path globs to drop |
| history | string | no | Search history instead of one commit: all, a rev (everything up to it on its line), or A..B (B's line after A, as git log A..B) |
| include | array | no | Path globs to keep, e.g. *.c, src/include/**/*.h |
| limit | number | no | Results per page (1-2000, default 100) |
| match | string | no | How to read query (default literal) |
| offset | number | no | Results to skip (paging) |
| output | string | no | lines (default): each matching line with its number; files: paths with match counts; counts: [path, count] pairs |
| paths | array | no | Directories or globs to search under, e.g. src/backend/storage |
| query | string | yes | Text, regex or identifier to find |
| repository | string | no | Repository; only postgres is in the code-history index for now (the default). |
| version | string | no | Commit to read: a SHA or 7+ hex prefix, a branch (master, REL_17_STABLE), a tag (REL_17_0), a major (17, 9.6), a release (17.2), <ref>@YYYY-MM-DD (the branch's last commit by that day), or <ref>~N. De |
Read a file of the postgres source at any commit, branch, tag or date from the code-history index: numbered lines, at most 2000 per call (page with start_line/end_line), byte-exact to git. Says total_lines and complete; binary files return their metadata only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| end_line | number | no | Last line (default start_line + 1999) |
| path | string | yes | Path from the repository root, e.g. src/backend/access/transam/xlog.c |
| repository | string | no | Repository; only postgres is in the code-history index for now (the default). |
| start_line | number | no | First line (default 1) |
| version | string | no | Commit to read: a SHA or 7+ hex prefix, a branch (master, REL_17_STABLE), a tag (REL_17_0), a major (17, 9.6), a release (17.2), <ref>@YYYY-MM-DD (the branch's last commit by that day), or <ref>~N. De |
List the files of the postgres source under a directory at any commit, branch, tag or date (code-history index), with line counts; depth folds deeper paths into directories with file counts; glob filters paths.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| depth | number | no | Levels below path to list (default all) |
| glob | string | no | Path glob, e.g. *.dat or src/include/catalog/*.h |
| limit | number | no | Entries (1-5000, default 500) |
| path | string | no | Directory (default the root) |
| repository | string | no | Repository; only postgres is in the code-history index for now (the default). |
| version | string | no | Commit to read: a SHA or 7+ hex prefix, a branch (master, REL_17_STABLE), a tag (REL_17_0), a major (17, 9.6), a release (17.2), <ref>@YYYY-MM-DD (the branch's last commit by that day), or <ref>~N. De |
Per-line blame of a postgres file at any commit (code-history index): the commit that wrote each line, as git blame with git's default diff. ignore_revs (default true) passes through the pgindent/reformat commits of .git-blame-ignore-revs when they replaced lines one-for-one; reverse adds the commit that removed each line later on the version's branch. At most 2000 lines per call; commits lists
| Parameter | Type | Required | Notes |
|---|---|---|---|
| end_line | number | no | Last line (default start_line + 1999) |
| ignore_revs | boolean | no | Pass through .git-blame-ignore-revs commits (default true) |
| path | string | yes | Path from the repository root |
| repository | string | no | Repository; only postgres is in the code-history index for now (the default). |
| reverse | boolean | no | Also name the commit that later removed each line (default false) |
| start_line | number | no | First line (default 1) |
| version | string | no | Commit to read: a SHA or 7+ hex prefix, a branch (master, REL_17_STABLE), a tag (REL_17_0), a major (17, 9.6), a release (17.2), <ref>@YYYY-MM-DD (the branch's last commit by that day), or <ref>~N. De |
One postgres commit from the code-history index: message, parsed trailers (names only), Discussion threads (links to the archived thread on /m/), back-patch siblings on other branches, first_releases (per branch the change landed on: sha, release such as 14.23, first_version incl. betas, shipped=false when reverted before that release; null release = not yet released), reverted_by and reverts, fil
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commit | string | yes | SHA or prefix (7+ hex), or any version form (REL_17_0, master~2), or a commit URL (gitweb, git.postgresql.org, GitHub, pg.ddx.io) |
| context | number | no | Diff context lines (0-1000, default 3) |
| diff | boolean | no | Include the diff (default true) |
| paths | array | no | Only diff files under these paths |
| repository | string | no | Repository; only postgres is in the code-history index for now (the default). |
Search postgres commits (code-history index), newest first, like git log: range (a rev, or A..B; default the newest release branch), message (regex, case-insensitive), author (regex over author, committer and Author/Co-authored-by/Reviewed-by trailers), paths, since/until (YYYY-MM-DD), changed_lines (a regex an added or removed line matches, as git log -G) and occurrences (a string whose count in
| Parameter | Type | Required | Notes |
|---|---|---|---|
| author | string | no | Regex over author, committer and credit trailers |
| budget_ms | number | no | Time budget (100-15000, default 10000) |
| changed_lines | string | no | Regex an added or removed line matches (git log -G) |
| limit | number | no | Commits (1-200, default 30) |
| message | string | no | Regex over the commit message |
| occurrences | string | no | String whose number of occurrences changed (git log -S) |
| offset | number | no | Commits to skip |
| paths | array | no | Path prefixes the commit touched |
| range | string | no | A rev (its line back to the root) or A..B; default the newest release branch |
| repository | string | no | Repository; only postgres is in the code-history index for now (the default). |
| since | string | no | YYYY-MM-DD (committed on or after) |
| until | string | no | YYYY-MM-DD (committed before) |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install pg.ddx.io: the PostgreSQL community's memory or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| retrieve_context | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| animal_history | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| animal_owner_contributions | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| blame_symbol | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| browse_by_date | untrusted-input | untrusted-input: keyword "browse", declares openWorldHint: true (interacts with entities outside the server) |
| build_status_freshness | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| buildfarm_overview | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| check_upstream_status | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| code_index_status | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| codebase_map | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| commit_buildfarm_status | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| commit_history | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| commitfest_stats | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| contribution_summary | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| detect_changes | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| discussion_links | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| embedding_status | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| entry_branches | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| entry_history | untrusted-input | untrusted-input: keyword "read_message", declares openWorldHint: true (interacts with entities outside the server) |
| find_breaks | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_contributions | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_dead_code | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_entries_for_author | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_entries_for_thread | untrusted-input | untrusted-input: keyword "scrape", declares openWorldHint: true (interacts with entities outside the server) |
| find_entries_with_failures_on | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_failing_patches | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_failing_runs | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_passing_long_pending | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_patches_by_platform_status | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_pattern | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_rebase_needed_patches | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_related_discussions | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_similar_messages | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_animal | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_attachment | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_author_messages | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_callees | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_callers | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_commitfest | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_communities | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_community | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_contributor | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_contributor_history | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_dependents | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_doc_page | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_entry | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_execution_flows | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_impact | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_inbox_info | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_inbox_stats | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_inbox_summary | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_message | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_message_headers | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_message_references | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_new_messages | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_patch_branches | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_patch_build_history | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_patch_series | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_raw_message | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_repo_sync_stats | untrusted-input | untrusted-input: keyword "fetch", declares openWorldHint: true (interacts with entities outside the server) |
| get_repository_summary | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_signature | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_source_info | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_symbol | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_tests_for | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_thread | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_thread_references | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_wiki_history | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_wiki_page | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_analyze_activity | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_analyze_authors | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_analyze_bus_factor | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_analyze_churn | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_analyze_coupling | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_analyze_hotspots | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_blame | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_diff | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_log | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_search | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| git_show_file | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| history-of | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| hybrid_search | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| hybrid_search_code | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_animals | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_branches | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_commitfests | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_contributors | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_discord_channels | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_doc_versions | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_entries | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_inboxes | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_projects | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_recent | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_repositories | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_sources | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_threads | untrusted-input | untrusted-input: keyword "browse", declares openWorldHint: true (interacts with entities outside the server) |
| recent_commitfest_activity | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search_commitfest | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| release_contributors | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| repository_stats | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search-regex | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search_all_sources | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search_discord_topics | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search_docs | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search_patches | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search_symbols | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search_wiki | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| semantic_search | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| semantic_search_code | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| symbols_in_file | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| regex_search_code | no tags | |
| grep_repository | no tags | |
| find_string_literals | no tags | |
| upcoming_events | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| calendar_feeds | no tags | |
| combine_calendars | state-write | state-write: declares readOnlyHint: false |
| cross_reference | no tags | |
| whats_new | no tags | |
| code_search | no tags | |
| read_file | sensitive-source | sensitive-source: keyword "read_file" |
| list_files | sensitive-source | sensitive-source: keyword "list_files" |
| blame | no tags | |
| get_commit | no tags | |
| search_commits | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 2026.10.22.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish pg.ddx.io: the PostgreSQL community's memory can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.