Framework and capability tools
This page specifies the four tools used to discover accepted framework snapshots, inspect one framework, report runtime capabilities, and calculate structural package statistics.
For workflow guidance, see Discover frameworks.
get_capabilities
Returns the implemented server-wide surface and package-specific runtime capabilities. This tool has no caller-supplied arguments.
Request
Result
structuredContent contains:
| Field | Meaning |
|---|---|
serverName |
Server display name |
toolNames |
Exact registered tool names |
promptNames |
Exact registered prompt names |
resourceUris |
Fixed resource URIs |
resourceUriTemplates |
Parameterized resource templates |
resourceRepresentations |
deterministic_derived and raw_source |
availableGraphTypes |
Primary (routing) graph types of accepted packages |
includedGraphTypes |
Every graph type the accepted packages include |
implementedFeatures |
Server features implemented by this build |
unavailableFeatures |
Explicitly unsupported features |
frameworkPromptOverlaysOptional |
Whether prompt overlays are optional |
promptConfigSchemaVersion |
Prompt configuration schema version |
packages |
Per-package capability evidence |
Each packages[] entry includes:
packageIdentity,rights,counts, andcapabilities(code coverage, text search, detailed provenance, multi-parent, official source roles, and learning-progression availability and provenance);includedGraphTypes;implementedSearchModes;implementedLearningComponentSearchModes;searchIndex, the package-local index counts:codedNodeCount,lexicalDocumentCount,learningComponentDocumentCount, andtagVocabularySize;availableResourceKinds;availableResourceArtifacts; andtraversalRelationshipType.
Source metadata is reported by list_frameworks and get_framework. Build metadata
and the artifact table are in each package's package_manifest resource.
The text result prints Routing graph types: and Included graph types: for the server,
and for each package its included graph types and a Learning progressions: block with
hasLearningProgressions, hasLearningProgressionProvenance, buildsTowards and
relatesTo (stored counts).
Standards and learning-component modes are reported separately because they are
governed differently. Learning-component modes carry a learning_component_ prefix so
a mode value is never ambiguous between the two surfaces:
learning_component_text
learning_component_tag
learning_component_supported_code_exact
learning_component_supported_code_prefix
learning_component_text follows the package's textSearch capability, and the two
supported-code modes follow the same profile code coverage that governs
code_exact and code_prefix, because they match against the codes of the standards a
component supports. learning_component_tag needs neither, so it is always implemented;
a package whose components carry no tags returns no hits rather than reporting the mode
unavailable.
Generic schemas do not authorize package-specific modes
The search_standards schema contains text, code_exact, and code_prefix
variants, but a selected package may not implement every mode. Check
packages[].implementedSearchModes first.
list_frameworks
Lists accepted immutable framework snapshots with deterministic filtering and checksum-protected pagination.
Request fields
All fields are optional.
| Field | Type | Default / bound | Meaning |
|---|---|---|---|
cursor |
string or null | null; 1-4096 characters when present | Opaque continuation cursor |
graphTypes |
array | empty; max 16 | Match snapshots that include any listed type (includedGraphTypes) |
isCurrent |
boolean or null | null | Current/non-current snapshot filter |
issuingAuthorities |
array[string] | empty; max 64 | Issuing-authority filters |
jurisdictionTypes |
array[string] | empty; max 64 | Jurisdiction-type filters |
jurisdictions |
array[string] | empty; max 64 | Jurisdiction filters |
languages |
array[string] | empty; max 64 | Language-tag filters |
limit |
integer | 25; 1-100 | Maximum snapshots on one page |
localGrades |
array[string] | empty; max 64 | Exact source-facing grade/stage filters |
normalizedGrades |
array[string] | empty; max 64 | Normalized retrieval-facet filters |
query |
string or null | null; max 256 characters | Catalog discovery text |
subjects |
array[string] | empty; max 64 | Source subject filters |
validationStatus |
array | empty; max 8 | Validation-state filters |
Tuple-valued filters reject duplicate exact values. A supplied query must contain
non-whitespace text.
Current validationStatus values are:
A minimal request is:
A filtered request is:
{
"request": {
"graphTypes": ["academic_standards"],
"jurisdictions": ["Ghana"],
"subjects": ["Mathematics"],
"validationStatus": ["passed"],
"limit": 25
}
}
Result fields
| Field | Meaning |
|---|---|
catalogSha256 |
Checksum of the accepted catalog state used for pagination |
items |
Returned accepted framework snapshots, summarised |
returnedCount |
Number of items on the page |
totalMatchingCount |
Total snapshots matching the request |
hasMore |
Whether another page exists |
nextCursor |
Opaque cursor for the next page, or null |
Each item carries the snapshot's identity, source metadata, relations,
availableGraphTypes (routing) and includedGraphTypes, and a summary of each graph
package: packageIdentity, includedGraphTypes, capabilities, counts,
profileFacets, rights, and validationStatus. Build timestamps, schema and manifest
versions, and the artifact table are in the package's package_manifest resource.
The text result prints, per snapshot, Routing graph types: and Included graph types:
lines, and one line per package that ends with
learning_progressions=available|unavailable | builds_towards=<n> | relates_to=<n> |
validation=<status>. The graphTypes filter matches included types, so
["learning_progressions"] finds every snapshot whose packages contain progressions
even though they route as academic_standards.
When hasMore is true, the result text also contains a complete nextRequest.
Submit that request unchanged.
get_framework
Returns one exact snapshot or one uniquely current snapshot in a framework family.
Request fields
| Field | Type | Required | Meaning |
|---|---|---|---|
frameworkId |
string | Yes | Conceptual framework family ID |
snapshotId |
string or null | No | Exact immutable snapshot; omission uses unique-current routing |
For reproducible work, pin the exact snapshot:
{
"request": {
"frameworkId": "ghana-nacca-primary-mathematics-basic-4-6",
"snapshotId": "<exact-snapshot-id>"
}
}
Result
The result contains one framework object with the accepted snapshot's identity,
source metadata, relations, routing and included graph types, and the same package
summaries as list_frameworks. Its text prints, per package, Included graph types:,
Learning progressions: and LP provenance: flags, and adds
learning_progressions[builds_towards=<n>, relates_to=<n>] to the counts.
If snapshot omission does not resolve to one unique current snapshot, the tool returns
an ambiguous_framework error rather than choosing silently.
get_framework_statistics
Returns deterministic structural statistics for one Academic Standards package.
Request fields
| Field | Type | Default | Meaning |
|---|---|---|---|
frameworkId |
string | required | Framework family ID |
graphType |
enum | academic_standards |
Graph domain to select |
snapshotId |
string or null | null | Exact snapshot or unique-current routing |
{
"request": {
"frameworkId": "india-cbse-science-learning-framework-classes-9-10",
"graphType": "academic_standards"
}
}
Result fields
The result contains package, sourceMetadata, and statistics. package identifies
the package the record comes from and carries its rights: packageIdentity and
rights. The package's counts, capabilities, and profile facets are reported by
get_framework; build metadata and the artifact table are in the package_manifest
resource.
statistics includes:
totalFrameworkNodes,totalItemNodes,totalNodes, andtotalRelationships. These count the standards hierarchy only:totalNodesis the framework root plus the framework items, andtotalRelationshipsexcludessupports,buildsTowardsandrelatesToedges. Learning components and their edges are counted in thelearningComponentsblock below;- local grade, node grade-level, normalized grade, statement-type, normalized
statement-type, and relationship-type counts, all over the standards hierarchy only,
so
supportsor LP edges never appear in the relationship-type or resolution counts; codePresencecounts;maximumStructuralDepthandminimumStructuralDepthCounts;multiParentcardinality statistics;unresolvedRelationshipscounts; andunreachableNodeCount, counting nodes with no path to the framework root by any declared relationship; andlearningComponents, a separate block reportingtotalLearningComponents,totalSupportsRelationships,multiStandardComponentCount,supportedStatementTypes,standardsWithoutComponents,tagVocabularySize, the support-confidence range, and the components-per-standard and bridge-span distributions.supportedStatementTypeslists the source statement types thatsupportsedges land on in this package;standardsWithoutComponentsand the components-per-standard distribution count only items of those types, so grouping headings and node types the pipeline never decomposed are not reported as gaps.
Standards counts and learning-component counts are never combined. A learning component is generated content and is excluded from every standards count.
These values describe graph structure. They do not establish curriculum quality, coverage quality, instructional sequence, or difficulty.
Graph types
The domain vocabulary recognizes these graph-type values:
academic_standards
assessment
curriculum
learning_components
learning_progressions
reviewed_alignment
Recognition in the enum is not the same as availability in the accepted catalog.
availableGraphTypes reports primary package routing types; these mixed packages still
route as academic_standards. includedGraphTypes (on capabilities, snapshots and
packages) lists every type the packages contain, and the list_frameworks graphTypes
filter matches it. Check includedGraphTypes and package flags
hasLearningProgressions/hasLearningProgressionProvenance for LP availability.
statistics.learningProgressions separately reports buildsTowardsRelationships and
relatesToRelationships plus those flags; hierarchy/LC blocks retain their meanings.
Common errors
| Error code | Typical cause |
|---|---|
framework_not_found |
Framework or snapshot selector is unavailable |
ambiguous_framework |
Unique-current routing cannot select exactly one snapshot |
invalid_cursor |
Cursor is malformed, stale, or bound to a different request/catalog state |
catalog_error |
Accepted catalog evidence is internally inconsistent |
See Errors, cursors, and limits for boundary behavior.
Next: Standards tools