Skip to content

Integration · Forms

getodk.org

Connect Claude & ChatGPT to ODK

Ask your AI how many submissions came in on a form, what the answers say, or who submitted them. It can list projects and forms, read the questions of a form, query submission answers with filters and export them as CSV. It can also comment on submissions and read, create and update entities in your entity lists.

Connect ODK free

Free plan, no credit card. Takes about a minute.

Try asking

  • “Which forms in the household survey project have the most submissions?”

    The AI lists the forms in the project with their state and submission counts.

  • “Show answers from the intake form where district is North.”

    It reads the form's fields, then queries the submission answers with a filter on that field.

  • “Export this month's submissions of the water point form as CSV.”

    It exports the form's submissions as CSV with a date filter.

What your AI can do

Projects and forms

List projects and forms, with state and submission counts, and read the questions of a form with their paths and types.

Submissions

List submissions, query their answers with OData filters, export CSV, see attachments and submitters, and read or add comments.

Entities

Read entity lists, query and get entities with their properties and history, and create or update entities.

  • “Who has submitted to the site visit form?”

    It lists the users and app users who have submitted to the form.

  • “Comment on submission uuid:4a1f... that the GPS point looks wrong.”

    It adds the comment to that submission, so reviewers see it in Central.

  • “Update entity 7c2e... in the households list: set status to visited.”

    It reads the entity with its current version and updates the property.

178 tools for ODK

