Content Negotiation
Resolution levels
Section titled “Resolution levels”SDF documents support three resolution levels. Consumers specify the desired resolution via the Accept header or query parameter.
| Level | Description | Typical size | Use case |
|---|---|---|---|
compact | Header + summary + type_data only | ~300 tokens | Indexing, triage, catalog display |
standard | All core fields (entities, claims, relationships, type_data) | ~750 tokens | General agent consumption |
full | All fields including sections, links, embeddings, extensions | ~2,000 tokens | Deep analysis, archival |
Compact
Section titled “Compact”The compact resolution includes only the fields needed for quick classification and display:
{ "sdf_version": "0.2.0", "id": "sdf_abc123", "parent_type": "article", "type": "article.news", "summary": { "one_line": "EU passes AI regulation framework." }, "type_data": { "authors": ["Maria Schmidt"], "publish_date": "2025-03-15" }, "provenance": { "content_hash": "sha256:8a3b1c..." }}Standard
Section titled “Standard”The standard resolution includes all semantically extracted fields:
source,summary,entities,claims,topics,relationships,type_data,provenance
This is the default resolution level.
The full resolution adds structural and supplementary data:
- Everything in standard, plus:
sections,metadata,temporal,links,embeddings,extensions
Accept header
Section titled “Accept header”Clients request SDF documents using the application/sdf+json media type:
Accept: application/sdf+jsonResolution is specified via the resolution parameter:
Accept: application/sdf+json; resolution=compactAccept: application/sdf+json; resolution=standardAccept: application/sdf+json; resolution=fullIf no resolution parameter is provided, servers should return standard resolution.
Consumer profiles
Section titled “Consumer profiles”Consumer profiles allow agents to declare their capabilities and preferences in a structured way:
Accept: application/sdf+json; resolution=standard; profile="agent-v1"Profiles are defined by the consumer and can be registered with the publisher via the well-known configuration. A profile might specify:
- Preferred resolution level
- Required fields beyond the resolution default
- Maximum document size
- Supported extension namespaces
Publishers may use profiles to optimize document generation for known consumer classes.
Query parameter fallback
Section titled “Query parameter fallback”For environments where header modification is not possible, resolution may also be specified via query parameter:
https://example.com/api/sdf/page?resolution=compactThe Accept header takes precedence when both are present.
Extension mechanism
Section titled “Extension mechanism”SDF documents support vendor-specific extensions via the extensions field. All extension keys must follow the x-{vendor} namespace convention:
{ "extensions": { "x-acme": { "internal_id": "ACM-12345", "department": "research", "priority": "high" }, "x-analytics": { "pageviews_30d": 45230, "engagement_score": 0.73 } }}Extension rules
Section titled “Extension rules”- All extension keys must be prefixed with
x-followed by a vendor identifier - Extension values can be any valid JSON value
- Extensions are only included at
fullresolution by default - Consumers must not rely on extensions for core document interpretation
- Publishers should document their extension schemas separately
- Extension namespaces must not conflict with current or future SDF field names
Requesting specific extensions
Section titled “Requesting specific extensions”Consumers can request specific extensions at any resolution level:
Accept: application/sdf+json; resolution=standard; extensions="x-acme,x-analytics"This tells the server to include the specified extension namespaces even if the resolution level would not normally include them.