Koskamo

Graviti MCP

Provides an MCP server interface to Graviti's trust infrastructure, allowing agents to access a verified, machine-readable index of product claims with provenance, freshness timestamps, and verification statuses. It enables agents to perform brand scans, check verification standards, and access integrity ledgers for agent-mediated commerce.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Graviti MCP logo, by SingularitiVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Singulariti
MCP endpoint (Streamable HTTP)
https://graviti.thesingulariti.ai/api/mcp
Vendor documentation

What its tools do

7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (1)

7 of 7 have a description · 7 of 7 declare behavior hints · 4 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to thesingulariti.ai ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Access verified product claims and provenance
  • Check brand verification status and audit logs
  • Scan brands for competitor and rank data
  • Verify index integrity via hash-chained ledger

Source and maintenance

Vendor evidenceRegistry 0.2.0
Maintenance checked

Protocol and capabilities

Server
graviti 0.2.0
MCP protocol negotiated in check
2025-11-25
Tools
7 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

7 advertised

match_intent — Match buyer intent to brands
Advertised by the server during the last successful anonymous check.
Advertised read-only

Takes a natural-language buyer question plus optional intent profile; returns recommendations ranked purely by fit score. Verification status is disclosed but never affects rank. Questions outside the verified index return an explicit out-of-scope result (in_index: false), never a guess. Brands without captured evidence (catalog_only) are returned in in_landscape_not_evidenced — listed, never scored, never recommended. Each recommendation carries the brand's site link twice: site_url (raw) and attributed_url (tagged utm_source=graviti + a signed gvt token, so the brand can verify the referral — surface-level only, no user data). Prefer attributed_url when linking. Where the brand publishes a discount code/promotion on its own pages, the entry carries an offers block (code, terms, verbatim-quote receipt, 14-day re-check window) — disclosure only: offers NEVER affect ranking, and a better deal never outranks a better fit.

