grape.cool
Finalizing the report
Preparing the stored Is Agentic score
grape.cool
Preparing the stored Is Agentic score
grape.cool
These checks describe whether an ordinary agent can enter, read, and operate the public site.
Agents can reach the site
Crawler access and bot defenses.
Core content is available
Useful content remains accessible without a fragile browser-only path.
Navigation fails safely
Redirects and missing pages give agents a recoverable path.
Controls are understandable
Forms and interactive controls expose usable names and structure.
The public website is always evaluated. Optional surfaces appear when the scan finds positive evidence that they apply.
Strong
Weighted across 17 applicable checks
Strong
Weighted across 12 applicable checks
Ready with gaps
Weighted across 3 applicable checks
Ready with gaps
Weighted across 1 applicable check
Critical access gaps come first, followed by other applicable readiness gaps.
Serve at least 500 characters of meaningful homepage content in raw HTML. Add a clear H1, keep deeper heading levels sequential, and remove excessive non-content markup.
Offer a free tier or trial, self-serve API key generation, and a sandbox environment. Agents can't fill out 'contact sales' forms.
Keep authentication enabled. Verify tool listing with an authorized MCP client. This unauthenticated scan cannot establish whether protected tools are missing or unusable.
Checks are grouped by relevance for App sites.
28576 chars with H1, but 3.9% content ratio is below the 5% target
How to pass
Serve at least 500 characters of meaningful homepage content in raw HTML. Add a clear H1, keep deeper heading levels sequential, and remove excessive non-content markup.
Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).
No meta-refresh stubs, JavaScript-redirect stubs, or cross-domain hops across 6 checked pages
All 5 sampled pages are publicly readable (5 with substantive content)
OpenAPI spec found at https://grape.cool/openapi.json (version: 3.1.0)
Canonical URL serves text/markdown and text/html via Accept negotiation with Vary: Accept
OAuth authorization server metadata at https://grape.cool
OAuth security scheme "grapeOAuth" declares 2 named scope(s) in the OpenAPI spec (e.g. notes:read, notes:write)
API returns JSON error responses (404 at https://grape.cool/api/v1 (from OpenAPI servers))
Nonexistent paths return HTTP 404 with markdown guidance for agents - the strongest 404 contract
No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.
Valid sitemap found at https://grape.cool/sitemap.xml with 425 entries
Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (2 blocks)
Pricing page found at /pricing
API/docs link found on homepage and resolves: /developers
All metadata signals present: canonical URL, lang="en", og:image, og:type
Organization schema complete with contactPoint and address
All trust anchor pages verified: About, Contact, Privacy
All 10 measured pages fit an agent context budget (largest ~10K tokens)
REST API documentation found at https://grape.cool/docs. Best-of-protocols score: 7/7.
Verified live: GET https://grape.cool/api/v1/app answered 200 without credentials (zero-auth access). Described but not verified live: free tier available
How to pass
Offer a free tier or trial, self-serve API key generation, and a sandbox environment. Agents can't fill out 'contact sales' forms.
MCP server detected at https://mcp.grape.cool; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.
How to pass
Keep authentication enabled. Verify tool listing with an authorized MCP client. This unauthenticated scan cannot establish whether protected tools are missing or unusable.
The live API operation https://grape.cool/api/v1/app returns IETF RateLimit headers: ratelimit, ratelimit-limit, ratelimit-policy.
OpenAPI defines a typed error schema in components.schemas and 4xx/5xx responses reference it
API versioning strategy found (URL versioning) with Deprecation and Sunset headers documented at https://grape.cool/openapi.json
CLI package found on npm: @grapenotes/cli
100% of operations define typed response schemas, 100% use application/json
REST: agent-friendly schema (34 operations, 100% with operationIds, 100% documented by description or summary)
Compatible: 34/34 ops with IDs, 34/34 with typed schemas
Name search surfaced no pages on grape.cool, although developer resources exist on the site (API docs, OpenAPI spec, auth docs, MCP server) - weak search indexing or transient search noise
How to pass
Check whether your developer resources (API docs, OpenAPI spec, auth docs, developer portal, MCP server, SDK documentation) surface in name-based searches. If they do not, use predictable URLs, link them in llms.txt, and include your product name in page titles and headings. This result reflects one search sample.
NPM package found: @grapenotes/cli - "The official command line tool for Grape, the AI note app. Read, search and write your notes and folders from a terminal, a script or an AI agent."
Agent discovery file found at /agents.md
Structured pricing.md found at /pricing.md (118 lines)
MCP server referenced in llms.txt
RFC 8288 Link header advertises: service-desc, service-doc, alternate(markdown)
Full markdown fallback support. Homepage (https://grape.cool/index.md) and all 3 sampled content pages return markdown: https://grape.cool/agents.md, https://grape.cool/es/ayuda/categoria/enlaces.md, https://grape.cool/es/ayuda/sincronizar-con-dropbox.md
59% of 425 sampled sitemap entries carry lastmod; newest is 0 day(s) old
Found the llms.txt at https://grape.cool/llms.txt.
The llms.txt is well-formatted with markdown links, but at 40,528 characters it exceeds the 30,000-character recommendation for a navigation index.
How to pass
Format your llms.txt as a navigation index: start with a markdown heading, include markdown links to deeper resources, and keep it under 30,000 characters. If you have more to say, move long-form content into /llms-full.txt or per-section files (e.g. /docs/llms.txt, /api/llms.txt) and link to them from the main index.
When-to-use guidance found in llms.txt
Entity linking to github.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)
How to pass
Add sameAs links in your JSON-LD structured data pointing to your Wikipedia page, Wikidata entry, GitHub org, and social profiles. This helps AI disambiguate your brand from similarly named entities.
Some extended schema types found: FAQPage - add 2 more types that match what the homepage shows, for full coverage
How to pass
Add 2 more JSON-LD types that match what your homepage shows. Only add a type where the page shows that content.
All 5 probed llms.txt links resolve to real content
Markdown alternate advertised and verified: https://grape.cool/index.md serves markdown
Code fences balanced across 3 markdown documents
Developer portal found at /developers
Path-suffix markdown docs served with text/markdown content-type: /agents.md, /mcp.md, /developers.md, /index.md
product MCP requires authentication with OAuth metadata discovery
RFC 8414 OAuth metadata for product MCP: issuer=https://grape.cool, auth and token endpoints present; client registration: CIMD (client_id_metadata_document_supported)
OAuth metadata for product MCP supports PKCE S256 code challenge
RFC 9728 metadata at https://mcp.grape.cool: resource=https://mcp.grape.cool, authorization_servers (1), scopes_supported (2), bearer_methods_supported
PRM + AS metadata both present (PRM discovered at https://mcp.grape.cool) but AS metadata has no agent_auth block
How to pass
Publish RFC 9728 protected-resource metadata at /.well-known/oauth-protected-resource on your resource server (the host that actually serves the API, e.g. api.<apex>) with resource and authorization_servers. Publish RFC 8414 authorization-server metadata at /.well-known/oauth-authorization-server on the AS origin, and include the WorkOS auth.md agent_auth block with identity_endpoint, identity_types_supported drawn from the spec enum (anonymous, identity_assertion, service_auth - the assertion variant, the ID-JAG URN urn:ietf:params:oauth:token-type:id-jag, belongs inside identity_assertion.assertion_types_supported, not at the top level), and the identity_assertion.assertion_types_supported block when you advertise that type, so agents can check their assertion shape is accepted before minting. Cross-link by listing the AS origin in PRM authorization_servers, and point agent_auth.skill back at your published /auth.md. Spec: https://github.com/workos/auth.md.
401 at https://mcp.grape.cool at / with spec-shaped WWW-Authenticate hint: Bearer error="invalid_token", error_description="Missing Authorization header", resource_metadata="https://mcp.grape.coo
Offset/page-based pagination found in OpenAPI spec - consider migrating to cursor-based pagination for agent friendliness
How to pass
Use a consistent, documented pagination shape on your list endpoints (cursor-based preferred) and define the pagination fields in your OpenAPI response schemas, so agents can page through results without guessing the shape.
SDK found in npm, additional SDKs mentioned at https://grape.cool/api/v1
How to pass
Publish official SDK packages across multiple language ecosystems (npm, PyPI, Go modules, RubyGems). Auto-generate them from your OpenAPI spec using tools like openapi-generator. For each package set the project URL or homepage to your product domain (package.json repository/homepage, PyPI Home-Page or project_urls, RubyGems homepage_uri) - this is how agents verify the package is your official SDK.
Server HTML is a well-structured document (main=true, landmarks=2/4, h1=1, maxHeadingSkip=1).
81 native controls, 0 non-native div-soup affordances (100% native).
81/81 interactive elements have a computable accessible name (100%).
No hidden instruction text detected in accessibility-tree attributes or off-screen content.
What does grape.cool do and who is it for? Explain it back to me.
Sign me up for Vercel product updates and marketing emails.
Unsubscribe anytime. Privacy Notice
Source: Ora API
What does grape.cool do and who is it for? Explain it back to me.
26 steps10 reasoning steps9 searches
The agent successfully built a comprehensive understanding of Grape by combining website fetches with web search results, assembling information about what Grape does, its pricing, target users, and differentiation. The site itself (Next.js-rendered) was difficult to scrape for full content, so the agent relied on meta descriptions from direct fetches and search snippets to construct the answer; what should have been directly accessible on pricing and features pages had to be inferred or filled in from prior knowledge and search results.