protogrid

Search / io.companygraph/mental-model

CompanyGraph

R0· no sign-in

CompanyGraph: Written once, read by both

v1.0.0 · active · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality80good
Trust80of 100
Uptime, 30 days100%
Latency p50680 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "mental-model": {
      "type": "http",
      "url": "https://mcp.companygraph.io/mcp"
    }
  }
}
claude mcp add --transport http mental-model https://mcp.companygraph.io/mcp
[mcp_servers.mental-model]
url = "https://mcp.companygraph.io/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mental-model": {
      "type": "remote",
      "url": "https://mcp.companygraph.io/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "mental-model": {
      "type": "http",
      "url": "https://mcp.companygraph.io/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=mental-model&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLmNvbXBhbnlncmFwaC5pby9tY3AifQ%3D%3D"
}
{
  "servers": {
    "mental-model": {
      "type": "http",
      "url": "https://mcp.companygraph.io/mcp"
    }
  }
}
{
  "mcpServers": {
    "mental-model": {
      "httpUrl": "https://mcp.companygraph.io/mcp"
    }
  }
}
extensions:
  "mental-model":
    enabled: true
    name: "mental-model"
    type: streamable_http
    uri: "https://mcp.companygraph.io/mcp"
    timeout: 300

Quality 80 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations14 of 14 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: list_types (destructiveHint, idempotentHint); describe_schema (destructiveHint, idempotentHint); describe_relations (destructiveHint, idempotentHint); …
  • pass
    tools.token_costabout 2,885 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes40 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

14 tools, about 2,885 tokens to load them all · tool set ddf4878cae14 · tools last changed 2026-10-13 · checked 2026-10-19 10:20 UTC

Tool changes

  • diagramchangeddescription, input schema, output schema
    before

    A picture of the model as Mermaid; edge data: list_references. Input: `shape`; `id`, `domain` or `type` narrow it. aggregate, flow, lifecycle take a context's `id`; organization without `id` draws the company; system a landscape, holds its data; usecase, scenario a use case's; requirements a feature's, product's, use case's or requirement's. Returns `mermaid`, `nodes`, `links`, counts. At most 50 nodes.

    after · 90% of words in common

    A picture of the model as Mermaid; edge data: list_references. Input: `shape`; `id`, `domain`, `type` or `unit` narrow it. aggregate, flow, lifecycle take a context's `id`; organization without `id` draws the company; system a landscape, holds its data; usecase, scenario a use case's; requirements a feature's, product's, use case's or requirement's. Returns `mermaid`, `nodes`, `links`, `units`, counts. Max 50 nodes.

  • diagramchangeddescription, input schema, output schema
    before

    A picture of the model as Mermaid; for edge data use list_references. Input: `shape`; `id`, `domain` or `type` narrow it; aggregate, flow and lifecycle take a context's `id`; organization without `id` draws the company; system is a system's landscape, holds its data, both by `id`. Returns `mermaid`, `nodes`, `links`, `title`, `edges`, `omitted`, schema's `everyType`, lifecycle's `transitions`. At most 50 nodes.

    after · 68% of words in common

    A picture of the model as Mermaid; edge data: list_references. Input: `shape`; `id`, `domain` or `type` narrow it. aggregate, flow, lifecycle take a context's `id`; organization without `id` draws the company; system a landscape, holds its data; usecase, scenario a use case's; requirements a feature's, product's, use case's or requirement's. Returns `mermaid`, `nodes`, `links`, counts. At most 50 nodes.

  • diagramchangeddescription, input schema, output schema
    before

    A picture of the model as Mermaid, from edges or schemas. Use to show connections; for edge data use list_references. Input: `shape`; `id`, `domain` or `type` narrow it; aggregate, flow or lifecycle takes a context's `id` for its aggregates; organization without `id` draws the company. Returns `mermaid`, `nodes`, `links`, `title`, `edges`, `omitted`, schema's `everyType`, lifecycle's `transitions`. At most 50 nodes.

    after · 74% of words in common

    A picture of the model as Mermaid; for edge data use list_references. Input: `shape`; `id`, `domain` or `type` narrow it; aggregate, flow and lifecycle take a context's `id`; organization without `id` draws the company; system is a system's landscape, holds its data, both by `id`. Returns `mermaid`, `nodes`, `links`, `title`, `edges`, `omitted`, schema's `everyType`, lifecycle's `transitions`. At most 50 nodes.

  • diagramchangeddescription, input schema, output schema
    before

    A picture of the model as Mermaid, from its edges or its schemas. Use to show connections; for edges as data use list_references. Input: `shape`; `id`, `domain` or `type` narrow it; an aggregate, flow or lifecycle takes a context's id for all its aggregates. Returns `mermaid`, `nodes`, `links`, `title`, `edges`, `omitted`, schema's `everyType`, lifecycle's `transitions`. At most 50 nodes.

    after · 87% of words in common

    A picture of the model as Mermaid, from edges or schemas. Use to show connections; for edge data use list_references. Input: `shape`; `id`, `domain` or `type` narrow it; aggregate, flow or lifecycle takes a context's `id` for its aggregates; organization without `id` draws the company. Returns `mermaid`, `nodes`, `links`, `title`, `edges`, `omitted`, schema's `everyType`, lifecycle's `transitions`. At most 50 nodes.

  • diagramchangedannotations
  • fetchchangedannotations
  • searchchangedannotations
  • find_evidencechangedannotations
  • list_referenceschangedannotations
  • get_entitychangedannotations

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 80 / 100

