Is sajjad.me AI agent ready? F · 34/100

sajjad.me

Next.js · 60% confidenceE-COMMERCE
https://sajjad.me/
F34 / 100
Grade F · Level 2ReadableFailing — your site is largely invisible to AI agents.
Why we think this is Next.js (2 signals)
  • · hosted on Vercel
  • · /_next/static/ asset
9 checks need fixing

7 failed · 2 partial out of 14 that apply to your site.

See top fixes

Fix automatically with AIScan

9 open checks (7 failing) can be handed to an AI agent: D1, D3, C1, C3, B2, P1, P4, M4, E2. Pick one route — each returns the full, check-by-check instructions.

Option A — Agent Skill (any runtime)
npx add-skill https://aiscan.site/aiscan-skill.json

Then ask your agent: “Fix the failing AI readiness checks for https://sajjad.me/.

Option B — Claude Code (CLAUDE.md)
curl -o CLAUDE.md https://aiscan.site/CLAUDE.md

Drop it in your project root, then ask Claude Code to fix the failing AIScan checks.

Option C — MCP client
https://aiscan.site/api/mcp

Tools: scan_website, get_fixes, get_grade. Call get_fixes { "url": "https://sajjad.me/" }.

Option D — REST API
curl -s 'https://aiscan.site/api/public/scan?url=https%3A%2F%2Fsajjad.me%2F'

Returns every check with its complete fix guide.

Verify: Re-scan at https://aiscan.site after applying fixes, or run npx aiscan-cli https://sajjad.me/. Individual checks that need a specific probe list it in their own guide.

Quick Wins

Top 3 fixes ranked by score impact

  • 01Fail

    Markdown content negotiation

    +8 pts if fixed

    Serve text/markdown when the client sends Accept: text/markdown, or publish /index.md.

    See full details
  • 02Fail

    Machine-readable pricing

    +6 pts if fixed

    Publish schema.org Offer / AggregateOffer JSON-LD on your pricing page with price, priceCurrency and the billing period, so an agent can answer "what does this cost?" without scraping prose.

    See full details
  • 03Fail

    Explicit AI bot rules

    +5 pts if fixed

    Add explicit allow/deny rules for GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.

    See full details
Hand-off prompt for your coding agent9 issues
# Agent-readiness remediation brief

Site: https://sajjad.me/
Platform: nextjs (60% confidence)
AIScan score: 34/100 — Level 2 (Readable)
Rubric: v2026.08.2

## Failing checks (sorted by weight)
- **[C1] Markdown content negotiation** — FAIL
  - Evidence: Accept: text/markdown → 200 (text/html; charset=utf-8)
  - Fix: Serve text/markdown when the client sends Accept: text/markdown, or publish /index.md.
- **[D1] robots.txt present & sane** — PARTIAL
  - Evidence: 200 OK, 22 bytes
  - Fix: Serve a non-blocking /robots.txt that references your Sitemap.
- **[M4] Machine-readable pricing** — FAIL
  - Evidence: no pricing page found and no JSON-LD Offer on the homepage
  - Fix: Publish schema.org Offer / AggregateOffer JSON-LD on your pricing page with price, priceCurrency and the billing period, so an agent can answer "what does this cost?" without scraping prose.
- **[B2] Explicit AI bot rules** — FAIL
  - Evidence: 0 known AI agent(s) addressed in robots.txt
  - Fix: Add explicit allow/deny rules for GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.
- **[C3] Structured HTML (title, meta, JSON-LD, single H1)** — PARTIAL
  - Evidence: h1: 1, title: true, meta description: true, JSON-LD: false
  - Fix: Ensure a single <h1>, <title>, meta description, and schema.org JSON-LD.
- **[P1] API Catalog (RFC 9727)** — FAIL
  - Evidence: 404 at /.well-known/api-catalog
  - Fix: Publish /.well-known/api-catalog linking to your OpenAPI descriptions.
- **[P4] OAuth discovery metadata** — FAIL
  - Evidence: auth-server: 404, protected-resource: 404
  - Fix: Publish RFC 8414 / RFC 9728 metadata at the /.well-known/oauth-* endpoints.
