MakeItSay
Server Details
Change the words in a screenshot or photo and keep the original font and layout.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a clearly distinct function: get_credits reports account balance, get_edit checks edit status, scan_text reads text, and replace_text performs the mutation. There is no meaningful overlap or risk of confusing scan_text with replace_text, or get_credits with get_edit.
All four tool names follow a consistent snake_case verb_noun pattern: get_credits, get_edit, replace_text, scan_text. The convention is predictable and readable throughout.
Four tools is well-scoped for a focused image text-editing service: credits, scanning, replacement, and edit-status retrieval. No tool feels redundant, and the surface is neither thin nor heavy.
The core workflow is covered: check credits, scan text for exact matches, replace text, and poll edit status for the result URL. Minor gaps exist around edit history/cancellation or explicit image upload handling, but agents can complete the primary task without dead ends.
Available Tools
4 toolsget_creditsCredits leftARead-onlyInspect
Credits available on this MakeItSay account. One credit edits one image.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description's main added value is the costing model ('One credit edits one image'), which is genuinely useful context for deciding whether to proceed with an edit. It does not describe what the response looks like (a number, a breakdown per account, etc.), and there is no output schema to cover that gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what is returned and followed by the unit semantics. Nothing is wasted or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool this covers purpose and unit meaning adequately. The only meaningful omission is the shape of the return value, which no output schema describes either.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource being retrieved and its scope ('Credits available on this MakeItSay account'), which is clearly distinct from the sibling tools that all perform edits. It stops short of naming the retrieval action explicitly, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus alternatives — e.g. that an agent should check the balance before invoking replace_text or get_edit. The relevance of the credit cost to the edit tools is implied by the second sentence but never stated as a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_editGet an editARead-onlyInspect
Status of an edit. When ready, result_url downloads the edited PNG for one hour. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| edit_id | Yes | The id returned by replace_text. | |
| wait_seconds | No | How long to wait for the result before returning, 0 to 50 seconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavioral context: result_url downloads the edited PNG for one hour and the operation is free, which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool returns and followed by the key behavioral detail about result_url expiry and cost. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only status tool with two fully described parameters and no output schema, the description covers the essential behavior: it returns status and, when ready, a time-limited download URL. It could be slightly more complete by explicitly noting that wait_seconds enables long-polling, but the schema already carries that detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents edit_id and wait_seconds. The description does not add any parameter-level detail beyond what the schema provides, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it returns the status of an edit, which is a specific resource and operation, and is distinguishable from siblings like replace_text or scan_text. However, the verb is implied rather than explicit ('Status of an edit' rather than 'Get the status'), so it falls short of maximal specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies polling for an edit result after creation, especially with the note about result_url being ready, but it does not explicitly say when to use this tool versus alternatives or when not to use it. Usage is inferable but not clearly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_textChange the text in an imageAInspect
Change or remove text in a photo or screenshot and keep the same font, colour and background. Give each line to change as { from, to }: "from" is the text as it appears in the image, "to" the new text (empty to remove it). Up to 20 lines per image; 1 credit per image. The image is scanned first; if a "from" is not found, nothing is charged and the error lists the lines that were read. IDs, certificates, receipts, invoices and bank documents are refused. Waits up to 50 seconds; if still editing, call get_edit.
| Name | Required | Description | Default |
|---|---|---|---|
| hint | No | Optional: where the text is when it appears more than once, e.g. "the line at the bottom". | |
| locale | No | Language of the person asking (for our statistics only). Default en. | |
| image_url | No | Public https URL of the image (PNG or JPG). | |
| image_base64 | No | The image as base64, with or without a data: prefix. Use when there is no URL. | |
| replacements | Yes | ||
| wait_seconds | No | How long to wait for the result before returning, 0 to 50 seconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantially beyond the annotations: 1 credit per image, no charge when a 'from' is not found, refusal of official documents, 20-line cap, 50-second wait and async fallback. The unbilled-failure and refusal policies are exactly the behavioral facts annotations can't express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then payload format, then limits, then billing/failure semantics, then timeout fallback. Every sentence carries an operational fact; nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers cost, limits, refusal policy, error content and timeout behavior for a mutation tool with no output schema. Only the shape of a successful response (what IDs or result fields come back) is left unspecified, which is minor since get_edit is named for follow-up.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so baseline is 3, but the description adds real meaning: 'from' is the text as it literally appears, 'to' empty means delete, and the 20-line limit is restated as an operational constraint. It doesn't explain hint, locale, or the image_url/image_base64 choice, leaving some parameters to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Change or remove text in a photo or screenshot') plus the quality constraint (same font, colour, background), which immediately separates it from scan_text (read-only) and get_edit (status check). An agent can route on this sentence alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions and exclusions: documents like IDs, certificates, receipts are refused, and if the edit is still running 'call get_edit'. It also explains the scan-first validation path. It does not explicitly contrast with scan_text, so it falls just short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_textRead the text in an imageARead-onlyInspect
Read every line of text in an image with its position (0 to 1000 from the top left). Free, but counts toward the scan limit. Use it to find the exact "from" text for replace_text.
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | No | Public https URL of the image (PNG or JPG). | |
| image_base64 | No | The image as base64, with or without a data: prefix. Use when there is no URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and openWorld, and the description adds real value beyond that: it discloses the coordinate system for returned positions and the cost model ('Free, but counts toward the scan limit'). It does not discuss failure modes or the relationship between the two image inputs, which the schema covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, then the output shape, then the usage link. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully explains that the result is lines of text with positions. The only gap is that with zero required parameters, it doesn't clarify that exactly one of image_url or image_base64 must be supplied, though the schema implies it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains image_url and image_base64 fully. The description adds no parameter-specific meaning beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (every line of text in an image), plus the shape of the result (position 0-1000 from top left). This clearly distinguishes it from siblings like replace_text and get_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names a use case and the sibling it feeds: 'Use it to find the exact "from" text for replace_text.' That is strong routing guidance, but it stops short of stating when not to use it or naming other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
get_credits - First observed
get_edit - First observed
replace_text - First observed
scan_text
Related MCP Connectors
Edit text inside existing PDFs: replace, delete, redact, insert, fill forms; original fonts kept.
Design and export App Store / Play Store screenshots, localized across all 48 App Store locales.
Edit PDF text in place, fonts and layout kept. Compress, merge, split, convert and translate PDFs.
- SudoMockOAuthcom.sudomock
Turn product photos or PSD templates into photorealistic mockups: place artwork, edit text, render.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables editing text in existing PDFs — replacing, deleting, redacting, inserting, and filling forms — while preserving original fonts and layout, with each change verified before being returned.MIT
- AlicenseBqualityAmaintenancePicks the right PhoText (photext.ai) web tool to edit, replace, remove or translate text inside images and screenshots while keeping the original font, or to identify a font. No API key needed.6MIT
- FlicenseAqualityCmaintenanceGenerates beautiful App Store and Play Store screenshots by inserting app images into iPhone/iPad mockup frames with customizable text overlays and gradient backgrounds. Supports multiple device types and batch generation with both free and pro subscription tiers.8-
- AlicenseAqualityCmaintenanceTurn raw app screenshots into App Store & Google Play marketing screenshots from Cursor, Claude, or any MCP client.634 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.