Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions .seo/briefs/ai-agent-structured-output.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# SEO Brief: AI Agent Structured Output

## Selection

- **Title:** AI Agent Structured Output: Validate Before You Store
- **Slug:** `/blog/ai-agent-structured-output`
- **Primary keyword:** `AI agent structured output`
- **Measured demand:** unmeasured; DataForSEO credentials were unavailable in the cron runtime
- **Intent:** implementation / informational
- **Type:** how-to and operational decision guide
- **Product-led reason:** Structured output is a natural upstream boundary for Rowset datasets.
The article helps builders decide how a model result becomes a safe proposal and durable row,
while clearly stating that Rowset is the storage layer rather than the model-output validator.

## SERP teardown

The live SERP is led by current provider and framework documentation explaining how to request
schema-constrained JSON. Common coverage includes JSON Schema, Pydantic or Zod, provider-side
validation, type-safe parsing, and agent/tool integration. The gap is the operational boundary
after parsing: semantic verification, stable destination identity, staging, idempotent writes,
and read-back.

## Information gain

The article introduces the **shape -> meaning -> write contract**. It separates schema and
transport validity, evidence and policy validity, and retry-safe persistence. The framework
connects provider structured-output features to an inspectable two-dataset staging pattern without
pretending that schema validity proves factual correctness.

## Entity and question map

- structured output, JSON mode, and JSON Schema
- Pydantic and Zod
- required properties, enum constraints, and additional properties
- syntactic validity versus semantic validity
- stable business keys and idempotency keys
- staging proposals, approval, write verification, and read-back
- output-contract versioning and provider schema subsets
- PAA: What is structured output for AI agents? Is JSON mode the same? Does structured output
prevent hallucinations? Should agents write directly to a database?

## Claim ledger

| ID | Claim | Primary source | Independent check / locator | Status |
|---|---|---|---|---|
| output-01 | The Claude Agent SDK accepts JSON Schema, Zod, or Pydantic output definitions and returns validated structured output. | https://code.claude.com/docs/en/agent-sdk/structured-outputs | Live extraction checked 2026-08-03 | verified |
| output-02 | Gemini structured outputs support data extraction, classification, and agentic workflows through JSON Schema. | https://ai.google.dev/gemini-api/docs/structured-output | https://ai.google.dev/gemini-api/docs/generate-content/structured-output | verified |
| output-03 | Schema-constrained JSON does not guarantee that output values are semantically correct. | https://ai.google.dev/gemini-api/docs/generate-content/structured-output | Current Gemini guide requires application validation | verified |
| output-04 | JSON Schema object validation can define properties, required fields, and additional-property handling. | https://json-schema.org/understanding-json-schema/reference/object | https://json-schema.org/learn/getting-started-step-by-step | verified |
| output-05 | Rowset supports private datasets with explicit indexes, semantic column types, instructions, MCP, and REST access. | https://rowset.lvtd.dev/docs/design-schema | Repo `design-schema.md`, `connect-mcp.md`, and `dataset-api.md` | verified |
| output-06 | Rowset is a mutable row backend, not a provider-side structured-output generator or immutable compliance store. | https://rowset.lvtd.dev/docs/datasets | Repo `AGENTS.md`, `.seo/brand.md`, and audit-trail guide | verified |

## Counter-evidence and limits

- Provider implementations support different JSON Schema subsets and limits. The application
validator remains authoritative.
- Structured outputs improve parseability but do not prevent unsupported claims or wrong IDs.
- Staging is not necessary for every low-risk deterministic operation; consequence and ambiguity
determine the control depth.
- Rowset datasets are mutable and are not WORM or tamper-evident audit storage.

## Internal-link plan

- `/docs/design-schema` — durable dataset schema
- `/docs/connect-mcp` — hosted MCP connection
- `/docs/dataset-api` — application write path
- `/blog/ai-agent-data-entry` — source-to-destination workflow
- `/blog/idempotent-ai-agent-updates` — uncertain-write recovery
- `/pricing` — product next step

Inbound links will be added from `/docs/design-schema` and
`/blog/ai-agent-data-entry`.