- **[D3] Link header for discovery** — FAIL
  - Evidence: no Link header or <link> tag
  - Fix: Add a Link response header or HTML <link rel="api-catalog"|"describedby"> tag.
- **[E2] Machine-readable API description** — FAIL
  - Evidence: no /openapi.json, /api/openapi.json or swagger document found
  - Fix: Publish an OpenAPI 3.1 document at /openapi.json and reference it from /.well-known/api-catalog as a service-desc link.

## General guidance
- Static-first: `robots.txt`, `llms.txt`, `/.well-known/*` JSON cards.
- Markdown negotiation: serve `text/markdown` when requested via `Accept` header or `?format=md`.
- Bot access: explicit allow/deny per AI user-agent (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, Bytespider, Amazonbot, CCBot, meta-externalagent, cohere-ai, Diffbot).
- Capabilities: publish an MCP server card and (optionally) an Agent Skills manifest even if the runtime isn't live — discovery first.
- Re-scan at aiscan.site after deploying.

How this score is calculated

Every check earns points against a weight. We divide the points you earned by the points that actually apply to a Next.js — so checks that don't apply never drag you down.

Essential
23 / 31 pts

Baseline every site should meet.

Recommended
6 / 34 pts

Strong signals most sites benefit from.

Bonus earned
0 signals

Emerging standards. Can only add points.

Not counted (7): B1, B3, P2, P3, M1, M3, E5 — either not applicable to this site profile or optional and not yet adopted. Expand any check to see the exact evidence we based it on.

Discoverability

76

Can agents find your pages? robots, sitemaps, llms.txt.

311
  • Your site is missing this right now, so AI agents can't use it. The fix below is what to change.

    ID · D3

    What we found

    no Link header or <link> tag

    How to fix it

    Add a Link response header or HTML <link rel="api-catalog"|"describedby"> tag.

    Add a Link response header

    Set this header on your homepage and/or root document. Most CDNs (Cloudflare, Vercel, Netlify) support response-header rules.

    Example

    Link: </.well-known/api-catalog>; rel="api-catalog"

Content

59

Can agents read your content cleanly? Markdown, structured data.

211
  • Your site is missing this right now, so AI agents can't use it. The fix below is what to change.

    ID · C1

    What we found

    Accept: text/markdown → 200 (text/html; charset=utf-8)

    How to fix it

    Serve text/markdown when the client sends Accept: text/markdown, or publish /index.md.

    Serve text/markdown on Accept negotiation

    When a client sends Accept: text/markdown, return a markdown rendering of the same content. The simplest path is to publish parallel .md files (e.g. /about/about.md) and rewrite based on the Accept header.

    Test it

    curl -H "Accept: text/markdown" https://yoursite.com/

Bot Access

0

Are AI crawlers explicitly allowed or blocked?

1
  • Your site is missing this right now, so AI agents can't use it. The fix below is what to change.

    ID · B2

    What we found

    0 known AI agent(s) addressed in robots.txt

    How to fix it

    Add explicit allow/deny rules for GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.

    Add explicit User-agent blocks

    Don't rely on User-agent: * alone. Address each major AI crawler so your policy is unambiguous.

    Recommended block

    User-agent: GPTBot
    Allow: /
    
    User-agent: ClaudeBot
    Allow: /
    
    User-agent: PerplexityBot
    Allow: /
    
    User-agent: Google-Extended
    Allow: /
    
    User-agent: Applebot-Extended
    Allow: /

Capabilities

0

Can agents do things? APIs, auth, MCP, Agent Skills.

