Skip to content

MCP Tools ​

The MCP server provides the tools below. Your assistant chooses which ones to call. For a typical question it starts with list_teams, loads the BNQL reference, drafts and validates a query, then runs it. Every tool call is scoped to the signed-in user, so results only come from teams you belong to. See the introduction for how to connect and how access is authorised.

list_teams ​

List the teams the signed-in user belongs to, with your role and each team's plan. Call this first: every other Buildnote tool takes a team argument that must be one of the team ids returned here.

get_bnql_spec ​

Fetch the BNQL (Buildnote Query Language) reference: the full clause order, functions, operators, and the exact tables and fields you may query. BNQL is the ONLY way to read a team's collected data. Do not write BNQL from memory, because its rules and field names are non-obvious and easy to get wrong. Call this once before drafting a query and follow it exactly. Returns reference text only and queries nothing.

The same reference is also published in these docs as the BNQL reference.

validate_query ​

Validate a BNQL query without running it: checks the syntax and that every table and field resolves against the schema. Returns VALID or INVALID with the reason. Validate a drafted query before running it with query_data.

ArgumentRequiredDescription
queryyesThe BNQL query to validate

query_data ​

Run a BNQL query against the team's collected CI/CD events (tests, builds, pipelines, commits, files, metrics) and return the matching rows as JSONL, one JSON object per line. Include SINCE and UNTIL bounds to keep results relevant. Results are truncated after 2000 rows, so aggregate or LIMIT for less noise.

ArgumentRequiredDescription
teamyesTeam id, one of the ids returned by list_teams
queryyesA BNQL query, e.g. SELECT status, COUNT() AS total FROM tests GROUP BY status

Requires a plan with API access, and a team admin must turn on the team's MCP setting. See the BNQL reference for query syntax.

get_build_file ​

Fetch the content of a file collected during a build (logs, reports, coverage, screenshots, etc.). Find files first with a query_data query on the files table selecting org, project, module, build, name and path, then pass those exact values and never guess them. Text files are returned as text (truncated after 50000 characters); images and other binary files are returned base64-encoded, up to 4 MiB.

ArgumentRequiredDescription
teamyesTeam id, one of the ids returned by list_teams
orgyesOrganisation id from a builds or files query row
projectyesProject id from a builds or files query row
moduleyesModule id from a builds or files query row
buildyesBuild id from a builds or files query row
pathyesFile name or path from a files query row

Requires a plan with API access, and a team admin must turn on the team's MCP setting.

Example Prompts ​

Once you're connected, ask questions in plain language and the assistant works out the queries:

Which of our test suites had the highest failure rate this week?
Show me the ten slowest builds in the payments project this month.
Find the build log from the latest failed build and summarise what went wrong.

The assistant answers with data from your events. From there, you can ask it to refine the answer, compare periods or dig into a specific build.

Buildnote Limited
Registered in England and Wales, Reg: 16140412