Skip to main content

Overview

Ready uses a four-tier verification system to establish trust for businesses in the directory and in MCP server metadata. Higher verification levels improve your directory ranking and signal credibility to AI agents that interact with your business.
Business Verified and Premium Verified tiers are in Beta. Business Verified auto-checks will complete when Google Business Profile (GBP) API integration launches (EP-R07 post-launch). Phone Verified is fully operational.

Verification tiers

Tiers are strictly ordered — you cannot skip a level.

Earning verification

Phone Verified

Complete phone verification from your Ready settings page. Ready sends an SMS code to your registered business phone number. When the code is confirmed, your account is automatically upgraded to phone_verified.

Business Verified

The auto-check runs after phone verification and evaluates:
  1. Account age — your business account must be at least 30 days old
  2. Phone verification — must already be at phone_verified or higher
  3. GBP cross-reference — Google Business Profile match (Beta stub; currently always false but non-blocking)
When criteria 1 and 2 are met, the system upgrades your tier to business_verified automatically.

Premium Verified

Contact ezForge support or use the in-dashboard option to apply. Your business is placed in a manual review queue (premium_review_queued_at is set). A team member reviews and promotes the tier. No automated promotion occurs.

Verification badge

The verification badge appears on your Ready settings page at /ready/settings. It shows:
  • Tier label — color-coded badge (gray → blue → green → purple)
  • Description — what the current tier means
  • Next step — guidance on how to advance to the next tier (hidden at Premium Verified)
  • Stale data warning — if your business hours have not been updated in 90 days, a yellow warning banner is shown

Stale data detection

Ready monitors how recently your business hours were updated. If no update is recorded in the last 90 days, a stale flag is set on your verification record. Stale businesses receive a warning in the dashboard prompting an update. Updating your hours clears the flag automatically.

VerificationLevel type

The VerificationLevel type is the public-facing string representation of a business’s verification tier. It is returned in directory API responses and MCP server metadata.
Mapping from internal tier to VerificationLevel: When no business_verification_levels row exists for a business (pre-migration records), the system falls back to checking the phone_verifications table. A confirmed phone record maps to phone_verified; no record maps to unverified.

business_verification_levels schema

One row per business. Created on first verification activity; upsertBusinessVerificationLevel inserts a default unverified row if none exists. Indexes: business_verification_levels_tier_idx on tier (used by directory filter queries). Hub listing sync: On every tier upgrade, the integer value of the new tier (1–4) is mirrored into hub_listings.verification_tier for Typesense rank-score computation. This write is best-effort — hub listing failure does not block the tier upgrade.

getBusinessTrustSignals

Returns a concise set of trust signals for a business, suitable for inclusion in MCP server metadata. Parameters: Returns:
Throws: NotFoundError when the business does not exist. getBusinessTrustSignals and getMcpServerMetadata are independent utilities — neither calls the other. They surface overlapping signals (accountAgeDays) to different consumers via separate SQL queries. The differences in their output shapes are intentional:
  • staleFlagged is returned by this function for stale-data detection (see Stale data detection) but is not part of the MCP metadata trust signals.
  • profileCompleteness, lastUpdated, and interactionCount appear in the MCP trust signals shape but are not returned by this function — getMcpServerMetadata computes them directly from its own SQL join (profileCompleteness from the business profile record, lastUpdated from the listing row, interactionCount from an analytics count query).
See Directory API for the full MCP response shape.

Directory API integration

Verification level is included in all directory responses (see Directory API):
  • List directoryverificationLevel field on each listing item
  • Get listingverificationLevel field on the detail response
  • MCP server metadatabusiness.verificationLevel plus trust signals: accountAgeDays, profileCompleteness, lastUpdated, interactionCount (see Directory API for full shape)
You can filter the directory by minimum verification level using the min_verification query parameter:

Hub listing sync

When a business’s verification tier is upgraded, the integer equivalent is written to hub_listings.verification_tier: The Hub uses this value in its Typesense rank-score computation. Higher-verified businesses rank higher in Hub search results.