ChangeThisFile MCP Server
Enables file conversion between 690+ formats (image, video, audio, document, data, font, ebook, archive) using an MCP server, with no API key or signup required.
Block For Production
trustsnap_051bc243efdbdc59.- Utility Coverage
- Transport Compliance
- Resource Contract
- Add an explicit confirm/dry-run parameter or two-step confirmation flow to write, delete, exec, and egress-capable tool…
- Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.
- Publish /.well-known/oauth-authorization-server from your issuer and include registration endpoint when supported.
- No segmented attention signals observed in the current window.
Dispute this assessment
If any published claim about this server -- its score, a risk flag, a capability classification, or its taxonomy -- is factually wrong, tell us what evidence shows and we will review it. This does not require claiming or verifying ownership of the server first.
Verify responds to disputes within 5 business days and resolves them within 15.
Dispute history
No disputes filed for this server.
Risk
Security posture
Tool capability & risk inventory
| Tool | Capabilities | Risk | Findings | Notes |
|---|---|---|---|---|
convert_file |
write network filesystem export | High | arbitrary network egress bulk data access freeform input surface filesystem mutation | No explicit safeguard hints detected. |
list_conversions |
read export | Medium | bulk data access | No explicit safeguard hints detected. |
translate_file |
network filesystem financial | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
extract_tables |
network filesystem financial | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
compress_file |
network filesystem | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
do_file_job |
network filesystem | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
check_job |
read financial | Low | none | No explicit safeguard hints detected. |
Write-action governance
Status detail: 1 high-risk tool(s); auth boundary is oauth or auth required with 0 safeguard(s) and 3 confirmation signal(s).
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
convert_file |
High | arbitrary network egress bulk data access freeform input surface filesystem mutation | no |
Action-controls diff
New actions
| Action | Risk | Flags |
|---|---|---|
check_job | Low | none |
compress_file | Medium | arbitrary network egress freeform input surface |
convert_file | High | arbitrary network egress bulk data access freeform input surface filesystem mutation |
do_file_job | Medium | arbitrary network egress freeform input surface |
extract_tables | Medium | arbitrary network egress freeform input surface |
list_conversions | Medium | bulk data access |
translate_file | Medium | arbitrary network egress freeform input surface |
Changed actions
| Action | Change types | Risk |
|---|---|---|
| No materially changed actions. | ||
Critical alerts
Compatibility
Client compatibility verdicts
Client compatibility only means the server shape can work with a client. Production trust decision and write-action publishing are evaluated separately so a client-compatible server can still be blocked for production.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Errorstep_up_auth_probe• Warningconnector_replay_probe• OK — Frozen tool snapshots must survive refresh.request_association_probe• Missing — Roots, sampling, and elicitation should stay request-scoped.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Error
Evidence provenance
action_safety_probe• Warning
Evidence provenance
tool_snapshot_probe• OKconnector_replay_probe• OK
Client compatibility gate details
Remediation checklist
Dynamic client registration materially improves connector setup.Transport compliance failed or did not complete successfully.OAuth interoperability should be strong.The tool surface is not limited to search/fetch-style read tools.This client profile expects a read/search-only tool surface, but write, delete, or exec-capable tools are present.A connector refresh would break existing tool references (new required arguments or removed tools) -- an admin must re-approve the connector before this is safe.
Remediation checklist
Transport behavior should match Claude-compatible HTTP expectations.The tool surface is not limited to search/fetch-style read tools.This client profile expects a read/search-only tool surface, but write, delete, or exec-capable tools are present.A connector refresh would break existing tool references (new required arguments or removed tools) -- an admin must re-approve the connector before this is safe.Not yet safe for company-knowledge use: requires a search/fetch-only surface with no export, bulk, mutating, or high-blast-radius exposure.Not yet safe for the Messages API remote MCP path: requires OAuth, a compatible connector profile, and no pending connector-refresh risk.
Remediation checklist
The write/destructive action surface just expanded since the last validation -- review before publishing.action_safety_probe is in warning -- confirm the flagged risk before treating this as write-safe.Production readiness is blocked by an active alert: Tool snapshot changed.Production readiness is blocked by an active alert: Auth mode changed.Production readiness is blocked by an active alert: Write-action surface expanded.
Verdict traces
server_degraded• medium • Latest validation is degradedcard_omits_tool_schemas• low • Server card does not publish tool schemastool_snapshot_changed• high • Tool snapshot changedauth_mode_changed• high • Auth mode changedwrite_action_surface_expanded• high • Write-action surface expanded
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Partially client-compatible | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | none |
claude_desktop |
Client-compatible | initialize, tools_list, transport_compliance_probe | live_validation | none |
unsafe_for_write_actions |
Publishing blocked | action_safety_probe | live_validation | none |
snapshot_churn_risk |
Medium | tool_snapshot_probe, connector_replay_probe | history | none |
Publishability policy profiles
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: Yes
- Admin Refresh Required: Yes
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: Yes
- Admin Refresh Required: Yes
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Compatibility fixtures
- remote_http_endpoint: Passes
- oauth_discovery: Passes
- frozen_tool_snapshot_refresh: Passes
- request_association: Passes
- remote_transport: Passes
- tool_discovery: Passes
- auth_connect: Passes
- safe_write_review: Degraded
Recommended for
Evidence
Current trust snapshot
trustsnap_051bc243efdbdc59Canonical machine links
Evidence confidence
Latest validation evidence
Failures
oauth_authorization_serverno authorization serveropenid_configurationno authorization servertransport_compliance_probeIssues: missing session id, missing protocol header, bad protocol not rejected (bad protocol=200).
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
Warning | n/a | 1 high-risk tool(s); auth present; safeguards=0; confirmation=translate file, extract tables, check job. |
advanced_capabilities_probe |
Missing | n/a | No advanced MCP capability signals detected. |
connector_publishability_probe |
Warning | n/a | Publishability blockers: transport compliance. |
connector_replay_probe |
OK | n/a | Backward compatible with no breaking tool-surface changes. |
determinism_probe |
OK | 11.2 ms | Check completed |
initialize |
OK | 523.5 ms | Protocol 2025-03-26 |
interactive_flow_probe |
OK | n/a | Check completed |
oauth_authorization_server |
Missing | n/a | no authorization server |
oauth_protected_resource |
OK | 10.9 ms | 0 authorization server(s) |
official_registry_probe |
Missing | n/a | Check completed |
openid_configuration |
Missing | n/a | no authorization server |
probe_noise_resilience |
OK | 71.4 ms | Fetched https://changethisfile.com/robots.txt |
prompt_get |
Missing | n/a | not advertised |
prompts_list |
Missing | 10.0 ms | not supported |
protocol_version_probe |
Warning | n/a | Claims 2025-03-26; 2 release(s) behind 2025-11-25. |
provenance_divergence_probe |
Not_Assessed | n/a | Check completed |
request_association_probe |
Missing | n/a | No request-association capabilities were advertised. |
resource_read |
Missing | n/a | not advertised |
resources_list |
Missing | 9.8 ms | not supported |
schema_divergence_probe |
Warning | n/a | Check completed |
server_card |
OK | 11.6 ms | $schema, auth, capabilities, serverInfo |
session_resume_probe |
Warning | n/a | no session id |
step_up_auth_probe |
Warning | n/a | Oauth detected. |
tool_snapshot_probe |
OK | n/a | Check completed |
tools_list |
OK | 10.0 ms | 7 tool(s) exposed |
transport_compliance_probe |
Error | 11.9 ms | Issues: missing session id, missing protocol header, bad protocol not rejected (bad protocol=200). |
utility_coverage_probe |
Missing | 9.7 ms | No completions evidence; no pagination evidence; tasks missing. |
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": true,
"confirmation_signals": [
"translate_file",
"extract_tables",
"check_job"
],
"reason": null,
"safeguard_count": 0,
"summary": {
"annotation_conflict_tools": 0,
"bulk_access_tools": 2,
"capability_distribution": {
"export": 2,
"filesystem": 5,
"financial": 3,
"network": 5,
"read": 2,
"write": 1
},
"declared_non_read_only_tools": 5,
"destructive_tools": 0,
"egress_tools": 5,
"exec_tools": 0,
"has_mutating_capability": true,
"has_non_read_capability": true,
"high_risk_tools": 1,
"risk_distribution": {
"critical": 0,
"high": 1,
"low": 1,
"medium": 5
},
"secret_tools": 0,
"tool_count": 7
}
},
"latency_ms": null,
"status": "warning"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": false,
"resource_links": false,
"resources": false,
"roots": false,
"sampling": false,
"structured_outputs": false
},
"enabled": [],
"enabled_count": 0,
"initialize_capability_keys": [
"tools"
]
},
"latency_ms": null,
"status": "missing"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"transport_compliance"
],
"criteria": {
"action_safety": true,
"auth_flow": true,
"connector_replay": true,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": true,
"server_card": true,
"session_resume": true,
"step_up_auth": true,
"tool_surface": true,
"tools_list": true,
"transport_compliance": false
},
"high_risk_tools": 1,
"tool_count": 7,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"connector_replay_probe": {
"details": {
"added_tools": [],
"additive_output_changes": [],
"backward_compatible": true,
"output_breaks": [],
"removed_tools": [],
"required_arg_breaks": [],
"would_break_after_refresh": false
},
"latency_ms": null,
"status": "ok"
},
"determinism_probe": {
"details": {
"attempts": 2,
"baseline_signature": "49e8d7b803152ea8fbea98a6bc1eb3bd8936fcb9d666f3549fc84b65a2d239d6",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 11.19,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"tools": {}
},
"instructions": "Convert files across 1,000+ supported routes. Pass a file URL or base64 content, pick a target format, get back a download URL. Also runs instruction-driven file jobs: translate documents with layout preserved, extract tables from PDFs/images into Excel, and compress files to an exact target size (free). Not sure which tool? Describe what you want in plain language with do_file_job. Paid jobs run immediately and return a free preview plus a checkout link; the full output unlocks after payment. Conversion routes are enumerated, so call list_conversions instead of guessing source/target pairs.",
"protocolVersion": "2025-03-26",
"serverInfo": {
"name": "changethisfile",
"version": "1.3.0"
}
}
},
"url": "https://changethisfile.com/mcp"
},
"latency_ms": 523.45,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": true,
"prompt_available": false,
"risk_hits": [],
"safe_hits": []
},
"latency_ms": null,
"status": "ok"
},
"oauth_authorization_server": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"oauth_protected_resource": {
"details": {
"headers": {
"content-type": "application/json; charset=utf-8"
},
"http_status": 200,
"payload": {
"authorization_servers": [],
"bearer_methods_supported": [
"header"
],
"resource": "https://changethisfile.com/v1/",
"resource_documentation": "https://changethisfile.com/docs/authentication",
"token_acquisition_endpoint": "https://changethisfile.com/v1/keys/free",
"token_format": "opaque-api-key"
},
"url": "https://changethisfile.com/.well-known/oauth-protected-resource"
},
"latency_ms": 10.92,
"status": "ok"
},
"official_registry_probe": {
"details": {
"direct_match": false,
"official_peer_count": 0,
"registry_source": "glama_registry"
},
"latency_ms": null,
"status": "missing"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "text/plain; charset=utf-8"
},
"http_status": 200,
"url": "https://changethisfile.com/robots.txt",
"validation_disallowed": false
},
"latency_ms": 71.44,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"data": "Unknown method: prompts/list",
"message": "Method not found"
},
"id": 3,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://changethisfile.com/mcp"
},
"latency_ms": 9.97,
"status": "missing"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-03-26",
"lag_days": 244,
"latest_known_version": "2025-11-25",
"releases_behind": 2,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"comparable_field_count": 0,
"compared_fields": [
"title",
"version",
"homepage",
"repository"
],
"direct_official_match": false,
"drift_fields": [],
"metadata_document_count": 2,
"readable_sources": [
"server_card"
],
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": "changethisfile",
"server_card_version": "1.3.0"
},
"latency_ms": null,
"status": "not_assessed"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resources_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"data": "Unknown method: resources/list",
"message": "Method not found"
},
"id": 5,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://changethisfile.com/mcp"
},
"latency_ms": 9.83,
"status": "missing"
},
"schema_divergence_probe": {
"details": {
"auth_scheme_mismatch": false,
"card_auth_schemes": [],
"card_server_name": "changethisfile",
"card_server_version": "1.3.0",
"compared_dimensions": [
"server_name",
"server_version",
"declared_vs_observed_auth",
"tool_membership",
"parameter_names",
"required_parameters",
"parameter_types",
"output_schema_presence"
],
"compared_tool_count": 7,
"live_oauth_observed": true,
"live_server_name": "changethisfile",
"live_server_version": "1.3.0",
"server_name_mismatch": false,
"server_version_mismatch": false,
"severity": "low",
"tool_divergences": [],
"tools_missing_from_card": [],
"tools_missing_from_live": [],
"tools_with_omitted_schema": [
"check_job",
"compress_file",
"convert_file",
"do_file_job",
"extract_tables",
"list_conversions",
"translate_file"
]
},
"latency_ms": null,
"status": "warning"
},
"server_card": {
"details": {
"headers": {
"content-type": "application/json; charset=utf-8"
},
"http_status": 200,
"payload": {
"$schema": "https://modelcontextprotocol.io/schemas/server-card.json",
"auth": {
"token_acquisition": "https://changethisfile.com/v1/keys/free",
"type": "bearer"
},
"capabilities": {
"tools": [
"convert_file",
"list_conversions",
"do_file_job",
"translate_file",
"extract_tables",
"compress_file",
"check_job"
]
},
"serverInfo": {
"description": "File conversion across 1,000+ supported routes, plus instruction-driven file jobs: translate documents with layout preserved, extract tables to Excel, compress files to an exact size. Source format auto-detected \u2014 agents only need to pick the target. Listed in the official Claude connectors directory.",
"homepage": "https://changethisfile.com",
"name": "changethisfile",
"version": "1.3.0"
},
"transport": {
"endpoint": "https://changethisfile.com/mcp",
"protocol_version": "2025-03-26",
"type": "streamable-http"
}
},
"url": "https://changethisfile.com/.well-known/mcp/server-card.json"
},
"latency_ms": 11.56,
"status": "ok"
},
"session_resume_probe": {
"details": {
"protocol_version": "2025-03-26",
"reason": "no_session_id",
"resume_expected": true,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": true,
"scope_specificity_ratio": 0.0,
"step_up_signals": [],
"supported_scopes": []
},
"latency_ms": null,
"status": "warning"
},
"tool_snapshot_probe": {
"details": {
"added": [],
"changed_outputs": [],
"current_tool_count": 7,
"previous_tool_count": 7,
"removed": [],
"similarity": 1.0
},
"latency_ms": null,
"status": "ok"
},
"tools_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Convert File"
},
"description": "Convert a file from one format to another. Add a verified ChangeThisFile API key for the shared developer allowance (25 free conversions/month); anonymous access is temporary compatibility mode. Pass EITHER a publicly accessible URL (source_url) OR base64-encoded file contents (base64_content + source_format) \u2014 exactly one is required. Returns a temporary download URL (valid 1 hour; file deleted within 24 hours).",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files; max ~5MB)",
"type": "string"
},
"filename": {
"description": "Optional filename hint for auto-detection (e.g. \"document.docx\"). Include this for extensionless download URLs when known.",
"type": "string"
},
"source_format": {
"description": "Source format extension (e.g. \"docx\", \"mp4\"). Optional: detected from filename, URL response filename, or file bytes when omitted.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the file to convert (preferred for large files)",
"type": "string"
},
"target_format": {
"description": "Target format extension (e.g. \"json\", \"mp3\", \"pdf\"). Required.",
"type": "string"
}
},
"required": [
"target_format"
],
"type": "object"
},
"name": "convert_file",
"title": "Convert File"
},
{
"annotations": {
"openWorldHint": false,
"readOnlyHint": true,
"title": "List Supported Conversions"
},
"description": "List all supported conversion routes. Optionally filter by source format to see what you can convert FROM a specific format.",
"inputSchema": {
"properties": {
"source_format": {
"description": "Filter by source format (e.g. \"docx\" returns all DOCX target options)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "list_conversions",
"title": "List Supported Conversions"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Translate Document"
},
"description": "Translate a document into another language with the original layout and formatting preserved (DOCX, PPTX, XLSX, PDF, TXT, MD, SRT, VTT). The job runs immediately and returns a FREE preview of the first pages plus a secure Stripe checkout link \u2014 the full translated file unlocks after payment ($4.99, one-time, no account needed). Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
},
"target_language": {
"description": "Target language name, e.g. \"Spanish\", \"Japanese\", \"Brazilian Portuguese\"",
"type": "string"
}
},
"required": [
"target_language"
],
"type": "object"
},
"name": "translate_file",
"title": "Translate Document (paid, free preview)"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Extract Tables to Excel"
},
"description": "Extract every table from a PDF or image (PNG, JPG, WebP) into a clean multi-sheet Excel file. The job runs immediately and returns a FREE preview of the first table plus a secure Stripe checkout link \u2014 the full .xlsx unlocks after payment ($3.99, one-time, no account needed). Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "extract_tables",
"title": "Extract Tables to Excel (paid, free preview)"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Compress File to Target Size"
},
"description": "Compress a file (PDF, JPG, PNG, WebP, MP4, MOV, WebM) down to an exact target size \u2014 e.g. \"under 5MB for an upload form\". FREE (daily limit applies). Returns a download URL on success; if the target is physically unreachable it fails honestly and reports the smallest achievable size. Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
},
"target_size_kb": {
"description": "Target maximum size in kilobytes (e.g. 5120 for 5MB). Min 50KB.",
"type": "integer"
}
},
"required": [
"target_size_kb"
],
"type": "object"
},
"name": "compress_file",
"title": "Compress File to Exact Size (free)"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Do Something to a File"
},
"description": "Describe what you want done to a file in plain language \u2014 e.g. \"translate this contract to German\", \"pull every table out of this PDF into Excel\", \"shrink this video to under 25MB\", \"convert this to PDF\". The instruction is routed to the right job automatically; if the request is not supported yet you get an honest explanation of what is. Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"instruction": {
"description": "What to do with the file, in plain language (any language)",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
}
},
"required": [
"instruction"
],
"type": "object"
},
"name": "do_file_job",
"title": "Do Something to a File (natural language)"
},
{
"annotations": {
"openWorldHint": false,
"readOnlyHint": true,
"title": "Check Job Status"
},
"description": "Check the status of a previously submitted file job (translate_file, extract_tables, compress_file). Returns the current status, preview + checkout link for completed paid jobs, or the download URL for completed free/paid-and-unlocked jobs.",
"inputSchema": {
"properties": {
"job_id": {
"description": "The job_id returned by a job tool",
"type": "string"
}
},
"required": [
"job_id"
],
"type": "object"
},
"name": "check_job",
"title": "Check Job Status"
}
]
}
},
"url": "https://changethisfile.com/mcp"
},
"latency_ms": 10.0,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json"
},
"bad_protocol_payload": {
"id": 410,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Convert File"
},
"description": "Convert a file from one format to another. Add a verified ChangeThisFile API key for the shared developer allowance (25 free conversions/month); anonymous access is temporary compatibility mode. Pass EITHER a publicly accessible URL (source_url) OR base64-encoded file contents (base64_content + source_format) \u2014 exactly one is required. Returns a temporary download URL (valid 1 hour; file deleted within 24 hours).",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files; max ~5MB)",
"type": "string"
},
"filename": {
"description": "Optional filename hint for auto-detection (e.g. \"document.docx\"). Include this for extensionless download URLs when known.",
"type": "string"
},
"source_format": {
"description": "Source format extension (e.g. \"docx\", \"mp4\"). Optional: detected from filename, URL response filename, or file bytes when omitted.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the file to convert (preferred for large files)",
"type": "string"
},
"target_format": {
"description": "Target format extension (e.g. \"json\", \"mp3\", \"pdf\"). Required.",
"type": "string"
}
},
"required": [
"target_format"
],
"type": "object"
},
"name": "convert_file",
"title": "Convert File"
},
{
"annotations": {
"openWorldHint": false,
"readOnlyHint": true,
"title": "List Supported Conversions"
},
"description": "List all supported conversion routes. Optionally filter by source format to see what you can convert FROM a specific format.",
"inputSchema": {
"properties": {
"source_format": {
"description": "Filter by source format (e.g. \"docx\" returns all DOCX target options)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "list_conversions",
"title": "List Supported Conversions"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Translate Document"
},
"description": "Translate a document into another language with the original layout and formatting preserved (DOCX, PPTX, XLSX, PDF, TXT, MD, SRT, VTT). The job runs immediately and returns a FREE preview of the first pages plus a secure Stripe checkout link \u2014 the full translated file unlocks after payment ($4.99, one-time, no account needed). Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
},
"target_language": {
"description": "Target language name, e.g. \"Spanish\", \"Japanese\", \"Brazilian Portuguese\"",
"type": "string"
}
},
"required": [
"target_language"
],
"type": "object"
},
"name": "translate_file",
"title": "Translate Document (paid, free preview)"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Extract Tables to Excel"
},
"description": "Extract every table from a PDF or image (PNG, JPG, WebP) into a clean multi-sheet Excel file. The job runs immediately and returns a FREE preview of the first table plus a secure Stripe checkout link \u2014 the full .xlsx unlocks after payment ($3.99, one-time, no account needed). Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "extract_tables",
"title": "Extract Tables to Excel (paid, free preview)"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Compress File to Target Size"
},
"description": "Compress a file (PDF, JPG, PNG, WebP, MP4, MOV, WebM) down to an exact target size \u2014 e.g. \"under 5MB for an upload form\". FREE (daily limit applies). Returns a download URL on success; if the target is physically unreachable it fails honestly and reports the smallest achievable size. Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
},
"target_size_kb": {
"description": "Target maximum size in kilobytes (e.g. 5120 for 5MB). Min 50KB.",
"type": "integer"
}
},
"required": [
"target_size_kb"
],
"type": "object"
},
"name": "compress_file",
"title": "Compress File to Exact Size (free)"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Do Something to a File"
},
"description": "Describe what you want done to a file in plain language \u2014 e.g. \"translate this contract to German\", \"pull every table out of this PDF into Excel\", \"shrink this video to under 25MB\", \"convert this to PDF\". The instruction is routed to the right job automatically; if the request is not supported yet you get an honest explanation of what is. Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"instruction": {
"description": "What to do with the file, in plain language (any language)",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
}
},
"required": [
"instruction"
],
"type": "object"
},
"name": "do_file_job",
"title": "Do Something to a File (natural language)"
},
{
"annotations": {
"openWorldHint": false,
"readOnlyHint": true,
"title": "Check Job Status"
},
"description": "Check the status of a previously submitted file job (translate_file, extract_tables, compress_file). Returns the current status, preview + checkout link for completed paid jobs, or the download URL for completed free/paid-and-unlocked jobs.",
"inputSchema": {
"properties": {
"job_id": {
"description": "The job_id returned by a job tool",
"type": "string"
}
},
"required": [
"job_id"
],
"type": "object"
},
"name": "check_job",
"title": "Check Job Status"
}
]
}
},
"bad_protocol_status_code": 200,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header",
"bad_protocol_not_rejected"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 11.92,
"status": "error"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": null
},
"initialize_capability_keys": [
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 9.73,
"status": "missing"
}
},
"failures": {
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"transport_compliance_probe": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json"
},
"bad_protocol_payload": {
"id": 410,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Convert File"
},
"description": "Convert a file from one format to another. Add a verified ChangeThisFile API key for the shared developer allowance (25 free conversions/month); anonymous access is temporary compatibility mode. Pass EITHER a publicly accessible URL (source_url) OR base64-encoded file contents (base64_content + source_format) \u2014 exactly one is required. Returns a temporary download URL (valid 1 hour; file deleted within 24 hours).",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files; max ~5MB)",
"type": "string"
},
"filename": {
"description": "Optional filename hint for auto-detection (e.g. \"document.docx\"). Include this for extensionless download URLs when known.",
"type": "string"
},
"source_format": {
"description": "Source format extension (e.g. \"docx\", \"mp4\"). Optional: detected from filename, URL response filename, or file bytes when omitted.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the file to convert (preferred for large files)",
"type": "string"
},
"target_format": {
"description": "Target format extension (e.g. \"json\", \"mp3\", \"pdf\"). Required.",
"type": "string"
}
},
"required": [
"target_format"
],
"type": "object"
},
"name": "convert_file",
"title": "Convert File"
},
{
"annotations": {
"openWorldHint": false,
"readOnlyHint": true,
"title": "List Supported Conversions"
},
"description": "List all supported conversion routes. Optionally filter by source format to see what you can convert FROM a specific format.",
"inputSchema": {
"properties": {
"source_format": {
"description": "Filter by source format (e.g. \"docx\" returns all DOCX target options)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "list_conversions",
"title": "List Supported Conversions"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Translate Document"
},
"description": "Translate a document into another language with the original layout and formatting preserved (DOCX, PPTX, XLSX, PDF, TXT, MD, SRT, VTT). The job runs immediately and returns a FREE preview of the first pages plus a secure Stripe checkout link \u2014 the full translated file unlocks after payment ($4.99, one-time, no account needed). Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
},
"target_language": {
"description": "Target language name, e.g. \"Spanish\", \"Japanese\", \"Brazilian Portuguese\"",
"type": "string"
}
},
"required": [
"target_language"
],
"type": "object"
},
"name": "translate_file",
"title": "Translate Document (paid, free preview)"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Extract Tables to Excel"
},
"description": "Extract every table from a PDF or image (PNG, JPG, WebP) into a clean multi-sheet Excel file. The job runs immediately and returns a FREE preview of the first table plus a secure Stripe checkout link \u2014 the full .xlsx unlocks after payment ($3.99, one-time, no account needed). Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "extract_tables",
"title": "Extract Tables to Excel (paid, free preview)"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Compress File to Target Size"
},
"description": "Compress a file (PDF, JPG, PNG, WebP, MP4, MOV, WebM) down to an exact target size \u2014 e.g. \"under 5MB for an upload form\". FREE (daily limit applies). Returns a download URL on success; if the target is physically unreachable it fails honestly and reports the smallest achievable size. Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
},
"target_size_kb": {
"description": "Target maximum size in kilobytes (e.g. 5120 for 5MB). Min 50KB.",
"type": "integer"
}
},
"required": [
"target_size_kb"
],
"type": "object"
},
"name": "compress_file",
"title": "Compress File to Exact Size (free)"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Do Something to a File"
},
"description": "Describe what you want done to a file in plain language \u2014 e.g. \"translate this contract to German\", \"pull every table out of this PDF into Excel\", \"shrink this video to under 25MB\", \"convert this to PDF\". The instruction is routed to the right job automatically; if the request is not supported yet you get an honest explanation of what is. Provide EITHER source_url OR base64_content, plus a filename with extension.",
"inputSchema": {
"properties": {
"base64_content": {
"description": "Base64-encoded file content (for small files)",
"type": "string"
},
"filename": {
"description": "Filename WITH extension (e.g. \"report.pdf\"). Required when the format cannot be inferred from source_url.",
"type": "string"
},
"instruction": {
"description": "What to do with the file, in plain language (any language)",
"type": "string"
},
"source_url": {
"description": "Publicly accessible URL of the input file (preferred for large files)",
"type": "string"
}
},
"required": [
"instruction"
],
"type": "object"
},
"name": "do_file_job",
"title": "Do Something to a File (natural language)"
},
{
"annotations": {
"openWorldHint": false,
"readOnlyHint": true,
"title": "Check Job Status"
},
"description": "Check the status of a previously submitted file job (translate_file, extract_tables, compress_file). Returns the current status, preview + checkout link for completed paid jobs, or the download URL for completed free/paid-and-unlocked jobs.",
"inputSchema": {
"properties": {
"job_id": {
"description": "The job_id returned by a job tool",
"type": "string"
}
},
"required": [
"job_id"
],
"type": "object"
},
"name": "check_job",
"title": "Check Job Status"
}
]
}
},
"bad_protocol_status_code": 200,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header",
"bad_protocol_not_rejected"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
}
},
"remote_url": "https://changethisfile.com/mcp",
"server_card_payload": null,
"server_identifier": "aadilr/changethisfile-mcp"
}
Known versions
- No versions recorded.
Validation history
| Timestamp | Status | Score | Latency | Tools |
|---|---|---|---|---|
| Aug 08, 2026 06:50:54 AM UTC | Degraded | 52.9 | 802.9 ms | 7 |
| Aug 08, 2026 02:50:39 AM UTC | Degraded | 31.8 | 767.2 ms | 0 |
| Aug 07, 2026 10:48:38 PM UTC | Degraded | 31.8 | 1024.9 ms | 0 |
| Aug 07, 2026 06:37:29 PM UTC | Degraded | 31.8 | 772.8 ms | 0 |
| Aug 07, 2026 02:37:07 PM UTC | Degraded | 31.8 | 1052.3 ms | 0 |
| Aug 07, 2026 10:36:09 AM UTC | Degraded | 31.8 | 773.1 ms | 0 |
| Aug 07, 2026 06:15:08 AM UTC | Degraded | 31.8 | 1038.7 ms | 0 |
| Aug 07, 2026 02:07:43 AM UTC | Degraded | 31.8 | 676.4 ms | 0 |
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| Aug 08, 2026 06:50:54 AM UTC | Degraded | 52.9 | 2025-03-26 | oauth_supported | 7 | 1 | auth_mode_changed write_surface_expanded tool_snapshot_changed |
| Aug 08, 2026 02:50:39 AM UTC | Degraded | 31.8 | unknown | unknown | 0 | 0 | none |
| Aug 07, 2026 10:48:38 PM UTC | Degraded | 31.8 | unknown | unknown | 0 | 0 | none |
| Aug 07, 2026 06:37:29 PM UTC | Degraded | 31.8 | unknown | unknown | 0 | 0 | none |
| Aug 07, 2026 02:37:07 PM UTC | Degraded | 31.8 | unknown | unknown | 0 | 0 | none |
| Aug 07, 2026 10:36:09 AM UTC | Degraded | 31.8 | unknown | unknown | 0 | 0 | none |
| Aug 07, 2026 06:15:08 AM UTC | Degraded | 31.8 | unknown | unknown | 0 | 0 | none |
| Aug 07, 2026 02:07:43 AM UTC | Degraded | 31.8 | unknown | unknown | 0 | 0 | none |
| Aug 06, 2026 10:07:12 PM UTC | Degraded | 31.8 | unknown | unknown | 0 | 0 | none |
| Aug 06, 2026 06:06:49 PM UTC | Degraded | 31.8 | unknown | unknown | 0 | 0 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| Aug 08, 2026 06:50:53 AM UTC | Completed | Degraded | 802.9 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, schema_divergence_probe, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Aug 08, 2026 02:50:38 AM UTC | Completed | Degraded | 767.2 ms | |
| Aug 07, 2026 10:48:37 PM UTC | Completed | Degraded | 1024.9 ms | |
| Aug 07, 2026 06:37:28 PM UTC | Completed | Degraded | 772.8 ms | |
| Aug 07, 2026 02:37:06 PM UTC | Completed | Degraded | 1052.3 ms | |
| Aug 07, 2026 10:36:08 AM UTC | Completed | Degraded | 773.1 ms | |
| Aug 07, 2026 06:15:07 AM UTC | Completed | Degraded | 1038.7 ms | |
| Aug 07, 2026 02:07:43 AM UTC | Completed | Degraded | 676.4 ms | |
| Aug 06, 2026 10:07:12 PM UTC | Completed | Degraded | 692.1 ms | |
| Aug 06, 2026 06:06:48 PM UTC | Completed | Degraded | 661.4 ms | |
Public server reputation
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| Aug 08, 2026 06:50:54 AM UTC | Latest validation: degraded | Score 52.9 with status degraded. |
| Aug 08, 2026 06:50:54 AM UTC | Score changed | Score delta +21.2 versus the previous run. |
| Aug 08, 2026 06:50:54 AM UTC | Tool snapshot changed | Added 7, removed 0, and changed 0 tool contracts. |
| Aug 08, 2026 06:50:54 AM UTC | Auth mode changed | Auth mode moved from unknown to oauth_supported. |
| Aug 05, 2026 11:01:13 AM UTC | Score corrected (post-1.0.503 remediation, R1 zero-anchoring) | Prior: 61.88. Corrected: 59.96. |
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: https://glama.ai/mcp/servers/y5n0ka5f7m
- Docs: none
- Support: https://github.com/aadilr/changethisfile-mcp
- Icon: none
- Remote endpoint: https://changethisfile.com/mcp
- Server card: https://changethisfile.com/.well-known/mcp/server-card.json
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Passes |
|
| Read-only fetch flow | Degraded |
|
| OAuth-required connect | Passes |
|
| Safe write flow with confirmation | Degraded |
|
Utility coverage
Transport compliance drilldown
Issues: missing_session_id, missing_protocol_header, bad_protocol_not_rejected
Request association
Connector replay
Required-argument replay breaks
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument replay breaks detected. | ||
Output-schema replay breaks
| Tool | Removed properties | Added properties |
|---|---|---|
| No output-schema replay breaks detected. | ||
Tool snapshot diff & changelog
Required-argument changes
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument changes detected. | ||
Output-schema drift
| Tool | Previous properties | Latest properties |
|---|---|---|
| No output-schema drift detected. | ||
Validation diff
Regressed checks: provenance_divergence_probe, transport_compliance_probe
Improved checks: connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_protected_resource, probe_noise_resilience, server_card, tool_snapshot_probe, tools_list
Newly assessed dimensions: none
No longer assessed dimensions: none
| Component | Previous | Latest | Delta |
|---|---|---|---|
| No component deltas between the latest two runs. | |||
Registry & provenance divergence
| Field | Registry | Live server card |
|---|---|---|
| Title | n/a | changethisfile |
| Version | n/a | 1.3.0 |
| Homepage | n/a | n/a |
Active alerts
- Latest validation is degraded (medium)
The server is reachable but at least one important behavior regressed. - Server card does not publish tool schemas (low)
7 tool(s) are listed on the published server card without an inputSchema: check_job, compress_file, convert_file, do_file_job, extract_tables.... This is a completeness gap, not a contradiction -- clients must call tools/list for parameter details rather than trusting the card. - Tool snapshot changed (high)
Tools were added, removed, or materially changed between the latest two validations. - Auth mode changed (high)
Auth mode changed from unknown to oauth_supported. - Write-action surface expanded (high)
The number of high-risk write, delete, exec, or bulk-access tools increased on the latest run.
Aliases & registry graph
| Identifier | Source | Canonical | Score |
|---|---|---|---|
aadilr/changethisfile-mcp |
glama_registry | yes | 52.9 |
github-aadilr/changethisfile-mcp |
github_topic_registry | no | n/a |
awesome-aadilr/changethisfile-mcp |
awesome_mcp_servers | no | n/a |
Alias consolidation
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| Registry source | Multiple registries or registry sync paths claim this same canonical server. | awesome_mcp_servers github_topic_registry glama_registry |
| Remote URL | Aliases currently point at different MCP endpoints, which can indicate mirrors, stale registry data, or a real endpoint split. | https://changethisfile.com/mcp https://glama.ai/mcp/servers/aadilr/changethisfile-mcp/badges/score.svg)](https://glama.ai/mcp/servers/aadilr/changethisfile-mcp |
| Homepage | Registry entries disagree on the primary homepage for this server. | https://changethisfile.com https://github.com/aadilr/changethisfile-mcp https://glama.ai/mcp/servers/y5n0ka5f7m |
| Registry identifier | Different registry-specific identifiers resolve to the same canonical server record here. | awesome_mcp_servers:aadilr/changethisfile-mcp github_topic_registry:aadilr/changethisfile-mcp glama_registry:y5n0ka5f7m |
Fix it
Why this score?
Algorithmic score breakdown
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| High | Add confirmation and dry-run semantics for risky actions | High-risk write, delete, exec, or egress tools should communicate safeguards clearly. | Add an explicit confirm/dry-run parameter or two-step confirmation flow to write, delete, exec, and egress-capable tools before they can make destructive changes.Playbook
|
| High | Align session and protocol behavior with Streamable HTTP expectations | Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. | Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.Playbook
|
| High | Publish OAuth authorization-server metadata | Clients need authorization-server metadata to discover issuer, endpoints, and DCR support. | Publish /.well-known/oauth-authorization-server from your issuer and include registration_endpoint when supported.Playbook
|
| High | Resolve conflicting endpoints across registry aliases | Registry aliases for this canonical server currently resolve to different live MCP endpoints (https://changethisfile.com/mcp, https://glama.ai/mcp/servers/aadilr/changethisfile-mcp/badges/score.svg)](https://glama.ai/mcp/servers/aadilr/changethisfile-mcp). An agent following one registry entry reaches a different server than one following another. | Confirm which endpoint is canonical, correct or retire the stale registry entry, and re-sync so every alias agrees on one remote_url.Playbook
|
| High | Respond to auth mode changed | Auth mode changed from unknown to oauth_supported. | Document the new auth posture and confirm protected-resource and challenge metadata still match reality. |
| High | Respond to tool snapshot changed | Tools were added, removed, or materially changed between the latest two validations. | Publish a first-class changelog for tool additions, removals, and breaking schema changes.Playbook
|
| High | Respond to write-action surface expanded | The number of high-risk write, delete, exec, or bulk-access tools increased on the latest run. | Review the newly exposed write and destructive actions before publishing them broadly.Playbook
|
| High | Sync the published server card's tool schemas with the live tool surface | The server card and live tools/list disagree on parameter names, required sets, or types -- clients that trust the published card will construct invalid calls. | Regenerate the published server card from the live tool schemas (or vice versa) so parameter names, required sets, and types match exactly.Playbook
|
| Medium | Adopt a current MCP protocol revision | Older protocol revisions reduce compatibility with newer clients and registry programs. | Advertise a current MCP protocol revision (2025-06-18 or later) in both the initialize response and the MCP-Protocol-Version header.Playbook
|
| Medium | Close connector-publishing gaps | Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. | |
| Medium | Document minimal scopes and return cleaner auth challenges | Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints. | Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.Playbook
|
| Medium | Publish OpenID configuration | OIDC metadata improves token validation and client compatibility. | Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.Playbook
|
| Medium | Respond to latest validation is degraded | The server is reachable but at least one important behavior regressed. | Resolve the regressed checks and review the latest validation diff. |
| Medium | Support resumable HTTP sessions cleanly | Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. | Persist session state keyed by Mcp-Session-Id and honor Last-Event-ID on GET reconnects so clients can resume a dropped Streamable HTTP session.Playbook
|
| Low | Expose modern utility surfaces like completions, pagination, or tasks | Utility coverage improves interoperability with larger clients and long-lived agent workflows. | Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.Playbook
|
| Low | Publish newer MCP capability signals | Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. | Advertise only the advanced capabilities (roots, sampling, elicitation) you have actually implemented end to end in the initialize capabilities object.Playbook
|
| Low | Publish or reconcile the server in the official MCP registry | Official registry presence improves discovery confidence and cross-source consistency. | |
| Low | Respond to server card does not publish tool schemas | 7 tool(s) are listed on the published server card without an inputSchema: check_job, compress_file, convert_file, do_file_job, extract_tables.... This is a completeness gap, not a contradiction -- clients must call tools/list for parameter details rather than trusting the card. |
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Utility Coverage | 0/4 | -4.0 |
| Transport Compliance | 0/4 | -4.0 |
| Resource Contract | 0/4 | -4.0 |
| Request Association | 0/4 | -4.0 |
| Recovery Semantics | 0/4 | -4.0 |
| Prompt Contract | 0/4 | -4.0 |
| Dependency Supply Chain Signal | 0/4 | -4.0 |
| Advanced Capability Coverage | 0/4 | -4.0 |
| OAUTH Interop | 1/4 | -3.0 |
| Least Privilege Scope | 1/4 | -3.0 |
| Spec Recency | 2/4 | -2.0 |
| Security Hygiene | 2/4 | -2.0 |
Compatibility profiles
Connector URL: https://changethisfile.com/mcp # Complete OAuth in the client when prompted. # Server: aadilr/changethisfile-mcp
{
"mcpServers": {
"changethisfile-mcp": {
"command": "npx",
"args": ["mcp-remote", "https://changethisfile.com/mcp"]
}
}
}
smithery mcp add "https://changethisfile.com/mcp"
curl -sS https://changethisfile.com/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Governance
MCP TrustOps
TrustOps turns this report into operational controls: freshness SLAs, authenticated validation, semantic benchmarks, policy exports, alert subscriptions, badges, cost/compliance metadata, and runtime routing. Fresh trusted index decisions stay separate from long-tail inventory so stale scores do not masquerade as current evidence.
/v1/decideAlert subscription types
MCP Runtime hosting
Verify Hosted MCP turns a trusted server report into a managed remote MCP endpoint with GitHub deployment provenance, sandbox policy, encrypted secrets, release history, rollback, and audit/usage events.
/hosted/{namespace}/{name}/mcp| Deployment | Status | Endpoint | Release |
|---|---|---|---|
| No hosted runtime deployments yet. | |||
Authenticated validation sessions
Public validation is free. Authenticated validation is paid and proves scoped behavior, write-action safeguards, and authenticated tool execution.
/v1/verify/v1/ci/previewInstall snippets
Connector URL: https://changethisfile.com/mcp # Complete OAuth in the client when prompted. # Server: aadilr/changethisfile-mcp
{
"mcpServers": {
"changethisfile-mcp": {
"command": "npx",
"args": ["mcp-remote", "https://changethisfile.com/mcp"]
}
}
}
smithery mcp add "https://changethisfile.com/mcp"
curl -sS https://changethisfile.com/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Agent access & tool surface
tools/list, prompts/list, and resources/list checks.aadilr/changethisfile-mcp.