MCP Server

Ouro Tools

tools.ouro/ouro-tools

What this MCP does

Creates charts and PDFs, extracts tables and webpage text, manages forms and feeds, and provides temporary document and webhook sharing.

chartlink_create_chart
Create a bar, line, or stacked bar chart from numbers. Returns SVG and PNG files plus a hosted result for 24 hours.
Input schema
{'type': 'object', 'required': ['labels', 'datasets'], 'properties': {'type': {'enum': ['bar', 'line', 'stacked-bar'], 'type': 'string'}, 'theme': {'enum': ['paper', 'midnight', 'sage'], 'type': 'string'}, 'title': {'type': 'string', 'maxLength': 120}, 'width': {'type': 'integer', 'maximum': 1600, 'minimum': 480}, 'height': {'type': 'integer', 'maximum': 1000, 'minimum': 360}, 'labels': {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 60, 'minItems': 1}, 'caption': {'type': 'string', 'maxLength': 400}, 'datasets': {'type': 'array', 'items': {'type': 'object', 'required': ['values'], 'properties': {'name': {'type': 'string', 'maxLength': 60}, 'values': {'type': 'array', 'items': {'type': 'number', 'maximum': 1000000000000, 'minimum': -1000000000000}, 'maxItems': 60, 'minItems': 1}}}, 'maxItems': 6, 'minItems': 1}, 'subtitle': {'type': 'string', 'maxLength': 160}}}
chartlink_get_chart
Retrieve a chart and download URLs before its 24-hour expiry.
Read only
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}}}
cleanread_read_page
Extract readable text, Markdown, headings, HTTP links, and tables from one accessible public webpage. Does not execute JavaScript or bypass access restrictions.
Read only Open world
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048, 'description': 'Public HTTP or HTTPS URL to read.'}}, 'additionalProperties': False}
collect_close_form
Stop accepting responses. Answers remain privately accessible until expiry.
Input schema
{'type': 'object', 'required': ['id', 'token'], 'properties': {'id': {'type': 'string'}, 'token': {'type': 'string'}}}
collect_create_form
Create a form for 30 days and up to 100 responses. Costs $1 in credits after the trial. Returns a public form link and a private owner token.
Input schema
{'type': 'object', 'required': ['title', 'questions'], 'properties': {'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'questions': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'type'], 'properties': {'id': {'type': 'string', 'pattern': '^[A-Za-z][A-Za-z0-9_]{0,39}$'}, 'type': {'enum': ['text', 'multiple-choice', 'checkbox'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'maxItems': 12, 'minItems': 2, 'uniqueItems': True}, 'required': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}, 'maxItems': 12, 'minItems': 1}, 'description': {'type': 'string', 'maxLength': 1000}}, 'additionalProperties': False}
collect_delete_form
Delete a form and its responses using the owner token.
Destructive
Input schema
{'type': 'object', 'required': ['id', 'token'], 'properties': {'id': {'type': 'string'}, 'token': {'type': 'string'}}}
collect_read_form
Read public form questions and availability. Does not expose answers or owner credentials.
Read only
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}}}
collect_read_responses
Privately retrieve a form and its answers with its owner token.
Read only
Input schema
{'type': 'object', 'required': ['id', 'token'], 'properties': {'id': {'type': 'string'}, 'token': {'type': 'string'}}}
collect_submit_response
Submit answers keyed by question ID to an open form. Text is limited to 2,000 characters per answer and 32 KB total.
Input schema
{'type': 'object', 'required': ['id', 'answers'], 'properties': {'id': {'type': 'string'}, 'answers': {'type': 'object', 'additionalProperties': {'oneOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 12, 'uniqueItems': True}]}}}}
droplink_delete_document
Delete a published DropLink immediately using its private deletion token.
Destructive
Input schema
{'type': 'object', 'required': ['id', 'token'], 'properties': {'id': {'type': 'string'}, 'token': {'type': 'string'}}, 'additionalProperties': False}
droplink_publish_document
Publish a Markdown report or CSV table as a readable, publicly shareable page for 24 hours. Returns a private deletion token only once. Scripts, images, and embeds are removed. Limits: 80,000 bytes, 500 CSV rows, 30 columns.
Input schema
{'type': 'object', 'required': ['format', 'content'], 'properties': {'title': {'type': 'string', 'maxLength': 120}, 'format': {'enum': ['markdown', 'csv'], 'type': 'string'}, 'content': {'type': 'string', 'maxLength': 80000}}, 'additionalProperties': False}
droplink_read_document
Read a published DropLink document and its expiry. Expired links return 404.
Read only
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}
feedform_normalize_feed
Normalize one RSS 2.0 or Atom XML feed to stable JSON. Free; 1 MiB input, up to 100 returned items. Does not fetch URLs or retain feed content.
Read only
Input schema
{'type': 'object', 'required': ['xml'], 'properties': {'xml': {'type': 'string', 'maxLength': 1048576, 'minLength': 1}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1}}, 'additionalProperties': False}
hookbox_create_inbox
Create a 24-hour webhook inbox with independent incoming and private reading capabilities. Accepts 100 events up to 16 KB each.
Input schema
{'type': 'object', 'properties': {'title': {'type': 'string', 'maxLength': 80}}}
hookbox_delete_inbox
Delete a webhook inbox and all its stored events.
Destructive
Input schema
{'type': 'object', 'required': ['id', 'token'], 'properties': {'id': {'type': 'string'}, 'token': {'type': 'string'}}}
hookbox_read_inbox
Read a webhook inbox using its private read token.
Read only
Input schema
{'type': 'object', 'required': ['id', 'token'], 'properties': {'id': {'type': 'string'}, 'token': {'type': 'string'}}}
printkit_create_pdf
Create a PDF using a report, proposal, or briefing layout. Provide Markdown or structured sections. Maximum 10 pages. Files expire after 24 hours. Limited trial usage, then 10 cents per document from prepaid credit.
Input schema
{'type': 'object', 'oneOf': [{'required': ['markdown']}, {'required': ['sections']}], 'required': ['title'], 'properties': {'title': {'type': 'string', 'maxLength': 180}, 'author': {'type': 'string', 'maxLength': 100}, 'markdown': {'type': 'string', 'maxLength': 40000, 'minLength': 1}, 'sections': {'type': 'array', 'items': {'type': 'object', 'required': ['body'], 'properties': {'body': {'type': 'string', 'maxLength': 40000, 'minLength': 1}, 'heading': {'type': 'string', 'maxLength': 180}}}, 'maxItems': 24, 'minItems': 1}, 'subtitle': {'type': 'string', 'maxLength': 300}, 'template': {'enum': ['report', 'proposal', 'briefing'], 'type': 'string', 'default': 'report'}}, 'additionalProperties': False}
sourcecheck_check_sources
Check up to ten public source URLs for successful HTTP responses, final URLs, titles, and optional quotation matches in fetched text. Reports blocked and unreadable sources honestly. Does not verify factual truth.
Read only Open world
Input schema
{'type': 'object', 'required': ['sources'], 'properties': {'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'quote': {'type': 'string', 'maxLength': 2000}}}, 'maxItems': 10, 'minItems': 1}}}
tablelift_extract_tables
Extract bordered tables from a text-based PDF into CSV and JSON with source page numbers. Maximum 3 MB and 10 pages. Scans and borderless tables are unsupported. Costs 10 cents per document page after the trial allowance; no charge when no useful tables are found.
Input schema
{'type': 'object', 'required': ['pdfBase64'], 'properties': {'filename': {'type': 'string', 'maxLength': 120}, 'pdfBase64': {'type': 'string', 'maxLength': 4194332, 'description': 'Base64-encoded PDF bytes, maximum 3 MB decoded.'}}}
Changed
feedform_normalize_feed
Oct. 1, 2026, 2:43 a.m.
Changed
sourcecheck_check_sources
Oct. 1, 2026, 2:43 a.m.
Changed
cleanread_read_page
Oct. 1, 2026, 2:43 a.m.
Added
feedform_normalize_feed
Sept. 23, 2026, 2:40 a.m.
Added
collect_delete_form
Sept. 23, 2026, 2:40 a.m.
Added
collect_close_form
Sept. 23, 2026, 2:40 a.m.
Added
collect_read_responses
Sept. 23, 2026, 2:40 a.m.
Added
collect_submit_response
Sept. 23, 2026, 2:40 a.m.
Added
collect_read_form
Sept. 23, 2026, 2:40 a.m.
Added
collect_create_form
Sept. 23, 2026, 2:40 a.m.
Added
tablelift_extract_tables
Sept. 23, 2026, 2:40 a.m.
Added
printkit_create_pdf
Sept. 23, 2026, 2:40 a.m.
Added
sourcecheck_check_sources
Sept. 23, 2026, 2:40 a.m.
Added
cleanread_read_page
Sept. 23, 2026, 2:40 a.m.
Added
chartlink_get_chart
Sept. 23, 2026, 2:40 a.m.
Added
chartlink_create_chart
Sept. 23, 2026, 2:40 a.m.
Added
hookbox_delete_inbox
Sept. 23, 2026, 2:40 a.m.
Added
hookbox_read_inbox
Sept. 23, 2026, 2:40 a.m.
Added
hookbox_create_inbox
Sept. 23, 2026, 2:40 a.m.
Added
droplink_delete_document
Sept. 23, 2026, 2:40 a.m.
Added
droplink_read_document
Sept. 23, 2026, 2:40 a.m.
Added
droplink_publish_document
Sept. 23, 2026, 2:40 a.m.