Documentation
Back
  • Introduction
    • Connect your first inbox
    • Quick start
    • Platform overview
    • Configuration
  • Doana Aviation MCP
  • Features
    • Multi-regime compliance
    • Team management
    • Adaptive exports

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_form1 with content_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 to upload_url, or, if the agent has no outbound network, have the user open browser_upload_url and drop the file in the browser; then extract_easa_form1 with upload_id
  • ChatGPT attachment: the file param (download_url signed on files.openai.com or *.oaiusercontent.com, plus file_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 — obtain upload_url / browser_upload_url and upload_id when content_base64 cannot carry the file
  • extract_easa_form1 — one file, one call. Wait for the table when the job can settle in the same turn.
  • get_extraction_result — only when a job_id is already known
  • get_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.