match_intent input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "question"
  ],
  "properties": {
    "question": {
      "type": "string",
      "description": "The buyer's question, as they phrased it"
    },
    "intent_profile": {
      "enum": [
        "anxious_first_timer",
        "technical_buyer",
        "price_shopper",
        "general"
      ],
      "type": "string",
      "description": "Buyer intent voice; inferred from the question if omitted"
    }
  }
}
match_intent annotations
{
  "title": "Match buyer intent to brands",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_verified_claims — Get claims with provenance for a brand
Advertised by the server during the last successful anonymous check.
Advertised read-only

Structured claims for one brand: provenance URLs, freshness timestamps, corroboration counts, and verification status (verified means the brand pays for auditing — always disclosed). Where captured, includes the specifications block (ingredient/spec disclosure with per-fact provenance) and its info_quality score — a 0–100 measure of disclosure completeness that never influences ranking. Graviti does not assess efficacy or clinical outcomes (not_assessed fence in every block). Claims with confirmation_status 'awaiting_brand_confirmation' are pending the brand's response to a re-verification ask — treat them as unconfirmed, not as violations. Where captured, an offers block lists the brand's published discount codes with receipts and full status history (active / expired / failed_verification) — disclosure only, never a ranking input.

get_verified_claims input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "brand"
  ],
  "properties": {
    "brand": {
      "type": "string",
      "description": "Brand id or name, e.g. 'bioptimizers'"
    }
  }
}
get_verified_claims annotations
{
  "title": "Get claims with provenance for a brand",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
category_landscape — Category comparison table
Advertised by the server during the last successful anonymous check.
Advertised read-only

Comparison-table view of every brand in a category across disclosed attributes, with verification status marked per entry. Entries with captured ingredient/spec data also carry info_quality (0–100 disclosure completeness — transparency, never a rank factor; absent means not yet assessed, not zero). Every row carries evidence_state (audited / sourced / catalog_only); catalog_only rows are landscape presence only — never ranked or recommended. Rows include site_url and attributed_url (utm_source=graviti + signed gvt token — surface-level referral attribution, no user data); prefer attributed_url when linking. Rows with a published, receipt-backed discount code carry an offers array — disclosure only, never a ranking input.

category_landscape input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "category": {
      "type": "string",
      "description": "Category id, e.g. 'magnesium-supplements' or 'cold-plunge'; omit for all categories"
    }
  }
}
category_landscape annotations
{
  "title": "Category comparison table",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_accountability_log — Public accountability log
Advertised by the server during the last successful anonymous check.
Advertised read-only

Public, machine-readable log of every seal lifecycle change: flags, degradations, revocations, and restorations, with dates and reasons — plus confirmation-loop events (event: confirmation_request / confirmation_resolved), where the audit asked a brand to confirm a claim it couldn't re-verify: a visible ask, never a penalty. Also logged: claim_removed (a claim struck from a record, reason public), gap_report_delivered (a paid-tier report delivered to a brand, payment status disclosed — findings and rank never affected), and roster events (brand_added with lane/source, brand_removed, brand_declined, brand_skipped — every future change to who is in the index lands here per brand, reason public). The seal can be lost — a pulled seal is the loudest proof it means something. Payment can fast-track a re-evaluation; it can never change what it finds.

get_accountability_log input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
get_accountability_log annotations
{
  "title": "Public accountability log",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_ledger — Integrity ledger (hash-chained, signed, Bitcoin-anchored)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Append-only version history of the index: each entry commits to the SHA-256 of the canonical index content and the previous entry's hash (rewriting history breaks every hash after it), is Ed25519-signed, and is anchored to Bitcoin via OpenTimestamps. Returns entries plus independent verification instructions. Even Graviti cannot rewrite the record.

get_ledger input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
get_ledger annotations
{
  "title": "Integrity ledger (hash-chained, signed, Bitcoin-anchored)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_gap_report — Brand gap report (brand intelligence)
Advertised by the server during the last successful anonymous check.
Advertised read-only

What stands between a brand and top-of-category: attribute gaps vs the category leader, open flags, cohort blind spots per buyer-intent voice, and the ingredient/spec disclosure dimension — the brand's info_quality score with the exact publishable fixes that would raise it (publishing more truth, not paying Graviti). Demo of the paid brand-intelligence product — computed deterministically from the index; in production also draws on consented, compensated cohort signals (profiles never leave the user's agent). Catalog-only brands (no captured claims) receive an insufficient-evidence report instead of ranks.

get_gap_report input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "brand"
  ],
  "properties": {
    "brand": {
      "type": "string",
      "description": "Brand id or name, e.g. 'bioptimizers'"
    }
  }
}
get_gap_report annotations
{
  "title": "Brand gap report (brand intelligence)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
report_conversion — Report an attributed conversion (demo stub)
Advertised by the server during the last successful anonymous check.

Appends one attributed-transaction event to a log — the demo stub of the pay-on-real-acquisition loop. It moves no money, calls no external service, and never deletes or overwrites anything; the response states where (and whether) the event was persisted on this transport. Payment only ever flows on real transactions, never on impressions or rank. Optionally pass the gvt attribution token from the recommendation link that led to the purchase: it is verified against the published Ed25519 key and recorded with the event as verifiable provenance of the originating recommendation. Optionally pass offer_code if the buyer used a published code from the index's offers block, so deal-driven conversions are attributable — recorded as reported, never a rank input.

report_conversion input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "brand_id",
    "conversation_id",
    "agent_platform",
    "order_value_usd"
  ],
  "properties": {
    "gvt": {
      "type": "string",
      "description": "Optional: the gvt token from the attributed_url of the originating recommendation (gvt1.<surface>.<category>.<brand>.<date>.<sig>) — binds this conversion to a verifiable recommendation surface"
    },
    "brand_id": {
      "type": "string"
    },
    "offer_code": {
      "type": "string",
      "description": "Optional: the published offer code the buyer applied (from the recommendation's offers block), e.g. 'WELCOME15' — attributes the conversion to a captured deal"
    },
    "agent_platform": {
      "type": "string",
      "description": "e.g. 'claude', 'chatgpt', 'perplexity'"
    },
    "conversation_id": {
      "type": "string",
      "description": "Opaque id for the agent conversation that led to purchase"
    },
    "order_value_usd": {
      "type": "number",
      "exclusiveMinimum": 0
    }
  }
}
report_conversion annotations
{
  "title": "Report an attributed conversion (demo stub)",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-07: 1 of 1 checks answered
  2. 2026-11-09: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
408 ms
95th percentile latency
408 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 408 ms · metadata changed · 7 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http graviti-mcp https://graviti.thesingulariti.ai/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add graviti-mcp --url https://graviti.thesingulariti.ai/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable graviti-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "graviti-mcp": {
      "url": "https://graviti.thesingulariti.ai/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "graviti-mcp": {
      "type": "streamableHttp",
      "url": "https://graviti.thesingulariti.ai/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start graviti-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "graviti-mcp": {
      "type": "http",
      "url": "https://graviti.thesingulariti.ai/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http graviti-mcp https://graviti.thesingulariti.ai/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://graviti.thesingulariti.ai/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "graviti-mcp": {
      "serverUrl": "https://graviti.thesingulariti.ai/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Graviti MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Graviti MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing