Connect ChatGPT and Claude with MCP

The Arqa MCP connection lets ChatGPT and Claude read your projects and saved plans, retrieve the persisted intake workspace for a plan, retrieve professional PDF drawing sets, review plans and building ideas, generate floor plans, and create a checked structural-design version. Other edits happen in the Arqa web editor. Sign-in happens on an external authorization page; there is no embedded plan editor inside your assistant.

The connection page asks for the username and password of your Arqa account, the same ones you use on the website. The form is usable on a direct visit, but submitting without a valid ChatGPT or Claude connection is rejected before authentication. A notice below the form links to the main Arqa page for ordinary website sign-in. No session or MCP tokens are issued by a standalone submission. Other MCP clients are not supported.

The operator must enable and configure MCP. Availability also depends on your assistant account and workspace policies; this guide does not guarantee a published directory listing.

Account and cost

MCP uses your connected application account, its project permissions and its credits. A generation or a review through ChatGPT or Claude reserves credits from that account exactly as the website does and returns the unused part; with no credits left the tool fails until you buy credits in the Arqa app. Your assistant provider may apply its own limits or subscription requirements.

Connect your account

For ChatGPT, follow the step-by-step guide Add Arqa to ChatGPT. In short:

  1. Open apps/connectors in ChatGPT, or Settings > Connectors in Claude. Select Arqa if available, or add a custom connection if your account permits it.
  2. For a custom MCP connection, enter https://app.arqa.ing/mcp. Choose OAuth.
  3. ChatGPT uses an OAuth client registered by the operator; Claude uses its Client ID Metadata Document and PKCE. Any client credentials requested by custom ChatGPT setup come from the operator. Do not put credentials in conversation messages.
  4. Review the requested permissions on the Arqa /connect page, then enter the username and password of your Arqa account and select Sign in and authorize.
  5. An account is required: the connection creates none. Request access on the website waitlist first, and set your own password there if you still have the temporary one from your approval email. Return to your assistant when authorization completes.

The operator must configure the exact ChatGPT redirect URI shown for this connection. Do not use a guessed callback or a wildcard. Creating the connection also depends on your ChatGPT account and workspace policies.

Your website password authenticates the account; Arqa issues separate, scoped MCP access. The flow never creates an account and never signs your ordinary application browser session in or out. Sign-in cannot change the account's permissions. Disabling the account, or resetting its password, ends its connections. A direct visit to /connect grants nothing; begin by connecting the plugin from ChatGPT or Claude.

Permissions and tools

Only tools covered by your granted scopes appear in tool discovery.

  • projects:read: get_session_context, list_projects, get_plan, get_plan_workspace, export_plan_pdf, validate_plan, validate_idea.
  • plans:generate: generate_plan, get_generation_question, answer_generation, design_structure.

get_session_context returns the connected username, metric/imperial preference, application credit balance and recent project summaries. Supply a known context.project_id to include the active plan. It does not automatically choose a project for you.

list_projects returns active project summaries. Optional arguments are query, offset and limit (1–50; default 20). Use next_offset to retrieve another page; null means there is no next page.

get_plan requires a plan_id returned by the service. It returns the saved geometry, validation and saved intake snapshot for an accessible plan, not internal model traces or the generation chain.

get_plan_workspace requires a plan_id returned by the service. It returns the plan-linked, immutable workspace projection that intake used: confirmed or assumed facts, normalized wishes and generation status. After a successful design_structure run, it also records the structural version ID, construction system, sheet IDs and per-floor outcome; detailed member geometry remains on that saved plan version. It does not expose raw requests, conversation history, question-answer tokens, receipts or model traces, and it cannot modify the workspace.

export_plan_pdf requires a plan_id returned by the service. It returns the complete professional drawing-sheet set and room cards as a vector PDF attachment, limited to 16 MB. The document is for qualified professional review, not construction certification.

design_structure requires a saved plan_id, explicit confirmation and a unique run_id. It designs a new version with a checked structural grid, columns, footings, beams, lintels and structural sheets. Optional system is one of concrete_frame, confined_masonry, steel_frame or wood_frame; optional floors limits the run. The result remains indicative and needs qualified professional review before construction.

