OverviewMCP Gateway Reference

MCP Gateway Reference

Full developer reference for the referenzen.com MCP gateway — endpoint, authentication, scopes, and every available tool, resource, and prompt with parameters.

The MCP gateway exposes your company's reference data to AI assistants and agent frameworks via the Model Context Protocol (MCP) — an open JSON-RPC 2.0 standard supported by Claude, ChatGPT, Microsoft Copilot Studio, Cursor, n8n, LangChain, and most agent SDKs. This page is the complete technical reference: every callable tool with its parameters, all readable resources, the built-in prompts, and the error model.

For token management, scope administration, and usage monitoring in the app, see AI Access (MCP Gateway).

The gateway is read-only and strictly company-scoped: a token only ever returns data belonging to the company that issued it, and only references that are published on the API channel. The tenant filter is enforced server-side and cannot be influenced by the connected AI.

Endpoint & transport

Endpointhttps://referenzen.com/mcp/v1
TransportMCP Streamable HTTP — JSON-RPC 2.0 over POST
Protocol version2024-11-05
Content typeapplication/json (single request object or a JSON-RPC batch array)
SessionThe response carries an Mcp-Session-Id header; echo it on subsequent requests. DELETE on the endpoint tears the session down.

A server-initiated SSE channel (GET on the endpoint) is not yet available and currently responds with 501.

Authentication

Every request must present an MCP token, created by a Company Admin in the app under AI / MCP Gateway:

header
Authorizationstring
Required

Bearer dby_mcp_... — the recommended way to pass your token.

query
apiKeystring

Alternative to the Authorization header for clients that can only set query parameters.

Requests without a valid token receive 401 with JSON-RPC error -32001 / -32002. Expired and revoked tokens are rejected the same way.

Scopes

Each token carries a set of scopes chosen at creation time. Tools are both hidden from tools/list and blocked on tools/call when their scope is missing (error -32003).

ScopeGranted by defaultUnlocks
read✅get_reference, list_references, list_branches, list_referencegroups, get_company_profile
search✅search_references, match_references
media✅get_reference_media_urls, the media:// resource
client_details—list_clients (client names on references)
analytics—get_statistics (view counts and trends)
internal_fields—internalproperties (company-internal field data) in get_reference

Rate limits

60 requests per minute per token. Exceeding the limit returns 429 with a Retry-After: 60 header and JSON-RPC error -32005.

JSON-RPC methods

MethodPurpose
initializeHandshake; returns protocol version, capabilities, and server info
pingLiveness check
tools/listList available tools (filtered by your token's scopes)
tools/callCall a tool by name with arguments
resources/listList concrete resources
resources/templates/listList resource URI templates
resources/readRead a resource by URI
prompts/listList built-in prompt templates
prompts/getGet a prompt with arguments substituted
logging/setLevelSet the session log level

Batch requests (a JSON array of request objects) are supported. Requests without an id are treated as notifications and answered with 204 No Content.

Example request

curl -X POST https://referenzen.com/mcp/v1 \
  -H "Authorization: Bearer dby_mcp_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "search_references",
      "arguments": { "query": "bridge", "limit": 5, "lang": "en" }
    }
  }'

Tool results always come in two parallel representations:

  • content — an array of MCP content blocks: a human-readable Markdown text block plus resource_link blocks pointing to canonical references://<id> URIs (used by chat clients for display and citation).
  • structuredContent — a machine-readable JSON object (used by code-driven agents). The field tables below describe structuredContent.

Tools

All tools accept an optional lang parameter — de, en, fr, es, it, pl, ro, nl, el or hu, default de — which controls the language of returned titles, descriptions, branch names and formatted values.

lang does more than translate labels: a reference is only returned if it is published in that language. The same search can therefore return different result counts per language — exactly as it does in the app when you switch the interface language. If a search looks incomplete, retry it with lang: "de".

For anything beyond a keyword search, work through the chain list_branches → list_search_filters → search_references. The second step tells you which work fields, methods and industry-specific properties your company can filter by — see Filter discovery.

search_references

Full-text search across your reference projects, backed by the platform search engine. Requires the search scope.

body
querystring

Free-text query in German or English; supports quoted phrases. Searches project titles, descriptions and your branch-specific text fields (for example a Marketingtext).

body
branch_IDinteger

Restrict results to one industry branch (including its sub-branches). Use list_branches to discover IDs.

body
referencegroup_IDinteger

Restrict results to one of your reference groups. Use list_referencegroups to discover IDs.

body
countrystring

Project country — an ISO 3166-1 alpha-2 code (DE, CH, AT) or the country name in German or English.

body
regionstring

Project region or federal state — the name in German or English, a region code, or a numeric region ID.

body
citystring

Exact city name of the project location.

body
year_frominteger

Only projects still running in or after this year (1900–2100). Ongoing projects — those without an end date — are included, since they are still running.

body
year_tointeger

Only projects started in or before this year (1900–2100). Combined with year_from this selects every project whose period overlaps the years in between — including projects that started earlier and ran into the period, and projects that continue past it.

body
contract_value_frominteger

Minimum contract value (Auftragswert) in EUR.

body
contract_value_tointeger

Maximum contract value in EUR, exclusive. References without a stored contract value never match a contract-value filter.

body
client_namestring

Client/customer name filter — matches your clients by company or contact name and restricts results to their references.

body
ongoingboolean

Only projects that are currently ongoing.

body
workfield_IDinteger

Work field (Aufgabenfeld) filter. IDs come from list_search_filters; requires branch_ID.

body
method_IDinteger

Method (Leistung) filter — a single ID or an array of IDs from list_search_filters; requires branch_ID.

body
filtersobject

Branch-specific additional-field filters. Keys are the filter_key values from list_search_filters; requires branch_ID. See Filter discovery for the value formats.

body
langstring

Content language: de (default), en, fr, es, it, pl, ro, nl, el or hu. Also selects which references match — see the note above.

body
pageinteger

Page number, starting at 1 (default 1).

body
limitinteger

Results per page (default 10, maximum 50).

body
orderbystring

Sort order: relevance (default), datefrom desc, datefrom, or projecttitle.

Response (structuredContent):

totalinteger
Required

Total number of matching references.

pageinteger
Required

The returned page.

limitinteger
Required

Page size used.

resultsarray
Required

Result items with reference_ID, uri (the references://<id> resource URI), title, city, country, and year.

list_search_filters

Discovers which filters search_references accepts for your company. Requires the search scope.

Global filters (location, period, contract value, …) work in every search. The branch-specific ones — work fields, methods and your industry's additional fields — depend on what your company has configured, so an AI client cannot guess them. This tool returns exactly the ones you can use, including the valid option IDs.

body
branch_IDinteger

Branch whose branch-specific filters to return (from list_branches). Omit to get only the global filters.

body
langstring

Label language: de (default), en, fr, es, it, pl, ro, nl, el or hu.

Response (structuredContent):

global_filtersarray
Required

Filters usable in every search_references call, each with name, type and a description.

workfieldsarray

Work fields of the branch: workfield_ID, title, refcount.

methodsarray

Methods of the branch: method_ID, title, refcount. Methods with the same name share one entry, so method_ID may be a comma-separated list.

fieldsarray

Branch-specific additional fields: field_ID, filter_key (what you pass in filters), title, kind, plus options (option_ID, label, refcount) for option-based fields and filter_key_b for option pairs.

Only what your company actually uses is returned. Fields, methods and options hidden in Branch settings never appear — and are rejected if a client tries to filter on them anyway. Options are limited to those used by at least one of your references, so a filter never leads into a guaranteed-empty result.

Filter discovery

Branch-specific filtering is a three-step conversation:

Find the branch

Call list_branches (optionally with parent_ID) until you have the branch your projects sit in.

Ask which filters exist

Call list_search_filters with that branch_ID. You get the work fields, methods, fields and valid option IDs your company uses.

Search

Call search_references with branch_ID plus workfield_ID, method_ID and/or filters.

Values in the filters object depend on the field's kind:

kindValue to passExample
select, multi_selectAn option ID or an array of option IDs{"f17": [3, 8]}
option_pairOption IDs for the first list, and/or the second via filter_key_b{"f33": 5, "f33_b": 12}
rangeA "from-to" string; open ends allowed{"f21": "1000-5000"}, {"f21": "-500"}
booleantrue or false{"f40": true}
textAn object with contains{"f17": {"contains": "Neubau"}}
{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "search_references",
    "arguments": {
      "branch_ID": 828,
      "country": "DE",
      "contract_value_from": 250000,
      "method_ID": 55,
      "filters": { "f21": "1000-", "f40": true }
    }
  }
}

workfield_ID, method_ID and filters always need a single branch_ID — branch-specific fields only exist within one branch. Without it, the call returns an invalid-parameters error pointing you at list_search_filters.

get_reference

Full detail of a single reference project. Requires the read scope. The reference must belong to your company and be published on the API channel; otherwise the call fails.

body
reference_IDinteger
Required

