Skip to main content
Glama

call_cq

Read-only

Amplification curves to Cq, one row per reaction. Fits each raw fluorescence curve to a sigmoid (l4-l7, b4-b7), reads the Cq off it under any of the seven definitions (cpD1, cpD2, maxE, expR, Cy0, CQ, maxRatio) or at a fluorescence threshold you set (the classic Ct), and returns the per-reaction efficiency and the fit-quality block beside it, so a bad fit is visible next to the Cq it produced rather than hidden behind it. Also reports the two exponential-phase locators (Tichopad take-off, model midpoint), which come back null rather than 0 when a curve has no exponential phase at all.

Input Schema

NameRequiredDescriptionDefault
modelNowhich sigmoid is fitted before a Cq is read off it. Ignored when `auto_model` is on, except as the starting point mselect ranks from. Values: l4 (l4 · 4-param log-logistic), l5 (l5 · + asymmetry), l6 (l6 · + linear baseline drift), l7 (l7 · + quadratic baseline), b4 (b4 · 4-param logistic (raw scale)), b5 (b5 · + asymmetry), b6 (b6 · + linear baseline drift), b7 (b7 · + quadratic baseline).l4
shiftNocycles added to every reported Cq, for aligning against an instrument's own numbering. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
curvesYesthe amplification table: a header row, first column the cycle number and every other column one reaction's fluorescence. Tab- or comma-separated, and read by the same parser the Curve->Cq tab uses.
amountsNothe known template amount of each reaction, in column order (comma- or space-separated, `-` for a reaction with none). Each reaction given one reports its calibration factor `cf`, the amount over `init1`, the fit's fluorescence at cycle 0, which is what an absolute quantification scales an unknown's `init1` by. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
cq_methodNowhich Cq definition. These are genuinely different quantities, not one number under several names. Values: cpD2 (cpD2 · second-derivative max), cpD1 (cpD1 · first-derivative max), maxE (maxE · cycle of maximum efficiency), expR (expR · exponential region), Cy0 (Cy0 · tangent x-intercept (Guescini)), CQ (CQ · 20 % of the Cq fluorescence), maxRatio (maxRatio · spline, model-free (Shain)).cpD2
criterionNohow auto_model ranks. The nested tests are only meaningful inside one family (l4-l7 or b4-b7); AICc weights is the one that can rank all eight. The reduced chi-square needs a measurement error per cycle and the only honest source is the plate's own replicates, so it REFUSES a plate with none. Values: ftest (Nested F-test (within family)), ratio (Likelihood ratio (within family)), weights (AICc weights (all eight models)), chisq (Reduced chi-square (needs replicates)). Only applies when auto_model is true.ftest
thresholdNoa fluorescence threshold, on the plate's own fluorescence scale. Set, every Cq is the cycle where the fitted curve crosses it (the classic threshold cycle, Ct) and `cq_method` is overridden. Blank reads the Cq under `cq_method`. A reaction that never reaches it has no Cq and says so.
auto_modelNolet the plate choose its own model. mselect runs on the FIRST reaction and its winner is applied to every reaction, because Cqs fitted under different models are not comparable — the result reports which model won and the full ranking table.
baseline_toNolast cycle of that window. In cycle. Advanced.
baseline_fromNofirst cycle of the window the sliwin and LRE estimators scan a baseline over. Affects the all-methods table only: the sigmoidal fit and its Cq do not use a baseline scan. In cycle. Advanced.
baseline_scanNohow many SDs of offset the baseline scan searches; 0 subtracts nothing, which is upstream's own default and is WRONG on real instrument data. Measured against the real LinRegPCR over the 47 reactions of the bundled Own Mix B plate: scanning gives a median efficiency disagreement of 0.038, not scanning gives 0.460. The result reports what the other setting would have returned, so the choice is never hidden. In SD. Advanced.
outlier_methodNowhich kinetic-outlier test judges the reaction shapes. Two are univariate and three judge a curve's whole shape against a robust MCD covariance of the plate, so a plate can look clean under one and dirty under another. Values: uni1 (Efficiency Z-score (Bar)), uni2 (Shape: cpD1 − cpD2 (Tichopad)), multi1 (Multivariate: cpD1 vs cpD2 residual (Tichopad MOD1)), multi2 (Multivariate: slope, Fmax (Tichopad MOD2)), multi3 (Multivariate: slope, F at cpD1, Fmax (Sisti)). Advanced.uni2
max_ratio_smoothNosmooth the raw curve before the maxRatio spline is drawn, as qpcR's `eff(smooth = TRUE)` does. Moves only the `maxRatio` Cq. Only applies when cq_method is maxRatio. Advanced.
max_ratio_baseshiftNofluorescence added to every cycle before the maxRatio spline is drawn. qpcR's own remedy when a baseline near zero makes the cycle-to-cycle ratio explode; it moves only the `maxRatio` Cq. Only applies when cq_method is maxRatio. Advanced.

Output Schema

