/schema

Manifest schema v0.4.0 · the shape of every service record in MongoDB

$ structure

Every service is a ServiceManifest document in MongoDB. Four mandatory top-level zones:

  • canonical_factsVerifiable data: name, URLs, pricing, SDK packages.
  • normalized_profileInterpreted characteristics: domains, capabilities, frameworks, auth methods.
  • editorialOpinionated content: tagline, limitations, best/worst for.
  • trustData provenance: verification status, freshness risk, sources, review dates.

Plus optional: human (dashboard/status/community URLs) and implementation (integration time estimates).

$ full schema (TypeScript shape)

interface ServiceManifest {
  service_id: string;                    // URL-safe unique identifier. Stable — never rename.

  canonical_facts: {
    name: string;                        // Human-readable service name
    url: string;                         // Primary service URL
    docs: string;                        // API documentation URL
    github?: string;                     // GitHub repo URL
    has_mcp_server?: boolean;
    has_open_api_spec?: boolean;
    sdk_packages?: Record<string, string>; // lang → package name
    pricing?: {
      model: string[];                   // e.g. ["usage_based", "free_tier"]
      free_tier_summary?: string;
      paid_starts_at?: string;
      notes?: string;
      provenance?: { source: string; accessed_at: string; note?: string };
    };
  };

  normalized_profile: {
    primary_domains: Domain[];           // At least one required
    capabilities: Record<string, {
      state: SupportState;               // See support states below
      note?: string;
    }>;
    auth_methods?: string[];             // e.g. ["api_key", "oauth2", "jwt"]
    social_providers?: string[];
    protocols?: string[];                // e.g. ["rest", "graphql", "webhooks"]
    output_formats?: string[];
    payment_methods?: string[];
    sdk_frameworks: {
      frontend_web: string[];
      fullstack_web: string[];
      backend: string[];
      native_mobile: string[];
      low_code: string[];
      community: string[];
    };
    compliance: string[];                // e.g. ["SOC2", "GDPR", "PCI_DSS"]
    business_model_fit: BusinessModel[]; // "b2c" | "b2b" | "b2b2c" | "internal_workforce"
  };

  editorial: {
    tagline?: string;
    differentiators: string[];
    limitations: string[];
    best_for?: string;
    worst_for?: string;
    editorial_confidence?: string;
    editorial_confidence_note?: string;
  };

  trust: {
    manifest_version: string;            // "0.4.0"
    taxonomy_version: string;            // "0.1.0"
    created_at: string;                  // ISO date
    last_reviewed_at: string;            // ISO date
    last_source_checked_at: string;      // ISO date
    review_method: ReviewMethod;
    freshness_risk: FreshnessRisk;
    verification_status: VerificationStatus;
    sources: Array<{
      url: string;
      type: SourceType;
      accessed_at: string;
    }>;                                  // min 1 required
  };

  // Optional sections
  human?: {
    dashboard?: string;
    status_page?: string;
    changelog?: string;
    community?: string;
  };

  implementation?: {
    quickstart_link?: string;
    estimated_integration_hours?: number;
    typical_stack_position?: string;
    migration_difficulty?: string;
  };
}

$ support states

Used in normalized_profile.capabilities[*].state. Ordered best → worst for discovery filtering.

0native

First-class support, documented and maintained by the provider.

1partial

Supported but with notable gaps or limitations.

2beta

Available but not yet stable — may change.

3workaround

Achievable via unofficial methods or manual steps.

4third_party

Requires a third-party integration, not built-in.

5deprecated

Was supported, now being phased out.

6unsupported

Not available. No known path to support.

$ verification status

Used in trust.verification_status. Represents how thoroughly the manifest has been validated.

0initial_draft

First-pass manifest. Agent-generated from public docs. Not independently verified.

1agent_verified

Verified by automated agents against live APIs or official documentation.

2cross_referenced

Validated across multiple independent sources.

3provider_confirmed

Reviewed and confirmed by the service provider directly.

$ freshness risk

Used in trust.freshness_risk. How likely the data is to have drifted from reality.

low

Stable APIs and pricing — unlikely to have changed.

medium

May have changed — verify before relying on specifics.

high

Fast-moving service — treat data as approximate.

stale

Known to be out of date. Needs re-review.

$ domains

Used in normalized_profile.primary_domains and as filters in POST /v1/discover.

auth_identitypayments_billingdatabasehosting_deploymentfrontend_frameworkbackend_frameworkemail_messaginganalytics_monitoringfile_storagesearchcms_contentinfrastructuredeveloper_tools