The reference project ID (from a search/list result or a references:// URI).

body
langstring

Content language: de (default), en, fr, es, it, pl, ro, nl, el or hu. Also selects which references match — see the note above.

Response (structuredContent) — fields are present when the reference has content for them:

reference_IDinteger
Required

The reference project ID.

projecttitlestring
Required

Project title in the requested language.

subtitlestring

Subtitle.

descriptionstring

Full project description.

datestring

Formatted project period (e.g. 03/2022 – 06/2023); the raw values are in yearfrom, yearuntil.

citystring

Project city. Related location fields: location, country, region, and the combined displayedlocation.

branchesarray

Industry branches: objects with branch_ID and branchname.

referencegroupsarray

Your reference groups this project is assigned to: referencegroup_ID, groupname.

clientsarray

Clients: client_ID, displaytype, and displayedname when the client may be named publicly.

servicesarray

Delivered services grouped by work field: objects with workfieldname and a services array (service_ID, servicename).

usedproductsarray

Products used in the project: product_ID, productname.

propertiesarray

Branch-specific project properties grouped by section: section_ID, sectiontitle, and fields — each field has field_ID, title, and either a single value (with unit where applicable) or a values array for multi-option fields.

internalpropertiesarray

Company-defined internal fields, same shape as properties fields. Only included when the token has the internal_fields scope.

galleryimagesarray

Gallery images: title, file (full-size URL), thumb (thumbnail URL). Additional media arrays follow the same pattern: videos (title, medialink), widestageimages, portraitstageimages, and documents (title, mediatype, file).

isconfirmedboolean

Present and true when the client has confirmed the reference; the quotes are in countersignstatements (statement, displayedname).

awardsarray

Awards won: award_ID, awardname, optional year.

partnersarray

Project partners: partner_ID, companyname, partnerrole.

Each get_reference call is counted as an API-channel view in your reference statistics.

list_references

Plain paginated listing without full-text search — useful for browsing by branch, reference group, or period. Requires the read scope.

body
branch_IDinteger

Filter by industry branch.

body
referencegroup_IDinteger

Filter by reference group.

body
countrystring

Project country — an ISO 3166-1 alpha-2 code (DE, CH, AT) or the country name in German or English.

body
regionstring

Project region or federal state — the name in German or English, a region code, or a numeric region ID.

body
ongoingboolean

Only currently ongoing projects.

body
year_frominteger

Only projects whose active period overlaps this year or later (a project counts as active from its start year to its end year).

body
year_tointeger

Only projects whose active period overlaps this year or earlier.

body
langstring

Content language: de (default), en, fr, es, it, pl, ro, nl, el or hu. Also selects which references match — see the note above.

body
pageinteger

Page number, starting at 1 (default 1).

body
limitinteger

Results per page (default 10, maximum 50).

body
orderbystring

Sort order: datefrom desc (default), datefrom, projecttitle, or sortorder (your manual ordering).

Response (structuredContent): total, page, limit, and results — items carry reference_ID, uri, title, city, country, yearfrom/monthfrom, yearuntil/monthuntil, plus detail_url (the public reference page) and thumb_url (preview image) where available.

list_branches

The industry/branch tree, one level at a time. Requires the read scope.

body
parent_IDinteger

Branch ID whose children to return. Omit for the top-level branches.

body
langstring

Content language: de (default), en, fr, es, it, pl, ro, nl, el or hu. Also selects which references match — see the note above.

Response (structuredContent):

branchesarray
Required

Branch nodes in tree order: branch_ID, name, parent_ID.

list_referencegroups

Your company's own reference groups (custom categories). Requires the read scope.

body
langstring

Content language: de (default), en, fr, es, it, pl, ro, nl, el or hu. Also selects which references match — see the note above.

Response (structuredContent):

referencegroupsarray
Required

Groups with referencegroup_ID, name, parent_ID.

get_company_profile

Your own company profile — useful context for the connected assistant. Requires the read scope.

body
langstring

Content language: de (default), en, fr, es, it, pl, ro, nl, el or hu. Also selects which references match — see the note above.

Response (structuredContent):

company_IDinteger
Required

Your company ID.

namestring
Required

Company name.

descriptionstring

Company teaser/description text.

citystring

Company location.

websitestring

Company website URL.

uniquenamestring

The company's URL slug on the platform (also usable in the companies:// resource).

list_clients

Distinct clients/customers from your reference projects. Requires the read and client_details scopes.

body
langstring

Content language: de (default), en, fr, es, it, pl, ro, nl, el or hu. Also selects which references match — see the note above.

body
pageinteger

Page number, starting at 1 (default 1).

body
limitinteger

Results per page (default 50, maximum 100).

Response (structuredContent):

clientsarray
Required

Clients on the requested page with client_ID, clientname, city, country.

totalinteger
Required

Total number of clients across all pages.

pageinteger
Required

The returned page.

limitinteger
Required

Page size used.

get_reference_media_urls

Direct URLs for all media files of a reference project. Requires the media scope.

body
reference_IDinteger
Required

The reference project ID.

Response (structuredContent):

reference_IDinteger
Required

Echo of the requested ID.

mediaarray
Required

Media entries with file_ID, filename, mediatype, and url. Media type codes: 1 gallery image, 2 video, 4/5/9 documents, 7 wide stage image, 8 portrait stage image.

The gateway returns URLs, never binary data — your client or agent fetches the files directly over HTTPS.

get_statistics

View-count statistics for your references. Requires the analytics scope.

body
typestring
Required

What to retrieve: total, by_branch, by_referencegroup, top_references, or trend.

body
datefromstring

Start date YYYY-MM-DD (default: 30 days ago).

body
datetostring

End date YYYY-MM-DD (default: today).

body
top_kinteger

For top_references: how many top references to return (default 10, maximum 50).

body
langstring

Content language: de (default), en, fr, es, it, pl, ro, nl, el or hu. Also selects which references match — see the note above.

Response (structuredContent) depends on type:

  • total — total view count for the period.
  • by_branch / by_referencegroup — views grouped by branch or reference group.
  • top_references — top_references array with reference_ID, title, viewcount.
  • trend — current_period and previous_period objects (from, to, views) plus the absolute change.

match_references

The RFP-matching tool: given a tender text, project brief, or topic description, it returns your best-matching references ranked by relevance. Long inputs are reduced server-side by key-phrase extraction — no pre-summarising needed. Requires the search scope.

body
textstring
Required

The RFP / brief / topic text to match against. Maximum size: 200 KB.

body
top_kinteger

Number of top matches to return (default 5, maximum 20).

body
branch_IDinteger

Optional branch filter.

body
countrystring

Optional country filter — ISO 3166-1 alpha-2 code or the country name in German or English.

body
regionstring

Optional region filter — name in German or English, a region code, or a numeric region ID.

body
year_frominteger

Only projects still running in or after this year.

body
year_tointeger

Only projects started in or before this year.

body
contract_value_frominteger

Minimum contract value (Auftragswert) in EUR.

body
contract_value_tointeger

Maximum contract value in EUR, exclusive.

body
langstring

Content language: de (default), en, fr, es, it, pl, ro, nl, el or hu. Also selects which references match — see the note above.

Response (structuredContent):

totalinteger
Required

Number of matches returned.

resultsarray
Required

Ranked matches — same shape as search_references results plus a relevance score per item.

query_termsstring
Required

The key terms extracted from your text and used for matching — useful to explain why a project matched.

For privacy, the submitted text is never stored in the gateway's call log — only its length.

Resources

Resources are read-only documents addressable by stable URIs, retrieved with resources/read. AI clients can cite these URIs and re-fetch them later. Concrete resources (from resources/list):

URIReturns
companies://meYour own company profile
branches://treeTop-level industry branches
referencegroups://treeYour reference groups

URI templates (from resources/templates/list):

URI templateReturns
references://{reference_ID}Full reference detail (same shape as get_reference)
references://by-seo/{company_uniquename}/{seo_label}Reference looked up by its public URL slug
references://list{?branch_ID,page,limit}Paginated reference list (mirrors list_references)
branches://tree{?parent_ID}Children of a branch node
branches://{branch_ID}Single branch detail
companies://{uniquename}Public profile of any company (name, city, country, website only)
media://{file_ID}URL and metadata for a media file (requires the media scope)

All resources return mimeType: application/json with the payload serialized in the text field of the contents entry.

Prompts

Built-in prompt templates, discoverable via prompts/list and fetched with prompts/get. They return ready-to-run message sequences that instruct the connected assistant which tools to call.

PromptPurposeArguments
summarize_referenceSummarise a reference in 5 bullets for a sales pitchreference_ID (required), lang
compare_referencesCompare several references side by side in a tablereference_IDs (required, comma-separated), lang
match_rfpFind the best portfolio matches for an RFP / brieftext (required), top_k
case_study_draftDraft a case study from a referencereference_ID (required), tone (formal/conversational/technical), lang, length (short/medium/long)
branch_overviewSummarise your activity in one industry branchbranch_ID (required), lang

Errors

Errors follow JSON-RPC 2.0 with MCP-specific codes:

CodeHTTPMeaning
-32700400Invalid JSON body
-32600200Invalid JSON-RPC request envelope
-32601200Unknown method
-32602200Invalid tool/prompt parameters
-32603200Internal server error
-32001401Authentication required (no token)
-32002401Token invalid, expired, or revoked
-32003200Token lacks the required scope
-32004200Reference not accessible for your company
-32005429Rate limit exceeded (60 requests/minute)
-32010200Tool execution error

Client configuration

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "references": {
      "type": "http",
      "url": "https://referenzen.com/mcp/v1",
      "headers": {
        "Authorization": "Bearer dby_mcp_YOUR_TOKEN"
      }
    }
  }
}

The token management page in the app shows these snippets pre-filled with your actual token at creation time — see AI Access (MCP Gateway).