These tools are switched on when you connect. You can switch any of them off, or require your approval before it runs.

  • add_submission_commentChanges dataAdd a comment (`body`) to a submission by `project_id`, `xml_form_id` and `instance_id`.
  • attach_assignmentDeletesAttach a assignment (actor id). Destructive action; may require approval. API summary: Assigning an Actor to a server-wide Role.
  • attach_assignment_to_formDeletesAttach a assignment (actor id). Destructive action; may require approval. API summary: Assigning an Actor to a Form Role.
  • attach_assignment_to_projectDeletesAttach a assignment (actor id). Destructive action; may require approval. API summary: Assigning an Actor to a Project Role.
  • attach_documentChanges dataAttach a document (filename). API summary: Linking a Dataset to a Draft Form Attachment.
  • create_analyticChanges dataCreate a new analytic. Required: enabled. API summary: Setting new configuration for Usage Reporting.
  • create_backupChanges dataCreate a new backup. API summary: Using an Encryption Passphrase.
  • create_dataset_propertyChanges dataCreate a new property for a dataset. Required: body name. API summary: Adding Properties.
  • create_entityChanges dataCreate an entity in an entity list by `project_id` and `name`; pass the label and property values in `body`.
  • create_form_draftChanges dataCreate a new draft for a form. API summary: Creating a Draft Form.
  • create_form_public_linkChanges dataCreate a new public link for a form. Required: display name. API summary: Creating a Link.
  • create_form_submissionChanges dataCreate a new submission for a form. API summary: Creating a Submission.
  • create_hero_imageChanges dataCreate a new hero image. API summary: Setting a new hero image for the server.
  • create_initiateDeletesCreate a new initiate. Required: email. Destructive action; may require approval. API summary: Initating a password reset.
  • create_login_appearanceChanges dataCreate a new login appearance. API summary: Setting a new title and description for the login page.
  • create_logoChanges dataCreate a new logo. API summary: Setting a new logo for the server.
  • create_projectChanges dataCreate a new project. Required: name. API summary: Creating a Project.
  • create_project_datasetChanges dataCreate a new dataset for a project. Required: name. API summary: Creating Datasets.
  • create_project_formChanges dataCreate a new form for a project. API summary: Creating a new Form.
  • create_project_propertyChanges dataCreate a new property for a project. Required: name. API summary: Registering an Actor Property Name.
  • create_project_submissionVisible to othersCreate a new submission for a project. Has effects visible outside this system. API summary: OpenRosa Form Submission API.
  • create_project_userChanges dataCreate a new user for a project. Required: display name. Search users first to avoid duplicates. API summary: Creating a new App User.
  • create_submissionChanges dataCreate a new submission. API summary: Creating a Submission.
  • create_submission_openrosa_submit_to_draft_formDeletesCreate a new submission. Destructive action; may require approval. API summary: OpenRosa Form Submission API.
  • create_userChanges dataCreate a new user. Required: email. Search users first to avoid duplicates. API summary: Creating a new User.
  • delete_analyticsMoves moneyPermanently delete a analytic. Financial or irreversible action; may require approval. API summary: Unsetting the current Usage Reporting configuration.
  • delete_assignmentDeletesPermanently delete a assignment by actor id. Destructive action; may require approval. API summary: Stripping an Role Assignment from an Actor.
  • delete_bulk_deletesMoves moneyPermanently delete a bulk delete by name. Financial or irreversible action; may require approval. API summary: Bulk Deleting Entities.
  • delete_currentsMoves moneyPermanently delete a current. Financial or irreversible action; may require approval. API summary: Logging out current session.
  • delete_dataset_entityDeletesPermanently delete a entity by entity uuid. Destructive action; may require approval. API summary: Deleting an Entity.
  • delete_dataset_propertyDeletesPermanently delete a property by property name. Destructive action; may require approval. API summary: Deleting a Property.
  • delete_documentDeletesPermanently delete a document by filename. Destructive action; may require approval. API summary: Clearing a Draft Form Attachment.
  • delete_form_assignmentDeletesPermanently delete a assignment by actor id. Destructive action; may require approval. API summary: Revoking a Form Role Assignment from an Actor.
  • delete_form_draftsMoves moneyPermanently delete a draft by xml form id. Financial or irreversible action; may require approval. API summary: Deleting a Draft Form.
  • delete_form_public_linkDeletesPermanently delete a public link by link id. Destructive action; may require approval. API summary: Deleting a Link.
  • delete_form_submissionDeletesPermanently delete a submission by instance id. Destructive action; may require approval. API summary: Deleting a Submission.
  • delete_hero_imagesMoves moneyPermanently delete a hero image. Financial or irreversible action; may require approval. API summary: Unsetting the hero image configured for the server.
  • delete_login_appearancesMoves moneyPermanently delete a login appearance. Financial or irreversible action; may require approval. API summary: Unsetting the title and description configured for the login page.
  • delete_logosMoves moneyPermanently delete a logo. Financial or irreversible action; may require approval. API summary: Unsetting the logo configured for the server.
  • delete_projectDeletesPermanently delete a project by property name. Destructive action; may require approval. API summary: Deleting a project preference.
  • delete_project_assignmentDeletesPermanently delete a assignment by actor id. Destructive action; may require approval. API summary: Revoking a Project Role Assignment from an Actor.
  • delete_project_datasetDeletesPermanently delete a dataset by name. Destructive action; may require approval. API summary: Deleting a Dataset.
  • delete_project_delete_projectDeletesPermanently delete a project by project id. Destructive action; may require approval. API summary: Deleting a Project.
  • delete_project_formDeletesPermanently delete a form by xml form id. Destructive action; may require approval. API summary: Deleting a Form.
  • delete_project_userDeletesPermanently delete a user by user id. Destructive action; may require approval. API summary: Deleting an App User.
  • delete_siteDeletesPermanently delete a site by property name. Destructive action; may require approval. API summary: Deleting a sitewide preference.
  • delete_submission_documentDeletesPermanently delete a document by filename. Destructive action; may require approval. API summary: Clearing a Submission Attachment.
  • delete_submission_document_clear_draft_form_submission_attachmenDeletesPermanently delete a document by filename. Destructive action; may require approval. API summary: Clearing a Submission Attachment.
  • delete_userDeletesPermanently delete a user by actor id. Destructive action; may require approval. API summary: Deleting a User.
  • delete_version_documentDeletesPermanently delete a document by filename. Destructive action; may require approval. API summary: Clearing a Submission Version's Attachment.
  • download_documentDownload the document for a document. API summary: Downloading a Form Attachment.
  • download_document_download_attachmentDownload the document for a document. API summary: Downloading an Attachment.
  • download_document_download_draft_form_attachmentDownload the document for a document. API summary: Downloading a Draft Form Attachment.
  • download_document_download_draft_form_submission_attachmentDownload the document for a document. API summary: Downloading an Attachment.
  • download_document_download_form_version_attachmentDownload the document for a document. API summary: Downloading a Form Version Attachment.
  • download_document_download_test_draft_form_attachmentDownload the document for a document. API summary: Downloading a Form Attachment.
  • download_document_download_versioned_attachmentDownload the document for a document. API summary: Downloading a Version's Attachment.
  • download_entities_csvDownload the document for a entities csv. API summary: Download Dataset.
  • download_entities_csv_download_deleted_dataset_entitiesDownload the document for a entities csv. API summary: Downloading Deleted Dataset Entities.
  • export_submissions_csvExport a form's submissions as CSV by `project_id` and `xml_form_id`, with an optional OData `filter`.
  • export_submissions_csv_zipsExport submissions csv zips. API summary: Exporting Form Submissions to CSV.
  • export_submissions_csv_zips_export_draft_form_submissions_to_csvExport submissions csv zips. API summary: Exporting Form Submissions to CSV.
  • get_analyticGet one analytic. API summary: Getting the Usage Report preview.
  • get_assignmentGet one assignment by role id. API summary: Listing all Actors assigned some Role.
  • get_current_userGet the ODK Central user you are signed in as.
  • get_entityGet one entity by `project_id`, entity list `name` and `entity_uuid`, with its current property values.
  • get_entity_listGet one entity list by `project_id` and `name`, including its properties.
  • get_formGet one form by `project_id` and `xml_form_id`, including its state and latest submission time.
  • get_form_2Get one form by role id. API summary: Seeing Role-specific Form Assignments within a Project.
  • get_form_assignmentGet one assignment for a form by role id. API summary: Listing all Actors assigned some Form Role.
  • get_form_draft_svcGet one draft svc for a form by table. Results are paginated. API summary: Data Document.
  • get_form_public_linkGet one public link for a form by link id. API summary: Getting Link Details.
  • get_form_versionGet one version for a form by version. API summary: Getting Form Version Details.
  • get_projectGet one project by `project_id`.
  • get_project_assignmentGet one assignment for a project by role id. API summary: Listing all Actors assigned some Project Role.
  • get_project_userGet one user for a project by user id. API summary: Getting App User Details.
  • get_roleGet one role by role id. API summary: Getting Role Details.
  • get_submissionGet the metadata of one submission by `project_id`, `xml_form_id` and `instance_id`.
  • get_submission_2Get one submission by instance id. API summary: Getting Submission details.
  • get_submission_documentGet one document for a submission by filename. API summary: Data Download Path.
  • get_submission_versionGet one version for a submission by version id. API summary: Getting Version Details.
  • get_userGet one user by actor id. API summary: Getting User details.
  • list_analyticsList analytics. API summary: Getting the current Usage Reporting configuration.
  • list_app_usersList the app users (data collectors) of a project by `project_id`.
  • list_assignmentsList assignments. API summary: Listing all Assignments.
  • list_auditsList audits. Optional filters: action, start or end. Results are paginated. API summary: Getting Audit Log Entries.
  • list_creatorsList creators. API summary: Entities Creators.
  • list_dataset_diffsList dataset diffs. API summary: Draft Form Dataset Diff.
  • list_dataset_integritiesList integrities for a dataset. Optional filters: id. API summary: OpenRosa Dataset Integrity API.
  • list_documentsList documents. API summary: Listing expected Draft Form Attachments.
  • list_entitiesList the entities in an entity list by `project_id` and `name`, with their labels and IDs.
  • list_entity_auditsList audits for a entity. API summary: Entity Audit Log.
  • list_entity_diffsList diffs for a entity. API summary: Getting changes between Versions.
  • list_entity_geojsonsList geojsons for a entity. API summary: Entity GeoJSON representation.
  • list_entity_listsList the entity lists (datasets) in a project by `project_id`.
  • list_entity_versionsList the version history of an entity by `project_id`, `name` and `entity_uuid`.
  • list_example1sList example1s. API summary: Using the session.
  • list_example2sList example2s. API summary: Using Basic Authentication.
  • list_fieldsList fields. Optional filters: odata. API summary: Getting Draft Form Schema Fields.
  • list_form_assignmentsList assignments for a form. API summary: Listing all Form Assignments.
  • list_form_dataset_diffsList dataset diffs for a form. API summary: Published Form Related Datasets.
  • list_form_documentsList documents for a form. API summary: Listing Form Attachments.
  • list_form_draft_svcsList draft svcs for a form. API summary: Service Document.
  • list_form_draft_xlsxesList draft xlsxes for a form. API summary: Retrieving Draft Form XLS(X).
  • list_form_draft_xmlsList draft xmls for a form. API summary: Retrieving Draft Form XML.
  • list_form_draftsList drafts for a form. API summary: Getting Draft Form Details.
  • list_form_fieldsList the questions (fields) of a form by `project_id` and `xml_form_id`, with their paths and types.
  • list_form_link_formsList forms for a form link. API summary: Getting Form Details by formLinkId.
  • list_form_listsList form lists. API summary: OpenRosa Form Listing API.
  • list_form_manifestsList manifests for a form. API summary: OpenRosa Form Manifest API.
  • list_form_public_linksList public links for a form. API summary: Listing all Links.
  • list_form_submissions_geojsonsList submissions geojsons for a form. Optional filters: filter or fieldpath. Results are paginated. API summary: Retrieving Submissions Geodata.
  • list_form_versionsList versions for a form. API summary: Listing Published Form Versions.
  • list_formsList the forms in a project by `project_id`, with their xmlFormId, name, state and submission count.
  • list_forms_2List forms. API summary: Seeing all Form Assignments within a Project.
  • list_geojsonsList geojsons. API summary: Retrieving GeoJSON of a single Submission.
  • list_geojsons_get_version_geo_jsonList geojsons. API summary: Getting Version GeoJSON.
  • list_hero_imagesList hero images. API summary: Getting the hero image configured for the server.
  • list_key_example3sList example3s for a key. API summary: Using App User Authentication.
  • list_keysList keys. API summary: Listing Encryption Keys.
  • list_keys_list_draft_form_encryption_keysList keys. API summary: Listing Encryption Keys.
  • list_login_appearancesList login appearances. API summary: Getting the title and description configured for the login page.
  • list_logosList logos. API summary: Getting the logo configured for the server.
  • list_manifestsList manifests. API summary: OpenRosa Form Manifest API.
  • list_metadataList metadata. API summary: Metadata Document.
  • list_metadata_get_draft_form_metadataList metadata. API summary: Metadata Document.
  • list_metadata_metadata_document_for_datasetList metadata. API summary: Metadata Document.
  • list_project_assignmentsList assignments for a project. API summary: Listing all Project Assignments.
  • list_project_form_listsList form lists for a project. API summary: OpenRosa Form Listing API.
  • list_project_propertiesList properties for a project. API summary: Listing Actor Property Names.
  • list_projectsList the projects you can access. Set `forms` or `datasets` to include their forms or entity lists.
  • list_publicsList publics. API summary: Getting all public configuration.
  • list_rolesList roles. API summary: Listing all Roles.
  • list_submission_attachmentsList the attachments (photos, files) of a submission and whether they have been uploaded.
  • list_submission_auditsList audits for a submission. API summary: Retrieving Audit Logs.
  • list_submission_commentsList the comments on a submission by `project_id`, `xml_form_id` and `instance_id`.
  • list_submission_diffsList diffs for a submission. API summary: Getting changes between Versions.
  • list_submission_documents_list_draft_form_submission_attachmentsList documents for a submission. API summary: Listing expected Submission Attachments.
  • list_submission_editsList edits for a submission. API summary: Getting an Enketo Edit URL.
  • list_submission_versionsList versions for a submission. API summary: Listing Versions.
  • list_submissionsList the submissions of a form (metadata such as instanceId, submitter, date and review state) by `project_id` and `xml_form_id`, with `limit` and `offset`.
  • list_submissions_2List submissions. API summary: Listing all Submissions on a Draft Form.
  • list_submittersList the users and app users who have submitted to a form, by `project_id` and `xml_form_id`.
  • list_svcsList svcs. API summary: Service Document.
  • list_svcs_service_document_for_datasetsList svcs. API summary: Service Document.
  • list_version_documentsList documents for a version. API summary: Listing Form Version Attachments.
  • list_version_documents_list_version_expected_attachmentsList documents for a version. API summary: Listing Version expected Attachments.
  • list_version_fieldsList fields for a version. Optional filters: odata. API summary: Getting Form Version Schema Fields.
  • list_xlsxesList xlsxes. API summary: Retrieving Form XLS(X).
  • list_xlsxes_retrieve_form_version_xlsList xlsxes. API summary: Retrieving Form Version XLS(X).
  • list_xmlsList xmls. API summary: Retrieving Form XML.
  • list_xmls_get_version_xmlList xmls. API summary: Getting Version XML.
  • list_xmls_retrieve_draft_form_submission_xmlList xmls. API summary: Retrieving Submission XML.
  • list_xmls_retrieve_form_version_xmlList xmls. API summary: Retrieving Form Version XML.
  • list_xmls_retrieve_submission_xmlList xmls. API summary: Retrieving Submission XML.
  • query_entitiesRead the entities of an entity list with their property values via OData, by `project_id` and `name`. Supports `filter`, `select`, `orderby`, `limit` and `offset`.
  • query_submission_dataRead the answers of a form's submissions via OData, by `project_id`, `xml_form_id` and `table` (usually Submissions). Supports `filter`, `select`, `orderby`, `limit` and `offset`.
  • restore_bulk_restoreVisible to othersRestore a bulk restore (name). Has effects visible outside this system. API summary: Bulk Restoring Entities.
  • restore_entityChanges dataRestore a entity (entity uuid). API summary: Restoring a deleted Entity.
  • restore_formChanges dataRestore a form (form id). API summary: Restoring a Form.
  • restore_keyChanges dataRestore a key (project id). API summary: Enabling Project Managed Encryption.
  • restore_submissionChanges dataRestore a submission (instance id). API summary: Restoring a deleted Submission.
  • search_dataset_entities_geojsonsSearch entities geojsons for a dataset by filter, search or view as. Use this to find existing entities geojsons before creating a new entities geojson. Results are paginated. API summary: Entities Geodata.
  • search_usersList or search ODK Central web users; pass `q` to search by name or email.
  • submit_draftVisible to othersPublish a draft (xml form id). Has effects visible outside this system. API summary: Publishing a Draft Form.
  • update_entityChanges dataUpdate an entity's `label` or property values in `data`, by `project_id`, `name` and `entity_uuid`. Pass `base_version` or set `force` to true.
  • update_form_public_linkChanges dataUpdate an existing public link identified by link id. Only the fields you pass are changed. API summary: Setting Actor Property Values on a Link.
  • update_form_submissionChanges dataUpdate an existing submission identified by instance id. Only the fields you pass are changed. API summary: Updating Submission metadata.
  • update_projectChanges dataUpdate an existing project identified by project id. Only the fields you pass are changed. API summary: Updating Project Details.
  • update_project_datasetChanges dataUpdate an existing dataset identified by name. Only the fields you pass are changed. API summary: Update Dataset Access Filters and Metadata.
  • update_project_formChanges dataUpdate an existing form identified by xml form id. Only the fields you pass are changed. API summary: Modifying a Form.
  • update_project_userChanges dataUpdate an existing user identified by user id. Only the fields you pass are changed. API summary: Setting Actor Property Values on an App User.
  • update_siteChanges dataUpdate an existing site identified by property name. API summary: Setting a sitewide preference.
  • update_userChanges dataUpdate an existing user identified by actor id. Only the fields you pass are changed. API summary: Modifying a User.
  • update_user_passwordsMoves moneyUpdate an existing password identified by actor id. Financial or irreversible action; may require approval. API summary: Directly updating a user password.
  • upload_documentChanges dataUpload a document (filename). API summary: Uploading a Draft Form Attachment.
  • upload_document_upload_attachmentChanges dataUpload a document (filename). API summary: Uploading an Attachment.
  • upload_document_upload_test_draft_form_attachmentChanges dataUpload a document (filename). API summary: Uploading an Attachment.

