diff --git a/satgate-landing/app/economic-firewall/page.tsx b/satgate-landing/app/economic-firewall/page.tsx
index 94f395c7..cf71d2d1 100644
--- a/satgate-landing/app/economic-firewall/page.tsx
+++ b/satgate-landing/app/economic-firewall/page.tsx
@@ -3,7 +3,7 @@ import { ArrowRight, CheckCircle2, Shield, Gauge, WalletCards, Activity, KeyRoun
export const metadata = {
title: 'Economic Firewall for AI Agents',
- description: 'Learn what an economic firewall is and how SatGate governs AI agent authority, spend, paid rails, and revocation before execution, then exports Evidence Pack proof.',
+ description: 'Learn how an economic firewall governs AI agent authority, spend, paid rails, and revocation before execution, with Evidence Pack proof.',
alternates: { canonical: 'https://satgate.io/economic-firewall' },
keywords: [
'economic firewall',
@@ -17,7 +17,7 @@ export const metadata = {
],
openGraph: {
title: 'Economic Firewall for AI Agents',
- description: 'The request-path control layer for AI agent authority, spend, revocation, audit evidence, and paid-rail context.',
+ description: 'The request-path control layer for AI agent authority, spend, revocation, Evidence Packs, and paid-rail context.',
url: 'https://satgate.io/economic-firewall',
type: 'article',
},
diff --git a/satgate-landing/app/evidence-pack-demo/page.tsx b/satgate-landing/app/evidence-pack-demo/page.tsx
index f11056bf..c8f0ff98 100644
--- a/satgate-landing/app/evidence-pack-demo/page.tsx
+++ b/satgate-landing/app/evidence-pack-demo/page.tsx
@@ -105,6 +105,7 @@ const jsonLd = {
operatingSystem: 'Web',
url: 'https://satgate.io/evidence-pack-demo',
description: metadata.description,
+ dateModified: '2026-06-10',
featureList: [
'Canonical Evidence Pack v1 schema',
'Authority chain viewer',
@@ -178,7 +179,7 @@ export default function EvidencePackDemoPage() {
Prospect comprehension check
-
The artifact answers the buyer's core questions.
+
The artifact answers the buyer's core questions.
{answerCards.map(({ icon: Icon, question, answer, detail }) => (
diff --git a/satgate-landing/app/govern/page.tsx b/satgate-landing/app/govern/page.tsx
index 6a0aaf97..76924200 100644
--- a/satgate-landing/app/govern/page.tsx
+++ b/satgate-landing/app/govern/page.tsx
@@ -2,9 +2,9 @@ import type { Metadata } from "next";
import GovernClient from "../components/GovernClient";
export const metadata: Metadata = {
- title: "Enterprise AI Agent Governance: Policy-to-Proof Controls",
+ title: "AI Agent Governance: Policy-to-Proof Controls",
description:
- "Govern AI agents before execution: Observe usage, Control budgets and access, and Prove decisions with Evidence Packs across APIs, MCP, and paid rails.",
+ "Govern AI agents before execution with request-path scopes, budgets, revocation, MCP controls, and Evidence Packs across APIs and paid rails.",
alternates: {
canonical: "https://satgate.io/govern",
},
@@ -20,27 +20,27 @@ export const metadata: Metadata = {
"Evidence Packs for AI agents",
],
openGraph: {
- title: "Enterprise AI Agent Governance: Policy-to-Proof Controls",
+ title: "AI Agent Governance: Policy-to-Proof Controls",
description:
- "Govern AI agents before execution: Observe usage, Control budgets and access, and Prove decisions with Evidence Packs across APIs, MCP, and paid rails.",
+ "Govern AI agents before execution with request-path scopes, budgets, revocation, MCP controls, and Evidence Packs across APIs and paid rails.",
url: "https://satgate.io/govern",
type: "website",
},
twitter: {
card: "summary_large_image",
- title: "Enterprise AI Agent Governance: Policy-to-Proof Controls",
+ title: "AI Agent Governance: Policy-to-Proof Controls",
description:
- "Observe agent usage, Control access and budgets before execution, and Prove every decision with Evidence Packs.",
+ "Control agent scopes, budgets, delegation, revocation, MCP tools, and paid rails before execution — then Prove decisions with Evidence Packs.",
},
};
const webPageSchema = {
"@context": "https://schema.org",
"@type": "WebPage",
- name: "Enterprise AI Agent Governance Platform",
+ name: "AI Agent Governance: Policy-to-Proof Controls",
description: metadata.description,
url: "https://satgate.io/govern",
- dateModified: "2026-06-01",
+ dateModified: "2026-06-10",
isPartOf: { "@type": "WebSite", name: "SatGate", url: "https://satgate.io" },
about: [
{ "@type": "Thing", name: "AI agent governance" },
diff --git a/satgate-landing/app/l402-agent-payments/page.tsx b/satgate-landing/app/l402-agent-payments/page.tsx
index 818bb90b..014066ee 100644
--- a/satgate-landing/app/l402-agent-payments/page.tsx
+++ b/satgate-landing/app/l402-agent-payments/page.tsx
@@ -3,7 +3,7 @@ import { ArrowRight, Bot, Coins, KeyRound, LockKeyhole, ReceiptText, Zap } from
export const metadata = {
title: 'L402 Paid-Rail Governance for APIs',
- description: 'Understand L402 as one paid rail for agent/API access. SatGate gives delegated clients bounded economic authority, applies Policy-to-Proof before execution, and preserves Evidence Pack receipts after payment.',
+ description: 'Understand L402 as one paid rail while SatGate applies Policy-to-Proof before execution and preserves Evidence Pack receipts.',
alternates: { canonical: 'https://satgate.io/l402-agent-payments' },
keywords: [
'L402 paid-rail governance',
diff --git a/satgate-landing/app/mcp-budget-enforcement/page.tsx b/satgate-landing/app/mcp-budget-enforcement/page.tsx
index 72ed84c3..d419e8e2 100644
--- a/satgate-landing/app/mcp-budget-enforcement/page.tsx
+++ b/satgate-landing/app/mcp-budget-enforcement/page.tsx
@@ -3,7 +3,7 @@ import { ArrowRight, BadgeDollarSign, Bot, ClipboardList, Gauge, KeyRound, Shiel
export const metadata = {
title: 'MCP Budget Enforcement for AI Agents',
- description: 'Enforce budgets, prices, risk tiers, revocation, and Evidence Pack receipts before AI agents execute MCP tools. SatGate puts authority before execution in the MCP request path.',
+ description: 'Enforce MCP tool budgets, prices, risk tiers, revocation, and Evidence Pack receipts before AI agents execute tool calls.',
alternates: { canonical: 'https://satgate.io/mcp-budget-enforcement' },
keywords: [
'MCP budget enforcement',
diff --git a/satgate-landing/app/mcp-cost-control/page.tsx b/satgate-landing/app/mcp-cost-control/page.tsx
index cf5d7d78..8c978347 100644
--- a/satgate-landing/app/mcp-cost-control/page.tsx
+++ b/satgate-landing/app/mcp-cost-control/page.tsx
@@ -3,7 +3,7 @@ import { ArrowRight, Ban, BarChart3, Bot, DollarSign, Gauge, KeyRound, ReceiptTe
export const metadata = {
title: 'MCP Cost Control | Budget Enforcement for Tool-Calling Agents',
- description: 'Control MCP tool costs with per-tool budgets, scoped credentials, revocation, Evidence Pack receipts, and request-path enforcement for Cursor, Claude, and OpenClaw.',
+ description: 'Control MCP tool costs with budgets, scoped credentials, revocation, Evidence Pack receipts, and request-path enforcement.',
alternates: { canonical: 'https://satgate.io/mcp-cost-control' },
keywords: [
'MCP cost control',
@@ -18,14 +18,14 @@ export const metadata = {
],
openGraph: {
title: 'MCP Cost Control | Budget Enforcement for Tool-Calling Agents',
- description: 'Control MCP tool costs with per-tool budgets, risk tiers, scoped credentials, revocation, Evidence Pack receipts, and request-path enforcement.',
+ description: 'Control MCP tool costs with budgets, risk tiers, scoped credentials, revocation, Evidence Pack receipts, and request-path enforcement.',
url: 'https://satgate.io/mcp-cost-control',
type: 'website',
},
twitter: {
card: 'summary_large_image',
title: 'MCP Cost Control | Budget Enforcement for Tool-Calling Agents',
- description: 'Control MCP tool costs with per-tool budgets, risk tiers, scoped credentials, revocation, Evidence Pack receipts, and request-path enforcement.',
+ description: 'Control MCP tool costs with budgets, risk tiers, scoped credentials, revocation, Evidence Pack receipts, and request-path enforcement.',
},
};
@@ -34,7 +34,7 @@ const controls = [
{ icon: DollarSign, title: 'Budget checks', body: 'Evaluate remaining spend, per-request ceilings, daily caps, tool caps, and route budgets before forwarding.' },
{ icon: KeyRound, title: 'Scoped credentials', body: 'Use expiring capabilities instead of broad static keys so authority matches the job.' },
{ icon: Ban, title: 'Revocation', body: 'Block the next request when a credential, workflow, route, budget, or agent should stop.' },
- { icon: ReceiptText, title: 'Audit trails', body: 'Record allow/deny decisions with policy, budget remaining, route, tool, estimated cost, and outcome.' },
+ { icon: ReceiptText, title: 'Evidence receipts', body: 'Record allow/deny decisions with policy, budget remaining, route, tool, estimated cost, and outcome.' },
{ icon: BarChart3, title: 'Benchmark risk', body: 'Model loops, retry storms, fanout, detection delay, and avoided spend with benchmark-backed scenarios.' },
];
diff --git a/satgate-landing/app/mcp-governance/page.tsx b/satgate-landing/app/mcp-governance/page.tsx
index d9923503..a58fa7da 100644
--- a/satgate-landing/app/mcp-governance/page.tsx
+++ b/satgate-landing/app/mcp-governance/page.tsx
@@ -2,8 +2,8 @@ import Link from 'next/link';
import { ArrowRight, Cable, Eye, Gauge, KeyRound, ShieldAlert, Wrench } from 'lucide-react';
export const metadata = {
- title: 'MCP Governance: Authority, Policy, and Audit Receipts',
- description: 'Govern Model Context Protocol tools with SatGate. Check agent authority before MCP calls execute, enforce policy, revoke access, and produce Evidence Pack receipts for every decision.',
+ title: 'MCP Governance: Authority, Policy, Evidence Packs',
+ description: 'Govern MCP tools with SatGate: check authority before calls execute, enforce policy, revoke access, and create Evidence Pack receipts.',
alternates: { canonical: 'https://satgate.io/mcp-governance' },
keywords: [
'MCP governance',
@@ -17,7 +17,7 @@ export const metadata = {
'MCP tool spend limits',
],
openGraph: {
- title: 'MCP Governance: Authority, Policy, and Audit Receipts',
+ title: 'MCP Governance: Authority, Policy, Evidence Packs',
description: 'Control Model Context Protocol tool calls with authority policy, scoped budgets, revocation, Evidence Pack receipts, and Evidence Pack proof.',
url: 'https://satgate.io/mcp-governance',
type: 'article',
diff --git a/satgate-landing/app/partners/rails/page.tsx b/satgate-landing/app/partners/rails/page.tsx
index 93afa95f..5a870c76 100644
--- a/satgate-landing/app/partners/rails/page.tsx
+++ b/satgate-landing/app/partners/rails/page.tsx
@@ -66,6 +66,7 @@ const jsonLd = {
name: "SatGate for Payment Rails",
url: "https://satgate.io/partners/rails",
description: metadata.description,
+ dateModified: '2026-06-10',
isPartOf: { "@type": "WebSite", name: "SatGate", url: "https://satgate.io" },
about: [
{ "@type": "Thing", name: "agent payment rail governance" },
diff --git a/satgate-landing/app/robots.ts b/satgate-landing/app/robots.ts
index 484605f2..835d1831 100644
--- a/satgate-landing/app/robots.ts
+++ b/satgate-landing/app/robots.ts
@@ -6,7 +6,7 @@ export default function robots(): MetadataRoute.Robots {
{
userAgent: '*',
allow: '/',
- disallow: ['/dashboard', '/crawl', '/playground', '/monetize'],
+ disallow: ['/playground'],
},
],
sitemap: 'https://satgate.io/sitemap.xml',
diff --git a/satgate-landing/app/sitemap.ts b/satgate-landing/app/sitemap.ts
index 24b4aa47..5fe94d17 100644
--- a/satgate-landing/app/sitemap.ts
+++ b/satgate-landing/app/sitemap.ts
@@ -11,10 +11,10 @@ const baseUrl = 'https://satgate.io';
const staticRoutes: SitemapEntry[] = [
{ path: '', lastModified: '2026-05-05', changeFrequency: 'weekly', priority: 1.0 },
- { path: '/govern', lastModified: '2026-06-01', changeFrequency: 'weekly', priority: 0.9 },
+ { path: '/govern', lastModified: '2026-06-10', changeFrequency: 'weekly', priority: 0.9 },
{ path: '/economic-firewall', lastModified: '2026-05-09', changeFrequency: 'weekly', priority: 0.9 },
- { path: '/agent-authority-layer', lastModified: '2026-05-14', changeFrequency: 'weekly', priority: 0.95 },
- { path: '/partners/rails', lastModified: '2026-05-14', changeFrequency: 'weekly', priority: 0.85 },
+ { path: '/agent-authority-layer', lastModified: '2026-06-10', changeFrequency: 'weekly', priority: 0.95 },
+ { path: '/partners/rails', lastModified: '2026-06-10', changeFrequency: 'weekly', priority: 0.85 },
{ path: '/policy-to-proof', lastModified: '2026-05-10', changeFrequency: 'weekly', priority: 0.95 },
{ path: '/stripe-link-agents-vs-satgate', lastModified: '2026-05-02', changeFrequency: 'weekly', priority: 0.9 },
{ path: '/agent-payment-controls', lastModified: '2026-05-02', changeFrequency: 'weekly', priority: 0.9 },
@@ -36,7 +36,7 @@ const staticRoutes: SitemapEntry[] = [
{ path: '/accept-satgate-capabilities', lastModified: '2026-05-13', changeFrequency: 'weekly', priority: 0.9 },
{ path: '/capability-auth', lastModified: '2026-05-08', changeFrequency: 'weekly', priority: 0.95 },
{ path: '/agent-control-plane', lastModified: '2026-05-05', changeFrequency: 'weekly', priority: 0.9 },
- { path: '/evidence-pack-demo', lastModified: '2026-05-10', changeFrequency: 'weekly', priority: 0.95 },
+ { path: '/evidence-pack-demo', lastModified: '2026-06-10', changeFrequency: 'weekly', priority: 0.95 },
{ path: '/revocable-agent-credentials', lastModified: '2026-05-02', changeFrequency: 'monthly', priority: 0.85 },
{ path: '/agent-capability-tokens', lastModified: '2026-05-10', changeFrequency: 'weekly', priority: 0.9 },
{ path: '/capability-lifecycle-demo', lastModified: '2026-05-10', changeFrequency: 'weekly', priority: 0.9 },
@@ -68,9 +68,7 @@ const staticRoutes: SitemapEntry[] = [
{ path: '/compare/langfuse', lastModified: '2026-05-04', changeFrequency: 'monthly', priority: 0.7 },
{ path: '/compare/cloud-native', lastModified: '2026-05-02', changeFrequency: 'monthly', priority: 0.7 },
{ path: '/protect', lastModified: '2026-05-03', changeFrequency: 'monthly', priority: 0.7 },
- { path: '/crawl', lastModified: '2026-05-03', changeFrequency: 'monthly', priority: 0.7 },
{ path: '/pay', lastModified: '2026-05-03', changeFrequency: 'monthly', priority: 0.7 },
- { path: '/monetize', lastModified: '2026-05-03', changeFrequency: 'monthly', priority: 0.7 },
{ path: '/mint-demo', lastModified: '2026-05-03', changeFrequency: 'monthly', priority: 0.7 },
{ path: '/sandbox', lastModified: '2026-05-03', changeFrequency: 'monthly', priority: 0.7 },
{ path: '/roi-calculator', lastModified: '2026-05-05', changeFrequency: 'monthly', priority: 0.8 },
@@ -86,7 +84,6 @@ const staticRoutes: SitemapEntry[] = [
{ path: '/tools', lastModified: '2026-05-03', changeFrequency: 'weekly', priority: 0.8 },
{ path: '/seo-distribution-kit', lastModified: '2026-05-03', changeFrequency: 'monthly', priority: 0.5 },
{ path: '/design-partners', lastModified: '2026-05-02', changeFrequency: 'monthly', priority: 0.6 },
- { path: '/dashboard', lastModified: '2026-05-03', changeFrequency: 'monthly', priority: 0.6 },
{ path: '/agents', lastModified: '2026-05-04', changeFrequency: 'monthly', priority: 0.6 },
{ path: '/privacy', lastModified: '2026-05-05', changeFrequency: 'yearly', priority: 0.3 },
{ path: '/terms', lastModified: '2026-05-05', changeFrequency: 'yearly', priority: 0.3 },
@@ -121,7 +118,7 @@ const blogRoutes: SitemapEntry[] = [
{ path: '/blog/l402-protocol-explained', lastModified: '2026-05-04', changeFrequency: 'monthly', priority: 0.8 },
{ path: '/blog/zero-trust-for-ai-agents', lastModified: '2026-05-04', changeFrequency: 'monthly', priority: 0.8 },
{ path: '/blog/start-at-1-credit-economic-policy', lastModified: '2026-05-04', changeFrequency: 'monthly', priority: 0.8 },
- { path: '/blog/how-to-add-budget-limits-to-openai-api-calls', lastModified: '2026-06-01', changeFrequency: 'monthly', priority: 0.8 },
+ { path: '/blog/how-to-add-budget-limits-to-openai-api-calls', lastModified: '2026-06-10', changeFrequency: 'monthly', priority: 0.8 },
{ path: '/blog/cursor-mcp-proxy-setup-guide', lastModified: '2026-05-04', changeFrequency: 'monthly', priority: 0.8 },
];
diff --git a/satgate-landing/app/stripe-link-agents-vs-satgate/page.tsx b/satgate-landing/app/stripe-link-agents-vs-satgate/page.tsx
index 57e97368..32c0658f 100644
--- a/satgate-landing/app/stripe-link-agents-vs-satgate/page.tsx
+++ b/satgate-landing/app/stripe-link-agents-vs-satgate/page.tsx
@@ -3,7 +3,7 @@ import { ArrowRight, CheckCircle2, CreditCard, Gauge, KeyRound, ShieldCheck, Wal
export const metadata = {
title: 'Stripe Link for Agents vs SatGate',
- description: 'Compare Stripe Link for Agents and SatGate: agent wallets and payment credentials vs request-path economic control, budgets, audit, and L402.',
+ description: 'Compare Stripe Link for Agents and SatGate: payment credentials vs request-path economic control, budgets, Evidence Packs, and L402.',
alternates: { canonical: 'https://satgate.io/stripe-link-agents-vs-satgate' },
keywords: [
'Stripe Link for Agents vs SatGate',
@@ -17,7 +17,7 @@ export const metadata = {
],
openGraph: {
title: 'Stripe Link for Agents vs SatGate',
- description: 'Stripe Link can provide payment credentials and approval flows. SatGate controls what agents may access, spend, meter, delegate, and monetize before upstream API calls execute.',
+ description: 'Stripe Link handles payment credentials. SatGate governs what agents may access, spend, meter, delegate, and monetize before execution.',
url: 'https://satgate.io/stripe-link-agents-vs-satgate',
type: 'article',
},
diff --git a/satgate-landing/scripts/internal_link_audit.py b/satgate-landing/scripts/internal_link_audit.py
index 3d3af93e..d07d1722 100644
--- a/satgate-landing/scripts/internal_link_audit.py
+++ b/satgate-landing/scripts/internal_link_audit.py
@@ -235,6 +235,10 @@ def audit_jsonld_freshness() -> tuple[int, list[tuple[str, str]]]:
return scanned, missing
+def is_redirect_only_page(text: str) -> bool:
+ return "next/navigation" in text and "redirect(" in text
+
+
def app_route_for_page(file_path: Path) -> str:
relative = file_path.relative_to(APP)
route_parts = relative.parts[:-1]
@@ -249,6 +253,8 @@ def audit_canonicals() -> tuple[int, list[tuple[str, str]]]:
for file_path in sorted(APP.glob("**/page.tsx")):
text = file_path.read_text(errors="ignore")
+ if is_redirect_only_page(text):
+ continue
match = CANONICAL_RE.search(text)
if not match:
continue
@@ -347,6 +353,8 @@ def audit_canonicals_in_sitemap() -> tuple[int, list[tuple[str, str]]]:
for file_path in sorted(APP.glob("**/page.tsx")):
text = file_path.read_text(errors="ignore")
+ if is_redirect_only_page(text):
+ continue
match = CANONICAL_RE.search(text)
if not match:
continue
diff --git a/satgate-landing/seo/reports/opportunities.json b/satgate-landing/seo/reports/opportunities.json
index ac9b1f58..abcae221 100644
--- a/satgate-landing/seo/reports/opportunities.json
+++ b/satgate-landing/seo/reports/opportunities.json
@@ -1,5 +1,5 @@
{
- "generatedAt": "2026-06-04T13:29:38.773790Z",
+ "generatedAt": "2026-06-10T04:53:34.178176Z",
"items": [
{
"path": "/blog/how-to-add-budget-limits-to-openai-api-calls",
diff --git a/satgate-landing/seo/reports/opportunities.md b/satgate-landing/seo/reports/opportunities.md
index b804e741..3e3abde0 100644
--- a/satgate-landing/seo/reports/opportunities.md
+++ b/satgate-landing/seo/reports/opportunities.md
@@ -1,6 +1,6 @@
# SatGate SEO Machine Report
-Generated: 2026-06-04T13:29:38.774837Z
+Generated: 2026-06-10T04:53:34.179108Z
## Ranked opportunities
diff --git a/satgate-landing/seo/reports/page-audit.json b/satgate-landing/seo/reports/page-audit.json
index 967dcb7a..b6c21ea5 100644
--- a/satgate-landing/seo/reports/page-audit.json
+++ b/satgate-landing/seo/reports/page-audit.json
@@ -1,5 +1,5 @@
{
- "generatedAt": "2026-06-04T13:29:38.774264Z",
+ "generatedAt": "2026-06-10T04:53:34.178654Z",
"items": [
{
"path": "/blog/always-on-agents-economic-authority",
@@ -39,7 +39,7 @@
"TechArticle",
"Thing"
],
- "wordCount": 1491,
+ "wordCount": 1492,
"hasObserveControlProve": true,
"hasEvidencePack": true,
"hasFAQ": true,
@@ -99,17 +99,17 @@
{
"path": "/blog/how-to-add-budget-limits-to-openai-api-calls",
"exists": true,
- "title": "OpenAI API Budget Limits: Hard Caps Before GPT Calls Run",
- "titleLength": 56,
- "metaDescription": "Set OpenAI API budget limits by agent, team, or workflow. Enforce hard caps before GPT calls execute and preserve Evidence Pack proof.",
- "metaDescriptionLength": 134,
+ "title": "OpenAI API Budget Limits: Prevent Runaway GPT Spend",
+ "titleLength": 51,
+ "metaDescription": "Set OpenAI API budget limits by agent, team, or workflow. Block, downgrade, or route GPT calls before spend exceeds policy, with Evidence Pack receipts.",
+ "metaDescriptionLength": 152,
"canonical": "/blog/how-to-add-budget-limits-to-openai-api-calls",
"h1": [
- "How to Add Hard Budget Limits to OpenAI API Calls"
+ "How to Add OpenAI API Budget Limits Before GPT Calls Run"
],
"h1Count": 1,
"h2s": [
- "The $72,000 Lesson",
+ "The Runaway Spend Lesson",
"Why Traditional Solutions Fail",
"The Solution: Request-Level Budget Enforcement",
"Step 1: Install the Gateway",
@@ -138,12 +138,15 @@
"schemaTypes": [
"Answer",
"FAQPage",
+ "HowTo",
+ "HowToStep",
+ "HowToSupply",
"Organization",
"Question",
"TechArticle",
"Thing"
],
- "wordCount": 1322,
+ "wordCount": 1423,
"hasObserveControlProve": true,
"hasEvidencePack": true,
"hasFAQ": true,
@@ -315,13 +318,13 @@
{
"path": "/govern",
"exists": true,
- "title": "Enterprise AI Agent Governance: Policy-to-Proof Controls",
- "titleLength": 56,
- "metaDescription": "Govern AI agents before execution: Observe usage, Control budgets and access, and Prove decisions with Evidence Packs across APIs, MCP, and paid rails.",
- "metaDescriptionLength": 151,
+ "title": "AI Agent Governance: Policy-to-Proof Controls",
+ "titleLength": 45,
+ "metaDescription": "Govern AI agents before execution with request-path scopes, budgets, revocation, MCP controls, and Evidence Packs across APIs and paid rails.",
+ "metaDescriptionLength": 141,
"canonical": "/govern",
"h1": [
- "Enterprise AI agent governance, from Policy to Proof."
+ "AI Agent Governance from Policy to Proof."
],
"h1Count": 1,
"h2s": [
@@ -363,7 +366,7 @@
"WebPage",
"WebSite"
],
- "wordCount": 1707,
+ "wordCount": 1754,
"hasObserveControlProve": true,
"hasEvidencePack": true,
"hasFAQ": true,
diff --git a/satgate-landing/seo/reports/recommendations.json b/satgate-landing/seo/reports/recommendations.json
index 6f661000..7efd6654 100644
--- a/satgate-landing/seo/reports/recommendations.json
+++ b/satgate-landing/seo/reports/recommendations.json
@@ -1,5 +1,5 @@
{
- "generatedAt": "2026-06-04T13:29:38.774637Z",
+ "generatedAt": "2026-06-10T04:53:34.178940Z",
"items": [
{
"path": "/blog/how-to-add-budget-limits-to-openai-api-calls",
diff --git a/satgate-landing/seo/reports/recommendations.md b/satgate-landing/seo/reports/recommendations.md
index b804e741..3e3abde0 100644
--- a/satgate-landing/seo/reports/recommendations.md
+++ b/satgate-landing/seo/reports/recommendations.md
@@ -1,6 +1,6 @@
# SatGate SEO Machine Report
-Generated: 2026-06-04T13:29:38.774837Z
+Generated: 2026-06-10T04:53:34.179108Z
## Ranked opportunities