Skip to main content

DIAL Deep Research application properties

This reference covers per-instance applicationProperties in Deep Research 0.4.0 for platform engineers familiar with Core registration. Properties control sources, prompts, research limits, and reports. Deployment settings remain in the backend environment.

The backend validates properties on every request against ApplicationProperties. The same model supplies the live schema endpoint. A complete deployment-mode example is in Configure an application instance.

Research and report settings​

PropertyDefaultDescription
max_research_iterations5Positive integer. Maximum retrieval iterations before the graph proceeds to the report.
max_research_graph_steps500Positive integer. LangGraph super-step limit per graph execution. Exhaustion fails the turn; this is not the research-depth control.
default_report_structureFour sections belowNon-empty ordered list of report sections. Names must be unique, with at least one protected section.
max_report_words2750Positive integer. Report word ceiling, excluding inline citations and the app-built References section. Reviews request rewrites within the version budget, rather than truncating text.
max_report_versions3Positive integer. Maximum drafts, including the first. The last allowed version is delivered without another review. 1 delivers the first draft unreviewed.
references_section_nameReferencesNon-empty heading for the section appended by the application.
references_section_empty_textText belowNon-empty text used when the report cites no source.
max_pill_title_charsnullOptional integer, at least 10. Shortens citation labels, including an ellipsis; the citation card retains the full name. null leaves labels whole.
data_query_card_filter_max_line_chars80Integer, at least 10. Maximum length of each filter line on a data-query citation card, including its ellipsis.
mcp_servers—Required non-empty list of MCP connection objects; see MCP servers.
prompts—Required object containing client and agent names, plus optional client rules; see Prompts and client rules.

Defaults and semantics are defined in the root model. The default empty-reference text is:

This report cites no source: the research found no citable evidence.

Report section objects​

Each default_report_structure entry contains:

PropertyDefaultDescription
name—Required non-empty report heading.
description—Required non-empty content and formatting instructions, shared by the writer and reviewer.
protectedfalseThe prompt requires this section and its description to survive user instructions to remove or restyle it.

The default structure is:

SectionProtectedContent instructions
OverviewtrueResearch question, sources and approach, and a brief direct answer
Key FindingsfalseMain findings, leading with the direct answer when supported
Detailed AnalysisfalseEvidence, comparisons, disagreements, and findings resting on one source
ConclusionfalseWhat the findings answer and leave unanswered, without new facts

The full default instructions are in DEFAULT_REPORT_STRUCTURE. Report sections reject unknown fields. At least one must be protected, and no section may claim the appended References heading, compared after trimming and case folding. See structure validation.

MCP servers​

Server names must be unique. Only generic_rag and statgpt are accepted, with at most one of each type. These constraints prevent citations from resolving an ID against the wrong server. Sources: supported types and server validation.

Common server fields​

PropertyDefaultDescription
server_name—Required non-empty internal connection name, also used in logs. Need not match the remote server name.
server_type—Required generic_rag for documents or statgpt for datasets.
deployment_idnullDIAL Core deployment ID of the MCP application. Mutually exclusive with connection.
connectionnullDirect-mode $env:{VAR} reference to a JSON URL/key bundle. Mutually exclusive with deployment_id.
tools_to_include[]Tool names offered to the research agent. An empty list includes all tools.
descriptionnullSource description shown to the models. Required for Generic RAG unless document_stats is set. A supplied description must not be blank.
references_table—Required table title and columns for this server's cited sources; see Reference tables.

These fields are declared in MCPClientSettings and the reference-table field. tools_to_include filters agent tools; it does not prevent the application's own metadata, statistics, glossary, or citation calls.

Connection modes​

Exactly one connection mode is required:

ModeConfigurationRequest behavior
Through DIAL Core"deployment_id": "<MCP_APPLICATION_ID>"Streamable HTTP at <DIAL_URL>/v1/deployments/<MCP_APPLICATION_ID>/mcp, using the forwarded request key and bearer token when present
Direct"connection": "$env:{RESEARCH_MCP_CONNECTION}"Streamable HTTP at the bundle's URL, using the bundle's key in the api-key header

In direct mode, the backend's environment variable contains:

{
"url": "https://<MCP_HOST>/mcp",
"api_key": "<MCP_API_KEY>"
}

The property must contain only the $env:{VAR} reference. Inline JSON and $env:{VAR|default} are rejected; unset variables and malformed bundles fail validation. The bundle allows only url and api_key; the URL must be HTTP(S) and the key non-empty. See placeholder and bundle validation, exclusive mode validation, and client construction.

Generic RAG fields​

These fields belong only to a generic_rag server:

PropertyDefaultDescription
file_sharing_toolnullRequired tool name, such as get_citation_url, that copies a cited document into the reader's DIAL storage and returns its URL.
document_metadata_resourcenullRequired resource URI template, such as documents://metadata/{document_ids}. Must contain {document_ids} exactly once.
document_title_keynullRequired metadata key containing the publication title, such as publication_title. Set together with the metadata resource.
document_statsnullOptional document statistics configuration, described below. Either this object, description, or both must be supplied.

The source declares these document citation fields, statistics field, and document description constraint.

The file-sharing tool is invoked by the application and is never offered to the research agent. A document lacking a usable title retains an ID/page label. See Generic RAG MCP for the tools and metadata resource.

document_stats contains:

PropertyDefaultDescription
list_documents_tool—Required non-empty tool name. Called with offset and limit; expected result fields are total_count and results.
document_date_key—Required non-empty metadata key for publication dates. Non-ISO dates are ignored.
document_type_keynullOptional non-empty metadata key for per-type statistics. Non-string values belong to no type.
page_size1000Positive integer number of documents requested per call.

Statistics are fetched at the start of every turn, for at most ten sequential pages. A listing failure or incomplete collection at that cap produces an unavailable-statistics notice to the models. It does not supply partial statistics. Source: DocumentStats and page cap and fetch behavior.

StatGPT fields​

These fields belong only to a statgpt server:

PropertyDefaultDescription
list_datasets_toolnullRequired tool name. Called without arguments for the complete catalogue, including dataset names and page addresses.
client_meta_keynullRequired exact key under MCP result _meta, such as example.org/client. Must match the dataset server's channel namespace.
dataset_structure_toolnullOptional tool called with {"dataset_id": "<ID>"} for every listed dataset at the start of each turn.
glossarynullOptional glossary tool and reference-table configuration, described below.

The dataset server must enable the client payload on both its data-query and dataset-list tools with the same namespace. The payload supplies data-explorer links for query and dataset citations. Source: dataset and glossary fields and client metadata.

Dataset structures join the catalogue in model context on every turn. The source describes this mode as intended for a channel with about ten datasets. Omitting dataset_structure_tool retains the catalogue without fetching every structure.

glossary contains:

PropertyDefaultDescription
list_terms_tool—Required non-empty tool name, called without arguments.
definitions_tool—Required non-empty tool name, called with {"terms": ["<TERM>"]}. Must differ from list_terms_tool.
max_terms_per_definitions_call—Required positive integer. Must match the remote tool's allowed batch size.
references_table—Required reference table for cited glossary terms.

The application fetches configured glossary data at each turn's start, supplies terminology instructions, and lists cited terms in References. These automatic calls do not require the tools in tools_to_include. Source: GlossaryTools and glossary behavior.

Reference tables​

Every server, and every configured glossary, must define a references_table object:

PropertyDefaultDescription
title—Required non-empty table subheading.
columns—Required non-empty ordered list of column objects.
columns[].heading—Required non-empty column heading displayed to the reader.
columns[].key—Required non-empty field name read from a source metadata or glossary record.

The first column identifies the source. Missing values in that column fall back to the source ID or cited glossary term; other missing values leave empty cells. Dataset tables precede document tables, followed by cited glossary terms. Sources: table models, table order, and glossary table placement.

Prompts and client rules​

PropertyDefaultDescription
prompts.client_name—Required non-empty name of the organization using the application.
prompts.agent_name—Required non-empty name used by the agent to introduce itself.
prompts.client_rules[]Per-channel quality rules with unique names. Each step receives its corresponding instructions after the generic rules.

The prompts object rejects unknown fields. Source descriptions belong on each MCP server, not in prompts. Source: Prompts.

Each client_rules entry contains:

PropertyDefaultDescription
name—Required non-blank, single-line rule name.
research_agentnullRetrieval instructions: search, list, query, or read. The research agent does not write the report.
research_reviewnullWhat counts as an evidence gap; requested next steps must be retrievals.
report_writernullInstructions for writing the report.
report_review_blindnullChecks decidable from the draft, question, plan, and source descriptions without research findings. Content exclusions belong here.
report_review_groundednullChecks comparing the draft with research findings. Mutually exclusive with report_review_blind within a rule.

A rule must contain at least one instruction; supplied instructions must not be blank. Unknown rule fields are rejected. Source: QualityRule.

Example prompts object:

{
"client_name": "Example organization",
"agent_name": "Example Deep Research",
"client_rules": [
{
"name": "Publication dates",
"research_agent": "Retrieve publication_date metadata for the documents used as evidence.",
"report_writer": "Identify the publication date when comparing findings from different reports.",
"report_review_grounded": "Check that each stated publication date matches the retrieved metadata."
}
]
}

Further reading​