Gravitate MCP
An MCP server providing bilingual dating photo guidance, fictional profile examples, curated shoot plans, and transparent scoring calculations based on supplied observations. It does not process images or perform AI inference, serving as a resource for agents to access published guides and methodological tools.
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.
https://joingravitate.com/mcpWhat you can do with it
- Retrieve published dating guides and photo selection methods
- Generate fictional profile examples for single dads or daters
- Calculate photo presentation scores from supplied observations
- Prepare curated photo shoot plans based on context
Source and maintenance
Protocol and capabilities
- Server
- gravitate 0.2.0
- MCP protocol
- 2025-06-18
- Tools
- 6 advertised
- Resources
- 36 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
get_photo_guidance — Gravitate photo guidance
Free; no account, payment or Gravitate credits. Use when choosing dating-profile photos, understanding the Gravitate rubric, or asking about authentic image improvements. Retrieves published English/French guidance with a source URL. Choose methodology before supplying ranks. Does not inspect images or provide general relationship/reconciliation advice.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"topic"
],
"properties": {
"topic": {
"enum": [
"rating",
"methodology",
"example",
"attractiveness",
"principles",
"developers"
],
"type": "string"
},
"locale": {
"enum": [
"en",
"fr"
],
"type": "string",
"default": "en",
"description": "Response language: English or French."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}build_photo_shoot_plan — Plan dating-profile photos
Free; no account, payment or Gravitate credits. Use when a user wants a practical 15, 30 or 60 minute dating-photo shoot plan. Tailors curated advice to stated single-dad/returning-to-dating context, setting and photographer. No image generation, bookings, or inference about the user's identity.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"persona",
"minutes",
"setting",
"photographer"
],
"properties": {
"locale": {
"enum": [
"en",
"fr"
],
"type": "string",
"default": "en",
"description": "Response language: English or French."
},
"minutes": {
"enum": [
"15",
"30",
"60"
],
"type": "string",
"description": "Available shoot time in minutes."
},
"persona": {
"enum": [
"single_dad",
"returning_to_dating",
"general"
],
"type": "string",
"description": "Choose only a context the user has stated; do not infer parental status or age from an image."
},
"setting": {
"enum": [
"home",
"outdoors",
"both"
],
"type": "string"
},
"photographer": {
"enum": [
"friend",
"self_timer"
],
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}score_photo_observations — Calculate photo-presentation scores
Free; no account, payment or Gravitate credits. Use only with explicitly supplied 1–4 ranks for craft, face visibility/expression, pose, setting and signal, after reading the methodology. Calculates gravitate-v1 totals and caps for 1–6 anonymous observations. Accepts no images/URLs; performs no vision or AI inference. Does not measure beauty, age, identity, attraction percentiles or match probability. Never invent ranks from a request without observations.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"observation_source",
"photos"
],
"properties": {
"locale": {
"enum": [
"en",
"fr"
],
"type": "string",
"default": "en",
"description": "Response language: English or French."
},
"photos": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"ranks",
"subject_present",
"visual_defect"
],
"properties": {
"label": {
"type": "string",
"pattern": "^[A-F]$",
"description": "An anonymous label A–F, never a name, URL or identifier."
},
"ranks": {
"type": "object",
"required": [
"craft",
"face",
"pose",
"setting",
"signal"
],
"properties": {
"face": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"pose": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"craft": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"signal": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"setting": {
"type": "integer",
"maximum": 4,
"minimum": 1
}
},
"description": "Use the published rubric: 1 poor, 2 usable, 3 good, 4 excellent. Rank face visibility/expression, never facial beauty.",
"additionalProperties": false
},
"visual_defect": {
"type": "boolean",
"description": "A clearly visible rendering/artifact defect; true caps the score at 60."
},
"subject_present": {
"type": "boolean",
"description": "Whether the profile owner is visible; false caps the score at 25."
}
},
"additionalProperties": false
},
"maxItems": 6,
"minItems": 1
},
"observation_source": {
"enum": [
"human",
"assistant",
"illustrative"
],
"type": "string",
"description": "Who assigned these ranks. Assistant observations are the calling assistant's judgment, not Gravitate image analysis."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_service_status — Check Gravitate availability
Free; no account, payment or Gravitate credits. Use when checking whether Gravitate can analyze photos, generate images, accept payments, or provide guidance. Returns actual enabled capabilities, free pricing and current limits. Does not enable paused services.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"locale": {
"enum": [
"en",
"fr"
],
"type": "string",
"default": "en",
"description": "Response language: English or French."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_dating_guide — Read Gravitate dating guides
Free; no account, payment or Gravitate credits. Retrieve published English/French coaching articles for single dads, dating after 40 or divorce, and deciding whether to reconnect with an ex. Start with topic=catalog to choose a guide. Returns complete editorial content, update dates and canonical sources. General guidance only: no personalized diagnosis, guaranteed reconciliation or tactics to bypass someone's boundaries.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"topic": {
"enum": [
"catalog",
"single-dad-dating",
"single-dad-profile",
"single-dad-time",
"single-dad-disclosure",
"dating-after-40",
"dating-after-divorce",
"dating-profile-photos",
"first-date-again",
"get-your-ex-back",
"should-reconcile",
"no-contact",
"text-your-ex"
],
"type": "string",
"default": "catalog",
"description": "Start with catalog to choose a published guide. Fixed topics only; no private stories or profile text."
},
"locale": {
"enum": [
"en",
"fr"
],
"type": "string",
"default": "en",
"description": "Response language: English or French."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_profile_example — See a fictional dating-profile example
Free; no account, payment or Gravitate credits. Use when asked for an example bio and photo lineup for a single dad or someone returning to dating. Retrieves a clearly fictional, annotated example in English or French from a published article. It is not a real customer, personalized profile, image analysis or evidence of improved matches. Choose only the persona requested by the user.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"persona"
],
"properties": {
"locale": {
"enum": [
"en",
"fr"
],
"type": "string",
"default": "en",
"description": "Response language: English or French."
},
"persona": {
"enum": [
"single_dad",
"returning_to_dating"
],
"type": "string",
"description": "Choose the example the user asks for; never infer parental status or relationship history from appearance."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
36 advertised
attractiveness-en — Attractiveness rating: what a photo score can really tell you
https://joingravitate.com/attractiveness-ratingattractiveness-fr — Note de beauté et attractivité : ce qu’une photo peut dire
https://joingravitate.com/fr/attractivite-photodevelopers-en — Gravitate MCP: photo guidance for assistants and developers
https://joingravitate.com/developersdevelopers-fr — Gravitate MCP : conseils photo pour assistants et développeurs
https://joingravitate.com/fr/developpeursexample-en — Dating photo rating example: three photos, three decisions
https://joingravitate.com/photo-rating/exampleexample-fr — Exemple de note photo : trois images, trois décisions
https://joingravitate.com/fr/evaluation-photo/exemplemethodology-en — How Gravitate’s dating photo rating works
https://joingravitate.com/photo-rating/methodologymethodology-fr — Comment fonctionne la note photo Gravitate
https://joingravitate.com/fr/evaluation-photo/methodeprinciples-en — Dating photo improvement and AI image generation principles
https://joingravitate.com/photo-principlesprinciples-fr — Améliorer ses photos de rencontre : retouche et génération IA
https://joingravitate.com/fr/principes-photorating-en — Dating photo rating: choose a stronger profile photo
https://joingravitate.com/photo-ratingrating-fr — Évaluer une photo de profil pour un site de rencontre
https://joingravitate.com/fr/evaluation-photoarticle-dating-after-40-en — Dating in your 40s and 50s as a man: where to start again
https://joingravitate.com/blog/dating-in-your-40s-and-50s-as-a-manarticle-dating-after-40-fr — Faire des rencontres à 40 ou 50 ans : par où commencer quand on est un homme ?
https://joingravitate.com/fr/blog/faire-des-rencontres-homme-40-50-ansarticle-dating-after-divorce-en — Dating after divorce for men: build a profile for your next chapter
https://joingravitate.com/blog/dating-after-divorce-for-menarticle-dating-after-divorce-fr — Refaire des rencontres après un divorce : conseils pour les hommes
https://joingravitate.com/fr/blog/rencontres-apres-divorce-hommearticle-dating-profile-photos-en — Dating profile photos for men over 40: a simple shoot plan
https://joingravitate.com/blog/dating-profile-photos-for-men-over-40article-dating-profile-photos-fr — Photos de profil de rencontre après 40 ans : une séance simple à préparer
https://joingravitate.com/fr/blog/photos-profil-rencontre-homme-40-ansarticle-first-date-again-en — Your first date after a long relationship: a practical guide
https://joingravitate.com/blog/first-date-after-a-long-relationshiparticle-first-date-again-fr — Premier rendez-vous après une longue relation : comment se préparer ?
https://joingravitate.com/fr/blog/premier-rendez-vous-apres-longue-relationarticle-get-your-ex-back-en — How to get your ex back: when reconnecting makes sense
https://joingravitate.com/blog/how-to-get-your-ex-backarticle-get-your-ex-back-fr — Récupérer son ex : quand reprendre contact a-t-il du sens ?
https://joingravitate.com/fr/blog/recuperer-son-exarticle-no-contact-en — The no-contact rule after a breakup: what it can and cannot do
https://joingravitate.com/blog/no-contact-rule-after-breakuparticle-no-contact-fr — Silence radio après une rupture : à quoi sert-il vraiment ?
https://joingravitate.com/fr/blog/silence-radio-apres-rupturearticle-should-reconcile-en — Should I get back with my ex? Questions before you say yes
https://joingravitate.com/blog/should-i-get-back-with-my-exarticle-should-reconcile-fr — Se remettre avec son ex : les questions à se poser avant de dire oui
https://joingravitate.com/fr/blog/se-remettre-avec-son-exarticle-single-dad-dating-en — Dating as a single dad: a plan that fits your real life
https://joingravitate.com/blog/dating-as-a-single-dadarticle-single-dad-dating-fr — Rencontrer quelqu’un quand on est papa solo : par où commencer ?
https://joingravitate.com/fr/blog/rencontres-papa-soloarticle-single-dad-disclosure-en — When to tell a date you have kids—and what to keep private
https://joingravitate.com/blog/when-to-tell-a-date-you-have-kidsarticle-single-dad-disclosure-fr — Quand dire à une rencontre que vous avez des enfants ?
https://joingravitate.com/fr/blog/quand-dire-rencontre-que-vous-avez-des-enfantsarticle-single-dad-profile-en — Single-dad dating profile examples that sound like you
https://joingravitate.com/blog/single-dad-dating-profile-examplesarticle-single-dad-profile-fr — Profil de rencontre pour papa solo : trois exemples à adapter
https://joingravitate.com/fr/blog/exemples-profil-rencontre-papa-soloarticle-single-dad-time-en — How to make time for dating as a single dad
https://joingravitate.com/blog/make-time-for-dating-as-a-single-dadarticle-single-dad-time-fr — Papa solo : comment trouver du temps pour les rencontres ?
https://joingravitate.com/fr/blog/trouver-temps-rencontres-papa-soloarticle-text-your-ex-en — What to text your ex: a respectful first message, if contact is welcome
https://joingravitate.com/blog/what-to-text-your-exarticle-text-your-ex-fr — Quel message envoyer pour recontacter son ex ?
https://joingravitate.com/fr/blog/message-pour-recontacter-son-ex30-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
- 987 ms
- 95th percentile latency
- 987 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 987 ms · metadata changed · 6 tool(s), 36 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http gravitate-mcp https://joingravitate.com/mcpCodex
codex mcp add gravitate-mcp --url https://joingravitate.com/mcpCursor
{
"mcpServers": {
"gravitate-mcp": {
"url": "https://joingravitate.com/mcp"
}
}
}Cline
{
"mcpServers": {
"gravitate-mcp": {
"type": "streamableHttp",
"url": "https://joingravitate.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"gravitate-mcp": {
"type": "http",
"url": "https://joingravitate.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http gravitate-mcp https://joingravitate.com/mcpClaude Desktop
{
"mcpServers": {
"gravitate-mcp": {
"url": "https://joingravitate.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"gravitate-mcp": {
"serverUrl": "https://joingravitate.com/mcp"
}
}
}Let your agent find its tools
Find servers like Gravitate MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run Gravitate 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.