no-repository
provenance45
liveness100
freshness100
hygiene80

+dns-namespace +reachable +uptime-100% +updated-28d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.companygraph.io/mcp streamable-httpnoneyes100%680 ms2025-11-252026-10-19

Tools (14)

describe_errorsread-onlyWhat a refused call looks like. A tool's output schema covers its answers only, so use this once, to branch on refusals or validate them. No input. Returns `errors`, every `code` with `when` it is raised and the JSON Schema of its `details`, and `schema`, the JSON Schema of a whole refusal: `error` with `code`, `message`, `rule`, `details`, beside `model`.
describe_relationsread-onlyWhat the schemas declare between types: references with form and cardinality, ownership, enums, joins, list kinds. Use for a diagram or audit; for one type's full schema use describe_schema. Optional `type` narrows every list, `direction` (declares, declared-to, both; needs `type`) one side of relations, `via` relations and enums. Returns those lists, with `forms` and `reading` explaining every term. Not paged.
describe_ruleread-onlyOne convention of the vocabulary as written, not a company's own rule (an entity of type `rule`: list_entities, get_entity). Input: `rule`, a number from list_rules such as R9, in either case. Returns `rule`, `title`, `part`, `text` and the file's `url`. An unknown number is refused with the known ones listed.
describe_schemaread-onlyOne type's schema: its sections as written and its declared relations as data. Use to learn what an entity of the type may hold; for the whole vocabulary use describe_relations. Input: `type`. Returns `url`, the schema's own file, `sections`, and `relations`: owner, owns, references both ways, enums, joins and lists.
diagramread-onlyA picture of the model as Mermaid; edge data: list_references. Input: `shape`; `id`, `domain`, `type` or `unit` narrow it. aggregate, flow, lifecycle take a context's `id`; organization without `id` draws the company; system a landscape, holds its data; usecase, scenario a use case's; requirements a feature's, product's, use case's or requirement's. Returns `mermaid`, `nodes`, `links`, `units`, counts. Max 50 nodes.
fetchread-onlyOne entity's page as written. Use to quote or display the source; for structured fields and references use get_entity. Input: `id` or address, from search, list_entities or any reference. Returns `id`, `title`, `type`, `url` and `text`, the Markdown source. Takes no name: search with match "name" finds the id.
find_evidenceread-onlyEvery edge into one skill, grouped by the type of the page that drew it. Use to check a claimed skill against its evidence. Input: `skill`, an id, canonical name or address; optional `limit`, `cursor`. Returns `skill`, `evidence` and `page`; a profile's claim arrives via Skills.Skill with its level, an evidence row via Evidence.Skill. Attributes are verbatim.
get_entityread-onlyOne entity as structured data: fields, sections, tables, references both ways. Use to reason over one; for its page as written use fetch. Input: `id` or address, where its page sits, or `type` and `name`; an ambiguous name is refused with candidate ids. Returns `entity`, by id. Reference lists hold at most 50 edges; `referenceCounts` gives totals, list_references the rest.
list_checksread-onlyThe checks the model's own gate runs, from the checker release this server was built with. Use to see which rules a script enforces and which are left to a reader. No input. Returns `checks`, each with `name`, `rule`, `title` and what it `reports`, a `failure` or a `note` that fails nothing, and `ranBy`. This server runs none of them.
list_entitiesread-onlyEntities with their frontmatter's short facts, in address order or newest first. Use to browse, or for what runs on a date, came last or has a value; to find by words use search. Input: optional `type`, `owner`, `order`, `on`, `by`, `where`, `fields`, `limit`, `cursor`. Returns `entities` with `fields`, and `page`; follow `page.nextCursor` while `page.hasMore`.
list_referencesread-onlyThe model's edges, filtered and paged. Use to inspect one entity's relations or one kind of reference without taking whole entities. Optional `entity` (an id or address), `direction` (out, in, both; needs `entity`), `via`, `type` (the far end's type, or either end's without `entity`), `limit`, `cursor`. Returns `edges`, each `from`, `via`, `to`, `attrs`, and `page`.
list_rulesread-onlyThe vocabulary's conventions the model is held to, R0 onwards, from its core's CONVENTIONS.md. Use to resolve a number a schema or refusal cites, such as R9. A company's own rules are entities of type `rule`: list_entities and get_entity. No input. Returns `tagline`, the file's `url`, and `rules`, each with `rule`, `title` and `part`; describe_rule gives one rule's text.
list_typesread-onlyEvery type the model's schemas declare. Use first, to learn which types exist before listing or describing one. No input. Returns `types`, each with `type`, `name`, `tagline`, `owner` (the type it nests under, or null) and `count`, the entities it holds.
searchread-onlyFind entities by words, substring or exact name. `match: "words"` needs every query word's stem in name, tagline, fields, sections or cells; `"text"` (default) is a case-insensitive substring over the same; `"name"` the exact canonical name. Optional `type`, `owner`, `limit`, `cursor`. Returns `results` with `id`, `title`, `type`, `matched`, `words` in words mode, and `page`: name matches first, then a listing.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.companygraph/mental-model",
  "title": "CompanyGraph",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.companygraph.io/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.0",
  "description": "CompanyGraph: Written once, read by both"
}