3
  • Your site is missing this right now, so AI agents can't use it. The fix below is what to change.

    ID · P1

    What we found

    404 at /.well-known/api-catalog

    How to fix it

    Publish /.well-known/api-catalog linking to your OpenAPI descriptions.

    Publish an API catalog (RFC 9727)

    # Add to your homepage HTTP response headers
    Link: </.well-known/api-catalog>; rel="api-catalog"
    
    # And serve a JSON document at /.well-known/api-catalog:
    {
      "links": [
        { "href": "/openapi.json", "rel": "service-desc", "type": "application/openapi+json" }
      ]
    }
  • Your site is missing this right now, so AI agents can't use it. The fix below is what to change.

    ID · P4

    What we found

    auth-server: 404, protected-resource: 404

    How to fix it

    Publish RFC 8414 / RFC 9728 metadata at the /.well-known/oauth-* endpoints.

    Publish OAuth discovery metadata

    If your API supports OAuth, serve RFC 8414 metadata at /.well-known/oauth-authorization-server and/or RFC 9728 at /.well-known/oauth-protected-resource.

  • Your site is missing this right now, so AI agents can't use it. The fix below is what to change.

    ID · E2

    What we found

    no /openapi.json, /api/openapi.json or swagger document found

    How to fix it

    Publish an OpenAPI 3.1 document at /openapi.json and reference it from /.well-known/api-catalog as a service-desc link.

    Publish an OpenAPI 3.1 description

    Serve it at /openapi.json (or /openapi.yaml). Describe every public endpoint, its parameters, and its response schema.

    Advertise it

    Reference it from /.well-known/api-catalog as a service-desc link and from a Link response header.

    Link: </openapi.json>; rel="service-desc"; type="application/json"

    Content sites can skip this

    If you expose no programmatic API, this check is informational and costs you nothing.

Commerce

0

Can agents transact? Catalogs, checkout, agentic commerce.

1
  • Your site is missing this right now, so AI agents can't use it. The fix below is what to change.

    ID · M4

    What we found

    no pricing page found and no JSON-LD Offer on the homepage

    How to fix it

    Publish schema.org Offer / AggregateOffer JSON-LD on your pricing page with price, priceCurrency and the billing period, so an agent can answer "what does this cost?" without scraping prose.

    Add Offer JSON-LD to your pricing page

    One block per plan (or one AggregateOffer covering the range) so an agent can answer "what does this cost?" without reading prose.

    Example

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Product",
      "name": "Pro",
      "offers": {
        "@type": "Offer",
        "price": "12.00",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "12.00",
          "priceCurrency": "USD",
          "billingDuration": 1,
          "billingIncrement": 1,
          "unitCode": "MON"
        },
        "availability": "https://schema.org/InStock",
        "url": "https://example.com/pricing"
      }
    }
    </script>

    Keep it truthful

    The structured price must match the price a human sees; agents will quote it.

Share the result

Share as a social image

Download a 1200×630 social card or post straight to X, LinkedIn or Facebook — sized for every feed.

AIScan share card — sajjad.me graded F

Tip: for X and LinkedIn, upload the downloaded PNG with your post so the card shows in the feed. Posts that include just the link will still preview AIScan.site.

Showcase your grade

Embed your AIScan badge

Drop this badge into your site footer, GitHub README, or docs. It links back to a fresh scan of sajjad.me on AIScan.site.

AIScan.site grade F
HTML
<!-- AIScan.site agent-readiness badge -->
<a href="https://aiscan.site/?u=https%3A%2F%2Fsajjad.me%2F" target="_blank" rel="noopener" title="Agent-Readiness Grade F (34/100) — AIScan.site">
  <img src="https://aiscan.site/api/public/badge.svg?score=34&grade=F&host=sajjad.me" alt="AIScan.site Grade F — 34/100" width="240" height="64" loading="lazy" />
</a>
Markdown
[![AIScan.site Grade F — 34/100](https://aiscan.site/api/public/badge.svg?score=34&grade=F&host=sajjad.me)](https://aiscan.site/?u=https%3A%2F%2Fsajjad.me%2F)

Create a free account to track this site over time

  • Save scan history
  • See score trends
  • Re-scan anytime

Dig deeper

Scan any site from Telegram
Open in Telegram
Free · No signup · ~20 seconds

Scan your own site

Get a plain-English agent-readiness report you can hand straight to ChatGPT or Claude.

Or browse the community feed to see what others have scanned.