generate_plan requires a room program, explicit design confirmation, a location and a unique request ID. It saves a plan only when the backend reports a saved result.

MCP does not directly edit, delete or organize existing plans. Structural design is the sole version-creating exception and requires explicit confirmation. It can return a complete professional PDF drawing set, but does not expose specialized editor actions such as electrical/plumbing layout or 3D. Use the web application for those actions.

Conversation context

Every tool accepts an optional context object with:

  • project_id: a known project/plan identifier for context lookup.
  • floor: the active floor, starting at 1.
  • language: en, es or zh.
  • location: the user-supplied building location, at most 200 characters.
  • brief: relevant user-supplied design requirements, at most 2,000 characters.

For plan lookup, use the explicit plan_id argument; context.project_id does not replace it.

Only relevant context sent in the current tool call is available. The MCP cannot read other ChatGPT conversations, another session, Gmail or Google Drive. It does not retain an additional conversation transcript. Normal application records and any configured application datasets retain their existing privacy rules.

Do not include passwords, API keys, OAuth tokens or unrelated personal information in a brief. The combined generation extras, brief and location must fit within 2,000 characters.

Example arguments for get_session_context:

{
  "context": {
    "project_id": "plan-id-from-the-service",
    "floor": 1,
    "language": "es"
  }
}

Generate a plan

Ask for missing floor count, total area, room counts and location before generating. Confirm the design with the user first: a generation reserves credits from the connected account, as on the website, and returns what it does not use. The think mode is optional: simple is the default; creative and professional request additional AI effort.

All numeric intake dimensions use feet, and sqft is square feet, even when the account displays metric units. Convert explicitly rather than sending a metric number as sqft. Supply a room program and optional footprint, never room coordinates; the backend solver produces the geometry.

For a house that is not a rectangle, send intake.footprint with shape: "polygon" and its outline as [x, y] points in feet: 3 to 24 points, a simple ring with no crossing or touching sides, every side at least 3 ft, at least 300 sq ft, within 200 x 200 ft, and width/depth of 0. A house turned on its lot is footprint.angle (degrees clockwise, -90 to 90); a lot shape is intake.site.lot_polygon, and outdoor features are intake.site.features (pool, terrace, carport, tree or garden). A malformed outline is refused before generation, and the error names the field and the rule it breaks.

Example arguments for generate_plan:

{
  "request_id": "86e6e35c-9e5e-4a23-aebc-88b523d383ac",
  "confirmed": true,
  "think": "simple",
  "intake": {
    "floors": 1,
    "sqft": 1200,
    "rooms": {
      "bedroom": 2,
      "bath": 1,
      "living": 1,
      "kitchen": 1
    },
    "open_concept": true
  },
  "context": {
    "language": "es",
    "location": "Bogota, Colombia",
    "brief": "An open kitchen and a quiet bedroom."
  }
}

Use a fresh opaque request_id for a new generation intent. Keep the same ID when retrying a transport failure: it is forwarded as the backend idempotency key. A duplicate or already-running request is reported rather than silently generating again. Check the application before retrying an uncertain operation.

The result arrives over the MCP response stream. Only changed: true with a saved record confirms creation. record.plan_id identifies the saved version.

If generation returns action_required: true with a continuation_id, use get_generation_question to retrieve its stored question without restarting generation or spending credits. Ask the user, then call answer_generation with the returned revision/question reference, the selected choice token, confirmed: true and a fresh request_id. Retry an identical answer with the same ID; never substitute a design-session ID or a new intake. Other decisions may continue in the application at application_url. Until a saved record arrives, report changed: false, not a completed plan.

Review a plan or idea

validate_plan reviews an accessible saved plan_id. validate_idea reviews up to 1,500 characters before generation. Neither creates a plan, changes geometry, starts a design session, stores material choices or submits feedback flags. Normal metering and configured model datasets retain existing privacy rules. Both tools use projects:read, not generation permission.

Example arguments for validate_plan:

{
  "plan_id": "plan-id-from-the-service",
  "options": {
    "jurisdiction": "US-GA",
    "assessment_date": "2026-10-27",
    "locality": "Atlanta, Fulton County"
  }
}

Example arguments for validate_idea:

{
  "text": "Review a two-storey wood-frame house before generating a plan.",
  "options": {
    "jurisdiction": "US-GA",
    "assessment_date": "2026-10-27",
    "facts": {
      "building_type": "single_family",
      "storeys": 2,
      "materials": [
        {
          "system": "wood_frame"
        }
      ]
    }
  }
}

Supply only known facts. Structural system IDs are wood_frame, concrete_frame, steel_frame and confined_masonry. Up to 24 request-scoped system/floor declarations are accepted. Floor numbers start at 1; strength uses MPa, bearing uses inches and fire ratings use minutes regardless of account display units. Finishes do not establish structural systems. The discovered schema describes optional evidence fields.

Reports use render2d.review.v1 and changed: false. Read findings, questions, gate and coverage, not only design scores. Findings retain sources, assumptions and original verdicts. Total counts disclose the 500-finding output bound. An idea has no reviewed geometry; no report certifies legal compliance, material suitability or structural capacity. A high design score never offsets a verified rule failure.

Optional options.facts.evidence carries bounded room/stair/escape, accessibility, workplace, MEP and site declarations. Up to 24 rows per family use at: {id, floor?, room_id?, opening_id?} with original 1-based floors. Missing applicability or exception facts remain unknown. Measurements use named inch/foot/square-foot units, ACH50 and rise/run slope fractions, not percentages. Door/window clearances are net openings, not nominal sizes. Structural references are identifiers, not inspected or certified documents.

The dedicated building-rules engine provides partial Georgia room, conventional-stair and selected MEP amendment checks, plus garage/wood-bearing and material evidence review. Federal ADA clearances/slopes are independently scoped, not Georgia/FHA certification; workplace exits use a 2025 federal reference, not Georgia Life Safety Code. Escape windows remain preliminary. Atlanta floodplain checks require confirmed parcel authority: a Fulton County address does not activate Atlanta rules. Supplied setback comparisons are nonlegal; current district tables remain unverified. Full LSC, accessibility, residential exceptions, remaining MEP, zoning/site decisions and structural capacity remain unverified. Generic IRC/IBC 2021 checks are not Georgia 2024 compliance.

Pack us-ga-2026.2 activates only for US-GA and assessment dates from 2026-01-01 through the 2026-10-27 source-review cutoff. This is a knowledge boundary, not expiry of the law. Missing or unsupported dates yield incomplete applicability, not a pass. Permit/grandfathering status still requires professional review. The report inventory includes sources and exact limits.

Errors, cancellation and reconnecting

Protocol and authorization failures may arrive as HTTP errors. Tool failures use an MCP result with isError: true and a structured error status; they are not successful plans.

  • 401: the connection is missing, expired or revoked. Reconnect the account.
  • 403: the account or scope does not authorize the operation, or the OAuth client is not ChatGPT or Claude.
  • 402: the connected account has no credits left for this request. Buy credits in the Arqa app, then try again.
  • 404: the plan is missing or inaccessible to the connected account.
  • 409: a generation request cannot be repeated as submitted. Check the application before retrying.
  • 422: arguments or domain inputs were rejected. Correct the supplied values.
  • 429: rate-limited or busy. Honor Retry-After when supplied.
  • 502 or 503: the request could not be completed or confirmed. Inspect the application before repeating an action.

Closing the active MCP response stream cancels the upstream request; backend save/refund rules determine the final outcome. Separate cancellation notifications are not supported by this stateless endpoint.

Access tokens last up to one hour. Refresh tokens rotate, and the connection has an absolute thirty-day lifetime. Disabled or revoked accounts cannot keep using a previously issued token. Removing the connection in ChatGPT stops its use there; ask the operator to revoke account sessions if outstanding credentials must also be invalidated.

These are concept floor plans, not permit sets or construction documents. Have a qualified professional review geometry, local requirements and suitability before relying on the result.