## Side checks

- **AI SEO:** Direct definition and answer first; self-contained three-gate framework; provider
and standards sources; current review date; question-shaped headings and FAQ; BlogPosting schema
emitted by the existing renderer.
- **Product-led SEO:** Solves a real builder job at the boundary between agent generation and
durable data; maps to Rowset schema, index, MCP, and REST surfaces; states product limits; gives
a private two-dataset staging pattern and a natural product next step.
4 changes: 2 additions & 2 deletions .seo/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@
"content_ledger_dataset_key": "9ae7d0d3-1138-43a0-b3b8-aa05fac12a96",
"research_briefs_dataset_key": "3a004cfa-0a7e-4c3a-a517-caca902f38d6",
"schema_version": 1,
"last_sync_at": "2026-08-02"
"last_sync_at": "2026-08-03"
},
"created_at": "2026-07-04",
"updated_at": "2026-08-02",
"updated_at": "2026-08-03",
"notes": [
"Initialized from latest origin/main after fast-forwarding from c11f1de to 2d9389b.",
"Refreshed from current origin/main b93e5d6 with GSC, Plausible, PostHog, DataForSEO, Exa, Firecrawl, Jina, and live HTTP checks on 2026-07-15.",
Expand Down
4 changes: 3 additions & 1 deletion .seo/content-ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
| 2026-07-30 | AI Agent for Data Entry: A Safe Structured Workflow | how-to / operational guide | `/blog/ai-agent-data-entry` | AI agent for data entry | 20 | n/a | agent-managed datasets, data cleaning, index-column guide, idempotency, schema design, MCP, Dataset API, pricing | #374 |
| 2026-08-01 | AI Data Collection: A Reviewable Agent Workflow | how-to / operational guide | `/blog/ai-data-collection` | AI data collection | 210 | 2 | agent-managed datasets, data entry, source registry, checkpoints, provenance, schema design, MCP, Dataset API, pricing | #391 |
| 2026-08-02 | MCP OAuth vs API Keys: Choose the Right Auth | comparison / decision guide | `/blog/mcp-oauth-vs-api-keys` | MCP OAuth | 390 | 9 | MCP setup, agent access, MCP vs REST, safe sharing, pricing | #392 |
| 2026-08-03 | AI Agent Structured Output: Validate Before You Store | how-to / operational decision guide | `/blog/ai-agent-structured-output` | AI agent structured output | unmeasured | n/a | schema design, data entry, idempotent updates, MCP, Dataset API, pricing | #396 |

---

Expand Down Expand Up @@ -69,6 +70,7 @@
| 23 | MCP OAuth vs API keys | comparison / decision guide | MCP OAuth | 390 | 9 | navigational / implementation | shipped (20) | Selected 2026-08-02 after live DataForSEO and SERP research. The product-led angle is a five-question delegation test that distinguishes third-party user delegation from a provisioned key for a trusted agent. |
| 24 | MCP authentication | pillar / implementation guide | MCP authentication | 720 | 21 | navigational | 17 | Defer: measured demand is strong, but KD exceeds the conservative authority band and the SERP is dominated by protocol and platform documentation. Revisit after this narrower OAuth decision guide earns traction. |
| 25 | MCP security best practices | security guide | MCP security best practices | 110 | 27 | commercial | 14 | Defer: KD is above the current authority band and the broad topic would overlap existing safe-sharing, approval, audit, and authentication content. |
| 26 | AI agent structured output | how-to / operational decision guide | AI agent structured output | unmeasured | n/a | implementation / informational | shipped (19) | Selected 2026-08-03 after live SERP research. Product-led angle: a shape -> meaning -> write contract that connects provider schema output to staged, retry-safe Rowset rows without treating valid JSON as proof of correctness. |

---

Expand All @@ -77,7 +79,7 @@
| Cluster / theme | Pieces shipped | Gaps still open |
|---|---|---|
| Agent-managed datasets | `/blog/agent-managed-datasets`, `/blog/choose-index-column-agent-rows`, `/blog/structure-dataset-instructions-ai-agents`, `/blog/rowset-id-vs-business-keys`, `/blog/relationship-modeling-agent-datasets`, `/blog/ai-agent-memory-vs-state`, `/blog/idempotent-ai-agent-updates`, `/blog/share-ai-agent-data-safely`, `/blog/human-in-the-loop-ai-agents`, `/blog/ai-agent-audit-trail`, `/blog/database-for-ai-agents`, `/blog/ai-data-cleaning-agent`, `/blog/ai-agent-crm`, `/blog/ai-agent-task-management`, `/blog/ai-agent-inventory-management`, `/blog/ai-customer-feedback-analysis`, `/blog/ai-ready-data`, `/blog/ai-agent-data-entry`, `/blog/ai-data-collection` | Generated-index migration patterns |
| MCP and Dataset API | `/blog/mcp-vs-rest-ai-agents`, `/blog/connect-ai-agent-to-dataset-api`, `/blog/relationship-modeling-agent-datasets`, `/blog/ai-agent-inventory-management`, `/blog/ai-agent-data-entry`, `/blog/mcp-oauth-vs-api-keys` | More REST/MCP setup examples with concrete datasets |
| MCP and Dataset API | `/blog/mcp-vs-rest-ai-agents`, `/blog/connect-ai-agent-to-dataset-api`, `/blog/relationship-modeling-agent-datasets`, `/blog/ai-agent-inventory-management`, `/blog/ai-agent-data-entry`, `/blog/mcp-oauth-vs-api-keys`, `/blog/ai-agent-structured-output` | More REST/MCP setup examples with concrete datasets |
| Spreadsheet/database alternatives | `/blog/airtable-alternatives`, `/blog/google-sheets-alternatives`, `/blog/baserow-alternatives`, `/blog/nocodb-alternatives`, `/blog/spreadsheet-database-for-ai-agents`, `/vs/airtable`, `/vs/google-sheets` | Migration examples for specific human-to-agent workflows |

---
Expand Down
21 changes: 18 additions & 3 deletions .seo/keyword-research.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"product": "Rowset",
"domain": "https://rowset.lvtd.dev",
"created_at": "2026-07-04",
"updated_at": "2026-08-02",
"updated_at": "2026-08-03",
"mode": "measured_reaudit",
"source": "blended",
"sources": [
Expand All @@ -17,7 +17,7 @@
"repo",
"production_site"
],
"as_of": "2026-08-02",
"as_of": "2026-08-03",
"confidence": "measured",
"notes": [
"GSC remains sparse: 8 impressions and 0 clicks across three query/page rows in the last 90 days, with no meaningful striking-distance opportunity.",
Expand All @@ -27,7 +27,8 @@
"DataForSEO surfaced mcp database as the strongest newly measured cluster: 480 US searches/month, KD 5, and $14.12 CPC.",
"The live route audit found 17 stale URLs in the SEO inventory after the docs/use-case migration.",
"A 2026-08-01 DataForSEO refresh selected ai data collection at 210 US searches/month, KD 2, and $17.20 CPC; adjacent analysis and broad operations terms were deferred for weaker product fit.",
"A 2026-08-02 DataForSEO refresh selected mcp oauth at 390 US searches/month, KD 9, and $38.48 CPC. The live SERP is led by official protocol documentation and implementation guides; the Rowset piece uses a distinct OAuth-versus-provisioned-key delegation test."
"A 2026-08-02 DataForSEO refresh selected mcp oauth at 390 US searches/month, KD 9, and $38.48 CPC. The live SERP is led by official protocol documentation and implementation guides; the Rowset piece uses a distinct OAuth-versus-provisioned-key delegation test.",
"A 2026-08-03 live SERP refresh selected AI agent structured output as an unmeasured but strongly product-aligned implementation topic. Provider docs explain schema-constrained responses; the Rowset piece adds the shape, meaning, and retry-safe write boundary."
],
"tool_evidence": [
{
Expand Down Expand Up @@ -236,6 +237,14 @@
{"keyword": "database for ai agents", "source": "dataforseo", "search_volume": 10, "keyword_difficulty": 7, "cpc": 19.47, "intent": "commercial", "as_of": "2026-07-15"}
],
"opportunities": [
{
"cluster": "AI agent structured output",
"target_url": "/blog/ai-agent-structured-output",
"status": "shipped",
"priority": 13,
"signals": {"primary_volume": null, "primary_kd": null, "primary_cpc": null},
"notes": "Selected 2026-08-03 after live SERP research. Provider and framework docs dominate implementation coverage; the Rowset guide adds a product-led shape -> meaning -> write contract for staged, retry-safe durable rows."
},
{
"cluster": "mcp oauth",
"target_url": "/blog/mcp-oauth-vs-api-keys",
Expand Down Expand Up @@ -334,6 +343,12 @@
}
],
"serp_snapshots": {
"AI agent structured output": {
"source": "live web search + primary-source extraction",
"as_of": "2026-08-03",
"top_domains": ["code.claude.com", "ai.google.dev", "json-schema.org", "tanstack.com", "docs.ag2.ai", "learn.microsoft.com"],
"notes": "The SERP is documentation-heavy and explains schema-constrained generation. The Rowset post differentiates by separating format validity, semantic and policy validity, staging, retry-safe writes, and destination read-back."
},
"ai data collection": {
"source": "dataforseo + live page extraction",
"as_of": "2026-08-01",
Expand Down
6 changes: 6 additions & 0 deletions .seo/link-inventory.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
| `/blog/ai-agent-data-entry` | https://rowset.lvtd.dev/blog/ai-agent-data-entry | AI Agent for Data Entry: A Safe Structured Workflow | AI agent for data entry, safe AI data-entry workflow, source entry envelope destination contract, reviewable automated data entry, structured data entry for agents |
| `/blog/ai-data-collection` | https://rowset.lvtd.dev/blog/ai-data-collection | AI Data Collection: A Reviewable Agent Workflow | AI data collection, AI data collection workflow, collection control plane, source registry and capture runs, reviewable agent-collected records |
| `/blog/mcp-oauth-vs-api-keys` | https://rowset.lvtd.dev/blog/mcp-oauth-vs-api-keys | MCP OAuth vs API Keys: Choose the Right Auth | MCP OAuth vs API keys, MCP authorization decision guide, provisioned API key for agents, delegated MCP access, agent authentication delegation test |
| `/blog/ai-agent-structured-output` | https://rowset.lvtd.dev/blog/ai-agent-structured-output | AI Agent Structured Output: Validate Before You Store | AI agent structured output, structured output validation for agents, shape meaning write contract, JSON Schema to durable rows, validated agent output workflow |

## Shipped SEO Sprint Pages

Expand Down Expand Up @@ -230,3 +231,8 @@ These route families remain retired and must not be selected as internal-link ta
- provisioned API key for trusted agents
- delegated MCP access
- agent authentication delegation test
- AI agent structured output
- structured output validation for agents
- shape meaning write contract
- JSON Schema to durable rows
- validated agent output workflow
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ deployment or release cut date.

## 2026-08-03

### Added
- Added an AI agent structured-output guide covering JSON Schema, semantic validation, staging,
stable identity, retry-safe writes, and destination read-back.

### Changed
- Dataset tables now expose row search, semantic filters, sorting, active query
summaries, sticky row identity, explicit row links, and browser-local column
Expand Down
4 changes: 4 additions & 0 deletions apps/pages/content/blog/ai-agent-data-entry.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,10 @@ patterns. Its `format` keyword may be annotation-only depending on the validator
an `email` or `date` format is enforced unless your selected validator enables that behavior
([JSON Schema reference, checked July 2026](https://json-schema.org/understanding-json-schema/reference/type)).

When the model provider returns schema-constrained JSON, use the [AI agent structured-output
guide](/blog/ai-agent-structured-output) to keep format validation, semantic checks, and the final
database write as separate gates.

Keep semantic or contextual checks separate. A model may help decide whether "Acme Co." and
"Acme Incorporated" refer to the same organization, but that judgment should produce evidence
and a review state. It should not bypass the exact-key lookup.
Expand Down
Loading
Loading