NameRequiredDescriptionDefault
rowsYesone row per reaction: Cq, cpD1, cpD2, efficiency, the fit-quality block, take-off and midpoint, the initial fluorescence two ways (`init1` the fit at cycle 0, `init2` the fluorescence at the Cq over E^Cq), and `cf`, the known amount over `init1` for a reaction given one (NaN otherwise)
countYeshow many reactions were fitted
modelYesthe model that produced these Cqs, named: a Cq without its model is not comparable, and under `auto_model` this is the one that WON rather than the one you asked for
failedYesreactions whose fit did not converge. A non-zero count is a finding about the plate, not a warning to swallow
methodsYesthe all-methods table: the same reactions measured four independent ways (sigmoidal fit, sliwin, expfit, LRE) with each failure NAMED, plus what sliwin returns under the other baseline setting. Agreement between them is the evidence a well is clean
cqMethodYesthe Cq definition used: `cpT` when a `threshold` was set, since a threshold overrides `cq_method`
outliersYesthe kinetic-outlier verdicts, including the reactions the test could not MEASURE — reported as not judged with the reason, never as passing
errorNoteYesa plate-level note from the fit (for example a reaction the model could not fit); null when there is none
thresholdYesthe fluorescence threshold every Cq was read at; null when the Cq came from `cq_method` instead
modelTableYesthe full model ranking when `auto_model` chose one — logLik, AIC, AICc, residual variance, F test, likelihood ratio, AICc weight and reduced chi-square per model. Null when the model was given rather than chosen
modelChosenYesthe curve model the ranking chose when the model was not given; null when it was given
outlierStatYeswhich statistic judged them, or the refusal when the plate could not support the test
zeroCrossingYesreactions whose fluorescence crosses zero after `max_ratio_baseshift` is added, where the spline estimators put a pole in the series and would return a confident 1e16. Named rather than printed
meanEfficiencyYesmean per-reaction efficiency over the reactions that fitted, as a percentage
amplificationPlotYesthe raw amplification curves as read from the plate, one line per reaction, fluorescence against cycle

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / meanEfficiency / x-unit
      Added value: +"%"
  2. Changed2 schema fields changed
    • addedOutput schema / properties / amplificationPlot
      Added value: +{
      +  "description": "the raw amplification curves as read from the plate, one line per reaction, fluorescence against cycle",
      +  "properties": {
      +    "mark": {
      +      "enum": [
      +        "line",
      +        "bar",
      +        "point"
      +      ],
      +      "type": "string"
      +    },
      +    "rules": {
      +      "items": {
      +        "properties": {
      +          "label": {
      +            "type": "string"
      +          },
      +          "y": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "y",
      +          "label"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "series": {
      +      "items": {
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "y": {
      +            "items": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "y"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "x": {
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    },
      +    "xLabel": {
      +      "type": "string"
      +    },
      +    "yLabel": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "x",
      +    "series",
      +    "xLabel",
      +    "yLabel"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "rows",
      -  "count",
      -  "failed",
      -  "meanEfficiency",
      -  "model",
      -  "cqMethod",
      -  "modelTable",
      -  "methods",
      -  "outliers",
      -  "outlierStat",
      -  "zeroCrossing",
      -  "threshold",
      -  "modelChosen",
      -  "errorNote"
      -]New value: +[
      +  "rows",
      +  "count",
      +  "failed",
      +  "meanEfficiency",
      +  "model",
      +  "cqMethod",
      +  "modelTable",
      +  "methods",
      +  "outliers",
      +  "outlierStat",
      +  "zeroCrossing",
      +  "threshold",
      +  "modelChosen",
      +  "errorNote",
      +  "amplificationPlot"
      +]
  3. Changed4 schema fields changed
    • addedOutput schema / properties / errorNote
      Added value: +{
      +  "description": "a plate-level note from the fit (for example a reaction the model could not fit); null when there is none",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / modelChosen
      Added value: +{
      +  "description": "the curve model the ranking chose when the model was not given; null when it was given",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / threshold
      Added value: +{
      +  "description": "the fluorescence threshold every Cq was read at; null when the Cq came from `cq_method` instead",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "rows",
      -  "count",
      -  "failed",
      -  "meanEfficiency",
      -  "model",
      -  "cqMethod",
      -  "modelTable",
      -  "methods",
      -  "outliers",
      -  "outlierStat",
      -  "zeroCrossing"
      -]New value: +[
      +  "rows",
      +  "count",
      +  "failed",
      +  "meanEfficiency",
      +  "model",
      +  "cqMethod",
      +  "modelTable",
      +  "methods",
      +  "outliers",
      +  "outlierStat",
      +  "zeroCrossing",
      +  "threshold",
      +  "modelChosen",
      +  "errorNote"
      +]
  4. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already mark it as a safe read, and the description goes well beyond that: it says outputs include per-reaction efficiency and a fit-quality block so bad fits stay visible, that exponential-phase locators return null rather than 0, that auto_model applies the first reaction's winner plate-wide for comparability, and that the chisq criterion refuses plates with no replicates. This is rich, decision-relevant behavior disclosure.

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?

A single dense paragraph that front-loads the core operation and then layers in caveats; nearly every clause earns its place. It is long, but the density is warranted for a 16-parameter tool.

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?

For a complex tool the description covers the main paths (fit → Cq under method or threshold → efficiency and fit quality), and an output schema exists so return values need no elaboration. Its only gap is not positioning against sibling tools, which leaves completeness just short of the top band.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 16 parameters in depth. The description echoes key semantics (threshold overrides cq_method, model families l4–l7 vs b4–b7), but adds little that isn't already in the schema descriptions, so baseline 3 applies.

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?

'Amplification curves to Cq, one row per reaction' states a specific resource and output shape, then names the exact operation (sigmoid fit, Cq read-off) and the seven definitions and threshold path. An agent can distinguish this from siblings like bootstrap_cq or relative_expression without opening the schema.

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

Usage Guidelines3/5

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

The description implies usage through detail (e.g. 'the classic Ct' for threshold mode, null-vs-0 exponential locators), but it never states when to call this tool instead of siblings such as bootstrap_cq, read_rdml_run, or quantify_dpcr. Guidance is implied, not explicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources