Doana Aviation MCP
Connect an agent to the Doana MCP server to extract an EASA Form 1.
Streamable HTTP transport is https://doana.ca/api/mcp. Authenticate with OAuth against that URL. https://doana.ca/mcp is a product page, not the server.
OAuth 2.1 via Supabase. Resource metadata: /.well-known/oauth-protected-resource/api/mcp.
There is no public REST POST /extract. OpenAPI is discovery. There is no FAA 8130-3 extraction tool.
Send a file
Agents must send bytes, not a local path.
- file up to 64 KiB: call
extract_easa_form1withcontent_base64(base64 of the original bytes, lossless) - larger file, or one that does not fit in a tool call:
create_mcp_upload, then PUT raw bytes toupload_url, or, if the agent has no outbound network, have the user openbrowser_upload_urland drop the file in the browser; thenextract_easa_form1withupload_id - ChatGPT attachment: the
fileparam (download_urlsigned onfiles.openai.comor*.oaiusercontent.com, plusfile_id) is filled by ChatGPT; Doana downloads and streams the file during the tool call
Rejected: file://, data:, gs://, and arbitrary https:// URLs. Limits: PDF up to 50 MB and 20 pages, JPEG or PNG up to 20 MB. TIFF is rejected as UNSUPPORTED_FILE_TYPE.
Tools
create_mcp_upload— obtainupload_url/browser_upload_urlandupload_idwhencontent_base64cannot carry the fileextract_easa_form1— one file, one call. Wait for the table when the job can settle in the same turn.get_extraction_result— only when ajob_idis already knownget_usage— weekly quota
If a job_id is already known, call only get_extraction_result. Do not start a second job while status is dispatch_pending, queued, running, or outcome_unknown.
The first extract_easa_form1 envelope includes job_id, status, poll_after_seconds, replayed, quota, and an optional result. Public status values are dispatch_pending, queued, running, succeeded, failed_refundable, failed_charged, and outcome_unknown.
Poll get_extraction_result while status is dispatch_pending, queued, running, or outcome_unknown. Import only when status is succeeded, documentType is easa_form_1, and result is present. documentType: unknown is usually a succeeded job with no Form 1 — not a status named unknown. On failed_refundable or failed_charged, show lastError.
A failure on the same file can be retried as a new unit. Re-sending the same file within 24 hours can replay an in-flight or succeeded job.
Copy the returned table as-is. Do not invent boxes. A repeated serial such as C0499;C0499 is copied as-is. Always show the disclaimer: assisted extraction, not authenticity, airworthiness, or compliance.
Quota: 5 EASA Form 1 files per personal account per UTC week. MCP_QUOTA_EXHAUSTED waits until Monday 00:00 UTC unless paid credits remain.