Koskamo

Vetofix MCP

An official read-only MCP server provided by Vetofix for mobile veterinary practice software. It allows AI agents to search FAQs, retrieve product features, access troubleshooting guides, and check current limitations. It also supports creating support tickets upon explicit confirmation, without exposing patient or practice data.

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.

Vetofix MCP logo, by VetofixVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Vetofix
MCP endpoint (Streamable HTTP)
https://vetofix.com/mcp
Vendor documentation

What its tools do

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

Can change data (1)

6 of 6 have a description · 6 of 6 declare behavior hints · 6 of 6 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 vetofix.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search FAQs and help articles for Vetofix software
  • Retrieve specific product feature documentation
  • Access troubleshooting guides and known limitations
  • Create support tickets after user confirmation

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
vetofix-hilfe 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
6 advertised
Resources
9 advertised
Resource templates
0 advertised
Prompts
1 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Du bist der Support-Assistent für Vetofix, eine Praxissoftware für mobile Tierärztinnen und Tierärzte. Halte dich an diese Regeln: 1. Beantworte nur Fragen zu Vetofix. 2. Erfinde nichts: keine Funktionen, Preise, Fristen oder Integrationen. Was nicht in den Ergebnissen der Werkzeuge oder Ressourcen steht, ist nicht bestätigt. 3. Rufe zuerst search_help auf (oder lies eine Ressource unter vetofix://knowledge/…), bevor du eine Sachfrage beantwortest. 4. Nenne bei jeder Faktenantwort die Quelle (source_url) und die Artikel-ID (article_id). 5. Findest du keine verlässliche Antwort, antworte wörtlich: „Dazu habe ich keine bestätigte Information. Bitte kontaktiere den Vetofix-Support.“ 6. Gib keine Diagnosen und keine Behandlungs- oder Dosierungsempfehlungen. Verweise dafür auf die behandelnde Tierarztpraxis. 7. Gib keine Daten anderer Praxen oder Benutzer heraus; über diesen Server gibt es keine Praxis-, Patienten-, Halter- oder Rechnungsdaten. 8. Frage nie nach Passwörtern, Kartendaten, Zugangsdaten oder Tokens und bitte nicht darum, Halter- oder Patientendaten zu nennen. 9. Führe keine schreibende Aktion ohne ausdrückliche Bestätigung des Nutzers aus. Ein Ticket mit create_support_ticket wird erst angelegt, nachdem der Nutzer die Zusammenfassung ausdrücklich bestätigt hat. 10. Bei möglichem Datenverlust, bei Fragen zur Abrechnung im Einzelfall und bei einem Datenschutzvorfall verweise sofort an den Support (create_support_ticket nur nach Bestätigung) und empfehle keine eigenen Lösungsschritte. 11. Unterscheide klar zwischen dokumentierter Aussage, Erklärung und Vermutung; kennzeichne Vermutungen ausdrücklich. 12. Antworte in der Sprache der Anfrage. Gibt es keine bestätigten Inhalte in dieser Sprache, weise darauf hin und gib die deutsche Fassung wieder.

Tools

6 advertised

search_help — Hilfe durchsuchen
Advertised by the server during the last successful anonymous check.
Advertised read-only

Durchsucht die freigegebene Vetofix-Wissensbasis (FAQ, Funktionen, Grenzen) und liefert Kurzantworten mit Quelle und Artikel-ID, nach Relevanz sortiert.

search_help input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "Höchstzahl Treffer (Vorgabe 5)"
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Frage oder Suchbegriffe zu Vetofix"
    },
    "category": {
      "enum": [
        "features",
        "general",
        "got",
        "inventory",
        "invoices",
        "legal",
        "limitations",
        "offline_sync",
        "pilot",
        "platforms",
        "support",
        "team",
        "travel_fee",
        "troubleshooting"
      ],
      "type": "string",
      "description": "Optional: Kategorie einschränken"
    },
    "language": {
      "enum": [
        "de",
        "en",
        "tr",
        "bs"
      ],
      "type": "string",
      "description": "Sprache der Antwort (Vorgabe de)"
    }
  },
  "additionalProperties": false
}
search_help output schema
{
  "type": "object",
  "required": [
    "results",
    "language"
  ],
  "properties": {
    "notice": {
      "type": "string",
      "description": "Hinweis, wenn die Frage nicht beantwortet werden darf"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "article_id",
          "title",
          "answer",
          "source_url",
          "last_updated",
          "content_status",
          "confidence"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "Titel"
          },
          "answer": {
            "type": "string",
            "description": "Kurzantwort aus dem freigegebenen Artikel"
          },
          "language": {
            "type": "string",
            "description": "Sprache des Artikels"
          },
          "article_id": {
            "type": "string",
            "description": "Artikel-ID"
          },
          "confidence": {
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "type": "string",
            "description": "Sicherheit des Treffers"
          },
          "source_url": {
            "type": "string",
            "description": "Öffentliche Quelle"
          },
          "last_updated": {
            "type": "string",
            "description": "Datum der letzten Aktualisierung (ISO)"
          },
          "content_status": {
            "enum": [
              "published"
            ],
            "type": "string",
            "description": "Immer published"
          }
        }
      }
    },
    "language": {
      "type": "string",
      "description": "Sprache der gelieferten Inhalte"
    },
    "language_note": {
      "type": "string",
      "description": "Hinweis, wenn auf Deutsch zurückgefallen wurde"
    },
    "fallback_message": {
      "type": "string",
      "description": "Wörtlicher Rückfallsatz bei keinem Treffer"
    },
    "requested_language": {
      "type": "string",
      "description": "Gewünschte Sprache"
    }
  }
}
search_help annotations
{
  "title": "Hilfe durchsuchen",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_faq — FAQ-Antwort zu einem Thema
Advertised by the server during the last successful anonymous check.
Advertised read-only

Liefert die freigegebene Antwort zu einem festen FAQ-Thema mit Quelle, Artikel-ID und Datum. Unbekannte Themen ergeben NOT_FOUND.

get_faq input schema
{
  "type": "object",
  "required": [
    "topic"
  ],
  "properties": {
    "topic": {
      "enum": [
        "got",
        "inventory",
        "invoice",
        "offline_sync",
        "pilot",
        "platforms",
        "travel_fee"
      ],
      "type": "string",
      "description": "FAQ-Thema"
    },
    "language": {
      "enum": [
        "de",
        "en",
        "tr",
        "bs"
      ],
      "type": "string",
      "description": "Sprache (Vorgabe de)"
    }
  },
  "additionalProperties": false
}
get_faq output schema
{
  "type": "object",
  "required": [
    "topic",
    "article_id",
    "title",
    "answer",
    "source_url",
    "last_updated",
    "content_status"
  ],
  "properties": {
    "title": {
      "type": "string",
      "description": "Titel"
    },
    "topic": {
      "type": "string",
      "description": "Angefragtes Thema"
    },
    "answer": {
      "type": "string",
      "description": "Vollständige Antwort aus dem freigegebenen Artikel"
    },
    "language": {
      "type": "string",
      "description": "Sprache der Antwort"
    },
    "article_id": {
      "type": "string",
      "description": "Artikel-ID"
    },
    "source_url": {
      "type": "string",
      "description": "Öffentliche Quelle"
    },
    "last_updated": {
      "type": "string",
      "description": "Letzte Aktualisierung (ISO)"
    },
    "short_answer": {
      "type": "string",
      "description": "Kurzfassung"
    },
    "language_note": {
      "type": "string",
      "description": "Hinweis bei Rückfall auf Deutsch"
    },
    "content_status": {
      "enum": [
        "published"
      ],
      "type": "string",
      "description": "Immer published"
    },
    "related_articles": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "article_id",
          "title",
          "source_url"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "Titel"
          },
          "article_id": {
            "type": "string",
            "description": "Artikel-ID"
          },
          "source_url": {
            "type": "string",
            "description": "Quelle"
          }
        }
      }
    }
  }
}
get_faq annotations
{
  "title": "FAQ-Antwort zu einem Thema",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_product_feature — Funktion erklären
Advertised by the server during the last successful anonymous check.
Advertised read-only

Erklärt eine Vetofix-Funktion für eine Zielgruppe, mit dokumentierten Grenzen. Nicht dokumentierte Funktionen ergeben NOT_FOUND – nichts wird erfunden.

get_product_feature input schema
{
  "type": "object",
  "required": [
    "feature",
    "audience"
  ],
  "properties": {
    "feature": {
      "type": "string",
      "maxLength": 100,
      "minLength": 2,
      "description": "Funktion, z. B. offline, got, wegegeld, mahnwesen, lager"
    },
    "audience": {
      "enum": [
        "veterinarian",
        "practice_admin",
        "support_agent"
      ],
      "type": "string",
      "description": "Zielgruppe der Erklärung"
    },
    "language": {
      "enum": [
        "de",
        "en",
        "tr",
        "bs"
      ],
      "type": "string",
      "description": "Sprache (Vorgabe de)"
    }
  },
  "additionalProperties": false
}
get_product_feature output schema
{
  "type": "object",
  "required": [
    "feature",
    "description",
    "benefit",
    "limitations",
    "source_url",
    "article_id",
    "last_updated",
    "content_status",
    "confidence"
  ],
  "properties": {
    "benefit": {
      "type": "string",
      "description": "Nutzen laut öffentlicher Beschreibung"
    },
    "feature": {
      "type": "string",
      "description": "Funktion"
    },
    "language": {
      "type": "string",
      "description": "Sprache"
    },
    "article_id": {
      "type": "string",
      "description": "Artikel-ID"
    },
    "confidence": {
      "enum": [
        "high",
        "medium",
        "low"
      ],
      "type": "string",
      "description": "Sicherheit der Zuordnung"
    },
    "source_url": {
      "type": "string",
      "description": "Öffentliche Quelle"
    },
    "description": {
      "type": "string",
      "description": "Beschreibung aus dem freigegebenen Artikel"
    },
    "limitations": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "Dokumentierte Grenze"
      }
    },
    "last_updated": {
      "type": "string",
      "description": "Letzte Aktualisierung (ISO)"
    },
    "language_note": {
      "type": "string",
      "description": "Hinweis bei Rückfall auf Deutsch"
    },
    "content_status": {
      "enum": [
        "published"
      ],
      "type": "string",
      "description": "Immer published"
    }
  }
}
get_product_feature annotations
{
  "title": "Funktion erklären",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_troubleshooting_guide — Fehlerhilfe
Advertised by the server during the last successful anonymous check.
Advertised read-only

Liefert nummerierte kurze Schritte aus freigegebenen Artikeln. Empfiehlt nie Datenlöschung. Bei Hinweisen auf Datenverlust gibt es keine Schritte, sondern einen sofortigen Support-Verweis.

get_troubleshooting_guide input schema
{
  "type": "object",
  "required": [
    "problem"
  ],
  "properties": {
    "context": {
      "type": "string",
      "maxLength": 300,
      "minLength": 1,
      "description": "Optional: Umstände"
    },
    "problem": {
      "type": "string",
      "maxLength": 300,
      "minLength": 3,
      "description": "Beschreibung des Problems"
    },
    "language": {
      "enum": [
        "de",
        "en",
        "tr",
        "bs"
      ],
      "type": "string",
      "description": "Sprache (Vorgabe de)"
    },
    "platform": {
      "type": "string",
      "maxLength": 50,
      "minLength": 1,
      "description": "Optional: Plattform, z. B. ios, android, web"
    }
  },
  "additionalProperties": false
}
get_troubleshooting_guide output schema
{
  "type": "object",
  "required": [
    "steps",
    "escalate_to_support"
  ],
  "properties": {
    "steps": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "step",
          "text"
        ],
        "properties": {
          "step": {
            "type": "integer",
            "maximum": 50,
            "minimum": 1,
            "description": "Nummer"
          },
          "text": {
            "type": "string",
            "description": "Kurzer Schritt"
          }
        }
      }
    },
    "title": {
      "type": "string",
      "description": "Titel"
    },
    "message": {
      "type": "string",
      "description": "Hinweis bei Support-Verweis"
    },
    "language": {
      "type": "string",
      "description": "Sprache"
    },
    "article_id": {
      "type": "string",
      "description": "Artikel-ID"
    },
    "confidence": {
      "enum": [
        "high",
        "medium",
        "low"
      ],
      "type": "string",
      "description": "Sicherheit"
    },
    "source_url": {
      "type": "string",
      "description": "Öffentliche Quelle"
    },
    "last_updated": {
      "type": "string",
      "description": "Letzte Aktualisierung (ISO)"
    },
    "language_note": {
      "type": "string",
      "description": "Hinweis bei Rückfall auf Deutsch"
    },
    "content_status": {
      "enum": [
        "published"
      ],
      "type": "string",
      "description": "Immer published"
    },
    "support_contact": {
      "type": "object",
      "required": [
        "email",
        "source_url"
      ],
      "properties": {
        "email": {
          "type": "string",
          "description": "Support-Adresse"
        },
        "source_url": {
          "type": "string",
          "description": "Quelle"
        }
      }
    },
    "data_safety_note": {
      "type": "string",
      "description": "Hinweis: keine Daten löschen"
    },
    "escalate_to_support": {
      "type": "boolean",
      "description": "true: sofort an den Support verweisen"
    }
  }
}
get_troubleshooting_guide annotations
{
  "title": "Fehlerhilfe",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_current_limitations — Aktuelle Grenzen
Advertised by the server during the last successful anonymous check.
Advertised read-only

Listet die ausdrücklich dokumentierten Grenzen von Vetofix (Stand je Eintrag). Keine Zusagen zu künftigen Funktionen.

get_current_limitations input schema
{
  "type": "object",
  "properties": {
    "language": {
      "enum": [
        "de",
        "en",
        "tr",
        "bs"
      ],
      "type": "string",
      "description": "Sprache (Vorgabe de)"
    }
  },
  "additionalProperties": false
}
get_current_limitations output schema
{
  "type": "object",
  "required": [
    "language",
    "limitations"
  ],
  "properties": {
    "language": {
      "type": "string",
      "description": "Sprache"
    },
    "limitations": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "text",
          "last_updated"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Artikel-ID"
          },
          "text": {
            "type": "string",
            "description": "Dokumentierte Grenze"
          },
          "source_url": {
            "type": "string",
            "description": "Öffentliche Quelle"
          },
          "last_updated": {
            "type": "string",
            "description": "Letzte Aktualisierung (ISO)"
          }
        }
      }
    },
    "language_note": {
      "type": "string",
      "description": "Hinweis bei Rückfall auf Deutsch"
    }
  }
}
get_current_limitations annotations
{
  "title": "Aktuelle Grenzen",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_support_ticket — Support-Ticket erstellen
Advertised by the server during the last successful anonymous check.

Legt nach ausdrücklicher Bestätigung ein Support-Ticket an. Erster Aufruf ohne gültige Bestätigung ergibt CONFIRMATION_REQUIRED mit Zusammenfassung und Token; erst ein zweiter Aufruf mit confirmed=true und diesem Token speichert.

create_support_ticket input schema
{
  "type": "object",
  "required": [
    "subject",
    "description",
    "category",
    "contact_email"
  ],
  "properties": {
    "subject": {
      "type": "string",
      "maxLength": 120,
      "minLength": 3,
      "description": "Betreff"
    },
    "category": {
      "enum": [
        "account",
        "billing",
        "bug",
        "feature_request",
        "question",
        "sync"
      ],
      "type": "string",
      "description": "Kategorie"
    },
    "priority": {
      "enum": [
        "low",
        "normal",
        "high"
      ],
      "type": "string",
      "description": "Priorität (Vorgabe normal)"
    },
    "confirmed": {
      "type": "boolean",
      "description": "true erst nach ausdrücklicher Zustimmung des Nutzers"
    },
    "description": {
      "type": "string",
      "maxLength": 2000,
      "minLength": 10,
      "description": "Beschreibung ohne Halter-/Patientendaten, Passwörter oder Kartendaten"
    },
    "contact_email": {
      "type": "string",
      "maxLength": 254,
      "minLength": 5,
      "description": "Kontakt-E-Mail für Rückfragen"
    },
    "confirmation_token": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Token aus der Bestätigungsaufforderung"
    },
    "include_diagnostics": {
      "type": "boolean",
      "description": "Einwilligung, Diagnosedaten anzuhängen (hier werden keine erhoben)"
    }
  },
  "additionalProperties": false
}
create_support_ticket output schema
{
  "type": "object",
  "required": [
    "ticket_id",
    "status"
  ],
  "properties": {
    "notice": {
      "type": "string",
      "description": "Hinweis zur Maskierung"
    },
    "status": {
      "enum": [
        "open"
      ],
      "type": "string",
      "description": "Status"
    },
    "ticket_id": {
      "type": "string",
      "description": "Ticket-ID"
    },
    "masked_fields": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "Maskierte Musterart"
      }
    },
    "email_notification": {
      "enum": [
        "sent",
        "not_configured",
        "failed",
        "already_created"
      ],
      "type": "string",
      "description": "Mail an den Support"
    }
  }
}
create_support_ticket annotations
{
  "title": "Support-Ticket erstellen",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

1 advertised

vetofix_support_assistant — Vetofix-Support-Assistent

Advertised by the server during the last successful anonymous check.

Antwortregeln für einen Assistenten, der Fragen zu Vetofix anhand der Wissensbasis beantwortet und Support-Tickets nur nach Bestätigung anlegt.

question
Optional: die Frage des Nutzers

Resources

9 advertised

Support-Kontakt — Support-Kontakt

Advertised by the server during the last successful anonymous check.

Wie der Vetofix-Support erreichbar ist

Support-Kontakt URI
vetofix://support/contact

MIME type: application/json

FAQ — FAQ

Advertised by the server during the last successful anonymous check.

Häufige Fragen und Antworten

FAQ URI
vetofix://knowledge/faq

MIME type: application/json

Fehlerhilfe — Fehlerhilfe

Advertised by the server during the last successful anonymous check.

Freigegebene Anleitungen bei Problemen (ohne Datenlöschung)

Fehlerhilfe URI
vetofix://knowledge/troubleshooting

MIME type: application/json

Aktuelle Grenzen — Aktuelle Grenzen

Advertised by the server during the last successful anonymous check.

Ausdrücklich dokumentierte Grenzen von Vetofix

Aktuelle Grenzen URI
vetofix://knowledge/limitations

MIME type: application/json

Offline und Synchronisierung — Offline und Synchronisierung

Advertised by the server during the last successful anonymous check.

Offline-Dokumentation, Synchronisierung, Mehrgeräte-Betrieb

Offline und Synchronisierung URI
vetofix://knowledge/offline-sync

MIME type: application/json

Lager — Lager

Advertised by the server during the last successful anonymous check.

Verteiltes Lagerwesen

Lager URI
vetofix://knowledge/inventory

MIME type: application/json

Rechnungen und Mahnwesen — Rechnungen und Mahnwesen

Advertised by the server during the last successful anonymous check.

Rechnung vor Ort, offene Posten, Mahnwesen

Rechnungen und Mahnwesen URI
vetofix://knowledge/invoices

MIME type: application/json

Funktionen — Funktionen

Advertised by the server during the last successful anonymous check.

Funktionen von Vetofix mit dokumentierten Grenzen

Funktionen URI
vetofix://knowledge/features

MIME type: application/json

GOT und Wegegeld — GOT und Wegegeld

Advertised by the server during the last successful anonymous check.

Leistungserfassung nach GOT und Wegegeld

GOT und Wegegeld URI
vetofix://knowledge/got

MIME type: application/json

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
1520 ms
95th percentile latency
1520 ms

Maintenance history

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

  • · probe · passed · 1520 ms · metadata changed · 6 tool(s), 9 resource(s), 0 resource template(s), 1 prompt(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 vetofix-mcp https://vetofix.com/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 vetofix-mcp --url https://vetofix.com/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start vetofix-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "vetofix-mcp": {
      "type": "http",
      "url": "https://vetofix.com/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 vetofix-mcp https://vetofix.com/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://vetofix.com/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": {
    "vetofix-mcp": {
      "serverUrl": "https://vetofix.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Vetofix 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 Vetofix 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