Set up in three steps

  1. 1

    Pick the app

    Create a free HeyMyApps account and choose ODK from the app list.

  2. 2

    Paste your key

    Enter your ODK Central host name without https:// (for example central.example.org or yourname.getodk.cloud) and the email and password of an ODK Central web user. A dedicated user with only the project roles the AI needs is best. Login does not work if your server uses single sign-on (OIDC).

  3. 3

    Add the link to your AI

    You get a personal MCP link. Add it to Claude, ChatGPT or Cursor:

    1. Click your name, then Settings › Connectors › Add custom connector.
    2. Paste your link as the Remote MCP server URL.
    3. Switch it on from the + menu in a chat.

Questions

What can the AI do in ODK?

The AI can list projects, forms, form fields, submissions, submitters, attachments, comments, entity lists, entities, app users and web users. It can query submission answers and entities with OData filters and export submissions as CSV. It can add comments to submissions and create and update entities.

Does the AI see my ODK Central credentials?

No. Your ODK Central credentials are encrypted at rest and never shown to the AI. After you save them, they are not shown again, not even to you. The AI only sees the results of the tools it calls.

Can I control what the AI is allowed to do?

Yes. You choose which tools are switched on, so you can start read-only. Creating or updating entities and adding comments can require your approval before they run. The AI can also only reach the projects that the ODK Central user has access to. Every tool call is logged.

Does it work with ChatGPT?

Yes. In ChatGPT go to Settings › Apps & Connectors › Advanced and turn on Developer mode, then add your HeyMyApps link. Developer mode needs a paid ChatGPT plan: Plus, Pro, Business or Enterprise. The same link also works in Claude (Settings › Connectors › Add custom connector), Cursor and other MCP clients.

What does it cost?

HeyMyApps has a free plan with no credit card required. Paid plans bill per completed task. You also need access to an ODK Central server, your own or a hosted one.

Which ODK Central user should I use?

Use a dedicated web user with only the project roles the AI needs. The AI sees and changes only what that user is allowed to in ODK Central. Servers that use single sign-on (OIDC) do not allow email and password login, so they cannot be connected this way.

Let your AI work in ODK today.

Start free. Your key stays encrypted, and you decide what the AI may do.

Connect ODK free

HeyMyApps is not affiliated with ODK. Product names are trademarks of their owners.