Skip to content

/developers

Build with FeedShield

Use the public API, connect agent tools, or inspect how the scan engine and accuracy gates work.

Quick start

Send a store URL to the public scan endpoint. It runs the free scan and returns the result as JSON.

Request

curl -X POST https://feedshield.ai/api/analyze/public \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example-store.com"}'

Example response, truncated. It follows the shape of a real scan, with the store address replaced.

{
  "success": true,
  "data": {
    "url": "https://example-store.com/",
    "complianceScore": 76,
    "totalChecks": 105,
    "passed": 55,
    "warnings": 50,
    "failed": 0,
    "summary": [
      { "category": "policy_pages", "total": 5, "passed": 4, "warnings": 1, "failed": 0, "score": 90 }
    ],
    "topIssues": [
      {
        "name": "Shipping Policy accessible",
        "category": "policy_pages",
        "status": "warning",
        "severity": "warning",
        "message": "Shipping Policy exists at https://example-store.com/policies/shipping-policy, but the page we scanned does not link to it.",
        "howToFix": "Link your shipping policy from the footer of every page, so shoppers and Google's reviewers can reach it in one click.",
        "evidence": [
          {
            "found": "https://example-store.com/policies/shipping-policy",
            "location": "standard policy URL, not linked from the scanned page",
            "expected": "a footer link on every page"
          }
        ]
      }
    ],
    "audit_id": "…",
    "share_url": "https://feedshield.ai/audit/…"
  }
}

Endpoints

The OpenAPI document at /api/openapi is titled "FeedShield Public API".

KindPathReturns
OpenAPI/api/openapiThe public API document.
GET/api/agentEvery machine-readable endpoint.
GET/api/agent/blogBlog content.
GET/api/agent/glossaryGlossary content.
GET/api/agent/compareComparisons content.
GET/api/agent/use-casesUse cases content.
GET/api/agent/authorsAuthors content.
GET/api/agent/case-studiesCase studies content.
GET/api/agent/knowledge-hubKnowledge hub content.
GET/api/agent/servicesPlans and agency tiers generated from the same pricing source as the pricing page.
POST/api/analyze/publicThe free scan result shown in the quick start example.

Agents

MCP

/.well-known/mcp-server.json describes the run-free-audit tool with input storeUrl.

WebMCP

The manifest is at /webmcp.json. Its imperative tools are:

  • feedshield.runFreeAudit
  • feedshield.searchKnowledge
  • feedshield.getPricing
  • feedshield.listPolicyUpdates
  • feedshield.listGlossaryTerms
  • feedshield.listBlogArticles
  • feedshield.compareToCompetitor

The declarative tool is feedshield.openFreeAuditForm. The scan forms on the homepage and /free-audit carry data-webmcp-tool.

Discovery files

  • /agent.json
  • /.well-known/ai-plugin.json
  • /llms.txt
  • /llms-full.txt

Key pages also return Markdown when requested with Accept: text/markdown.

curl -H "Accept: text/markdown" https://feedshield.ai/features

How the scan works

The engine reads a store's public pages the way a shopper's browser does: the homepage, policy pages, a product page, pricing and checkout signals. Checks are grouped in 27 categories, and each scan reports the categories that apply to that store. Findings are pass, warning or fail. Every finding includes evidence describing what was seen and where.

Example category ids from a real response

policy_pages
business_identity
checkout_payment
schema_structured_data
gmc_policy
product_title_quality
availability_display
variant_handling
feed_related

AI output

Fix explanations are written by Claude models through one AI gateway. Paste-ready code snippets are sanitised: no scripts, no Liquid template code and same-site links only.

Policy Watch

A daily job at 09:00 UTC fetches 18 official Google, Shopify and Meta policy pages. It strips Google Help Center page chrome, common cookie-banner text and full dates, then compares the remaining text word by word. Any changed word creates a change record. Paid plans receive an in-app alert quoting the change.

Real example: on 26 Sep 2026, Google changed "Shopping ads" to "Shopping ads and listings" on three Merchant Center policy pages.

How we measure accuracy

An offline accuracy gate replays recorded snapshots of 8 real stores on every pull request in CI. Every finding is hand-labelled as a true risk, false alarm or noise. Each store has a ceiling for false alarms and noise, and that ceiling can only go down.

A separate held-out set of 19 stores is scored against ground truth that was written from an independent crawl and sealed with a SHA-256 hash before any engine output was read.