Resources and URI templates
The resource surface provides rights-aware, read-only access to accepted metadata, exact graph records, provenance, and a closed set of manifest-declared artifacts.
For task-oriented guidance, see Read resources and provenance.
Clients that cannot open resources directly can read the same content with the
read_evidence tool.
Fixed resource
| Name | URI | MIME type | Representation |
|---|---|---|---|
catalog |
kgfegmcp://catalog |
application/json |
Deterministic derived JSON |
The catalog resource returns the complete accepted package catalog.
Resource templates
| Name | URI template | Registered MIME type |
|---|---|---|
framework |
kgfegmcp://framework/{framework_id} |
application/json |
package_manifest |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/manifest |
application/json |
validation_report |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/validation |
application/json |
unresolved_items |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/unresolved |
application/json |
interpretation_profile |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/interpretation-profile |
application/json |
manifest_artifact |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/artifact/{artifact_name} |
application/octet-stream at registration; actual approved MIME comes from artifact policy |
standard |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/standard/{node_id} |
application/json |
standard_provenance |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/standard/{node_id}/provenance |
application/json |
standard_learning_components |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/standard/{node_id}/learning-components |
application/json |
learning_component |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/learning-component/{node_id} |
application/json |
learning_component_provenance |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/learning-component/{node_id}/provenance |
application/json |
relationship |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/relationship/{relationship_id} |
application/json |
relationship_provenance |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/relationship/{relationship_id}/provenance |
application/json |
learning_progressions |
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/learning-progressions |
application/json |
The three learning-component templates mirror the standards pair. They duplicate
get_learning_component and get_learning_components_for_standard deliberately: a
resource serves clients driven by a resource browser, while the tool works everywhere.
learning_component_provenance is keyed by outer node identifier rather than CASE UUID,
because a learning component carries no CASE identity.
Identifier values constructed by the server are percent-encoded as individual URI path segments.
Resource representations
Every returned resource document carries metadata identifying its representation as:
ResourceMetadata includes:
canonicalUri;resourceKind;representation;mimeType;byteLength;contentSha256;- applicable framework, snapshot, graph-package, graph-type, and profile identity; and
sourceArtifactswith logical name, checksum, size, and package identity evidence.
The server never exposes local filesystem paths as resource metadata.
Rights classes
Dedicated resource families apply the following policy:
| Resource family | Main access requirement |
|---|---|
| Catalog, framework, manifest, validation, interpretation profile, LP summary | Public metadata |
| Unresolved items | Approved or provisionally approved rights review + full-text permission |
| Standard, standard provenance, relationship, per-edge LP provenance | Approved or provisionally approved rights review + full-text permission + standard-resource permission |
For rights-gated content, approved review states are:
Other review states do not satisfy the reviewed-content gate.
Manifest artifacts
A manifest declaration is necessary but not sufficient for generic artifact exposure. The server uses a closed logical-name policy.
| Logical name | MIME type | Access class |
|---|---|---|
validationReport |
application/json |
public_metadata |
learningComponentSummary |
application/json |
public_metadata |
unresolvedItems |
application/json |
full_text |
learningComponentDedupGroups |
application/json |
full_text |
entityProvenance |
application/json |
bulk_content |
nodes |
application/x-ndjson |
bulk_content |
relationships |
application/x-ndjson |
bulk_content |
standardsFramework |
application/json |
bulk_content |
learningComponentProvenance |
application/json |
bulk_content |
LP artifact policies extend this closed list:
| Logical names | Access class |
|---|---|
learningProgressionValidation, learningProgressionProvenanceIndex, learningProgressionNormalization |
public_metadata |
learningProgressionUnresolved |
full_text |
learningProgressionSummary |
bulk_content |
learningProgressionProvenanceShard00 … 63 |
bulk_content, only when present in both the validated index and manifest |
The public LP summary is a sanitized projection with its own content hash, distinct from the unchanged original generation-summary artifact/hash. It excludes candidate text, rationale, private paths and model prompts. Unknown extra artifacts fail closed; a similar name prefix grants no access. The evidenceArchiveRecord artifact has no exposure contract and is never served.
Archive-only evidence is not part of the package. A URI for one of those names, such as
learningProgressionProvenance or academicStandardsBundle, returns
resource_not_found, not resource_access_denied. See
Runtime files and archived evidence.
full_text requires reviewed rights plus allowFullText.
bulk_content requires reviewed rights plus all of:
allowFullText;allowStandardResources; andallowBulkResource.
An unknown logical artifact name fails closed with resource_not_found until an explicit
future exposure contract defines its access class and MIME type.
Size policy
The resource layer enforces two independent limits:
- maximum source bytes the server may read for a resource; and
- maximum bytes the server may return.
The configured source-read limit must be greater than or equal to the return limit.
Requests exceeding either limit return resource_access_denied rather than partial
content. read_evidence applies these limits to the whole resource before returning any
window, so paging cannot be used to read a resource that is too large natively.
See Environment variables for configured limits.
Exact standard and provenance resources
Standard and standard-provenance URIs use the package-local outer nodeId namespace:
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/standard/{node_id}
kgfegmcp://framework/{framework_id}/snapshot/{snapshot_id}/standard/{node_id}/provenance
Use get_standard instead of a standard resource when you need to resolve by CASE UUID
or CASE URI.
The standard-provenance resource returns:
| Field | Content |
|---|---|
nodeId |
Outer node ID |
caseIdentifierUuid |
CASE UUID used to find the entry |
provenance |
The slim provenance item: the extraction record without candidate_source_refs, plus original_item_sha256 |
sourceDocument |
The source document object from the framework's provenance |
attributionStatement |
The package's rights.attributionStatement |
archivedProvenanceSha256 |
SHA-256 of the full as_entity_provenance.json kept in the archive |
The learning-component-provenance resource returns nodeId, the slim component record
(kept whole, plus original_component_sha256), sourceDocument (doc_key and
pdf_name), attributionStatement and archivedProvenanceSha256.
metadata.sourceArtifacts for both cites the slim artifact and evidenceArchiveRecord.
Learning progression resources
The existing relationship URI returns exact stored LP content. Its /provenance resource returns one edge's slim provenance record. It requires reviewed rights, full-text and standard-resource permission; it does not grant bulk access.
| Field | Content |
|---|---|
relationshipId |
The edge ID |
provenance |
The slim record (below) |
archivedProvenanceSha256 |
SHA-256 of the full original provenance map kept in the archive |
epistemicStatus |
Always llm_inferred |
| Notices | Generated-origin, confidence, coverage and semantic notices |
The slim record keeps the edge's identity and endpoints, the full judgment (decision, direction, confidence, full rationale and all warnings), candidate warnings, the checker outcome, producer and checker trace hashes, model configuration and settings, attribution fields and every content hash. It leaves out three fields, which stay in the archive: the candidate evidence text (claim.candidate.evidence), the admissible decisions (claim.candidate.admissible_decisions) and the producer judgment (claim.provenance.producer_judgment). The producer judgment equals the final judgment when checker_outcome is accepted. When it is corrected (1,324 of the 17,667 edges in the current packages), the producer judgment is the model's judgment before the checker corrected it, and its decision, direction, confidence and rationale can differ from the final ones; that earlier judgment is now available only in the archive. Its original_entry_sha256 is the SHA-256 of the full original record, so the edge can be matched to the archive.
The server resolves an accepted ID to its validated slim shard without a caller-selected path. metadata.sourceArtifacts lists the manifest, the selected slim shard, the slim index, relationships and evidenceArchiveRecord, with the returned content hash and exact package/profile identity. One-edge reads open a single shard.
The /learning-progressions summary reports availability, stored per-type counts, structural/process-only scope, retained candidate/claim/needs-review/unresolved counts and eligibility/coverage notices, plus links to the declared LP artifacts (normalization receipt, slim index, summary, unresolved and validation). Missing denominators remain unknown. Accepted edge tables exclude unresolved/rejected/no-relation/needs-review claims. A zero warning-pair count does not erase individual edge warnings.
Progression tool results cite four artifacts in metadata.artifacts: learningProgressionProvenance, learningProgressionProvenanceIndex, nodes and relationships. The first is the archived original provenance map, cited by its SHA-256 from the evidence archive record. Its URI is an identifier only: reading it returns resource_not_found. Use each edge's provenanceUri instead.
Defaults are 32 MiB source-read and 8 MiB returned content. Lower operator limits still apply to shard reads; denied/oversized evidence produces an explicit error, never fabricated or silently clipped provenance. Query results have separate tool-result ceilings (1 MiB and 100,000 characters for text plus structured output). See LP tool reference.
Relationship resource
This addresses one exact package-local relationship. A hasChild relationship remains
structural graph evidence and must not be rewritten as prerequisite or progression
semantics.
Resource errors
| Error code | Typical cause |
|---|---|
resource_not_found |
Resource, artifact, or approved exposure contract cannot be resolved |
resource_access_denied |
Rights, exposure class, or size policy blocks access |
framework_not_found |
Framework/snapshot route is unavailable |
read_evidence adds invalid_evidence_uri, unsupported_evidence_format,
evidence_result_too_large and invalid_cursor; see
its error table.
Unexpected resource exceptions are masked as:
Next: Prompts