Skip to main content
Glama
orjahren

Nettskjema MCP Server

by orjahren

get_submission_metadata

Read-only

Stream submission metadata for a Nettskjema form as newline-delimited JSON without answers to bulk export submission-level fields or identify submissions before fetching their answers.

Instructions

Stream all submission metadata for a form, as newline-delimited JSON.

Returns metadata without answers: use this for bulk export of submission-level fields or to find which submissions exist before fetching their answers. This streams NDJSON (one JSON object per line), so a large form's metadata is never held whole in memory. The result is capped at max_rows to bound context size: check the returned truncated field to see if more data exists.

Distinct from get_postponed_submission_metadata, which returns postponed submission metadata only. The relationship between the two result sets (whether this endpoint includes or excludes postponed submissions) is not specified by the API documentation.

Input Schema

NameRequiredDescriptionDefault
form_idYesThe form's numeric ID.
max_rowsNoMaximum number of rows to return. Defaults to this MCP server's configured limit (1000). When the cap is reached, truncated is set to true and reason is "rowCap". The caller may raise this limit arbitrarily by passing a larger value.
optimize_for_large_dataNoRequest optimization for large datasets.
submission_ids_greater_thanNoOnly include submissions with IDs above this value.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already covering the safety profile, the description adds real behavior: NDJSON streaming so a large form is never held whole in memory, a max_rows cap, and the truncated flag to detect truncation. It also candidly discloses that the API docs do not specify the include/exclude relationship with postponed submissions — useful for an agent reasoning about overlap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and streaming behavior are front-loaded, then usage guidance, then the sibling distinction. Mostly tight, though the closing paragraph on the unspecified postponed relationship is slightly verbose for what it conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be documented, and the description covers streaming, capping, truncation, and sibling boundaries. It would be fully complete if it linked the truncated stream to continued pagination via submission_ids_greater_than, since that is the natural next step for a bulk exporter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description goes beyond it by explaining the semantics of the max_rows cap and the resulting truncated field behavior. It does not, however, explain how submission_ids_greater_than can be used to continue past a truncated stream, leaving that to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Stream all submission metadata for a form, as newline-delimited JSON') and explicitly scopes it to metadata-without-answers. It also names the sibling it differs from (get_postponed_submission_metadata), so an agent can separate the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear positive contexts ('bulk export of submission-level fields', 'find which submissions exist before fetching their answers') and routes the postponed-metadata case to a named sibling. It stops short of stating exclusions against answer-fetching siblings like get_form_answers, but the 'without answers' framing implies the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.