Skip to content

Document Coda as a read-only context source - #970

Draft
promptless[bot] wants to merge 12 commits into
mainfrom
promptless/coda-context-source-docs
Draft

promptless[bot] wants to merge 12 commits into
mainfrom
promptless/coda-context-source-docs

Conversation

@promptless

@promptless promptless Bot commented Sep 11, 2026 •

Copy link
Copy Markdown
Contributor

Open in Promptless

Documents Coda as a new read-only agent context source, alongside Notion, Confluence, Linear, Google Drive, and Slite. Source: Promptless/promptless#5009 ("Read a customer's Coda workspace as agent context").

A customer who keeps product specs and knowledge in Coda can connect it so Promptless reads their Coda pages as input context when it drafts documentation suggestions — reusing the feature names, limits, and rationale the team already recorded, instead of re-deriving them from the code diff.

What the docs cover

  • New page for-docs/connect/context-sources/coda.mdx, parallel to the Slite/Notion/Google Drive pages: connection via a pasted personal API token (Account Settings → API Settings; not OAuth), read-only behavior, doc-name search (search matches doc names, not page body text), plain-text page reading (link targets, inline formatting, and tables are not preserved), a concrete Example, service-account/least-privilege guidance, connection-health pointer, and doc_ids scoping.
  • Overview, integrations reference, configuration reference (onboarding-defaults row, YAML example, and the doc_ids scope row), and the security access-and-permissions page updated to include Coda.
  • The Coda page follows the frontmatter and page-type conventions that main adopted in docs: Lint page structure with manni, restructure every docs page by type, and embed integration procedures as partials #1177 (manni vocabularies). It carries id, type: how-to, and the AI-context fields. Its docs.metadata.yaml entry holds personas, journeys, and manni-derived created/owner stamps, and manni sets last-updated. The body uses the same how-to sections as the sibling context-source pages: Overview with Example, Before you start, Connect Coda, Limit Promptless to specific docs, and See also. manni meta validate and manni lint structure pass.
  • Adds Coda to the Promptless.Headings Vale exceptions list (vale/Promptless/styles/Promptless/Headings.yml), alongside Notion and Slite, so the product name keeps its capital in the "Connect Coda" heading.
  • A September 2026 changelog entry, folded into this suggestion per changelog guidelines.

Open items to confirm at merge (source PR #5009 is unmerged; docs are source-verified, not runtime-confirmed):

  • Connect UI: the Coda integration card and paste-token modal were verified against source (IntegrationsList.tsx), not the live dashboard — the card is likely not deployed yet. Re-verify the card and its labels against the live Integrations page before promoting this PR to ready-for-review.
  • doc_ids scoping is documented but not yet enforced at agent read time. The field is in the config schema, the canonical promptless-yaml-spec.md, and the dashboard doc picker, so it is documented parallel to the other sibling scope fields (Notion page_ids, Google Drive drive_ids). However, source (the exec plan and config_bootstrap.py) indicates context-source scope entries are inert at runtime today — this affects every sibling scope field, not just Coda, and is not called out on the customer page for that reason. Confirm enforcement (or the shared caveat) at merge.
  • Plain-text fidelity is current MVP behavior. An asynchronous page export that preserves links, formatting, and tables is a deferred follow-up in the source PR; if it ships, revisit the fidelity note on the Coda page.

This PR is open in draft while source PR #5009 is open, and should be promoted to ready-for-review when #5009 merges.

Trigger Events

Add a Coda context-source reference page and wire it into the sibling
context-source docs, following the established pattern. Coda connects via a
pasted personal API token (not OAuth); Promptless searches Coda docs by name
and reads page content as read-only context. Scope Coda by doc_ids in
promptless.yaml, parallel to Notion.

- New page: for-docs/connect/context-sources/coda.mdx
- Context-sources overview: LinkCard + example
- Integrations reference: Coda entry
- Configuration reference: onboarding-defaults row, YAML example, scope table
- Access & permissions: read-only series + scope-by-source correction
- September 2026 changelog entry
@vercel

vercel Bot commented Sep 11, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
promptless-docs Ready Ready Preview Oct 20, 2026 5:55pm UTC

Request Review


## Configuration

Coda authenticates with a personal API token that you generate in Coda and paste into Promptless. To connect Coda:

@promptless promptless Bot Sep 11, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Citation

Citation withdrawn.

Verified: Coda authenticates via a personal API token (Authorization: Bearer), not OAuth — the content API has no OAuth flow, so the connect route validates and stores a user-supplied token. Re-anchored from line 39 to 43 after the revision inserted an Example section above Configuration.

Source: coda.py:1–7 · 2b15859

1. In Coda, generate a personal API token under **Account Settings > API Settings** (see [Coda's API documentation](https://coda.io/developers/apis/v1)). The token inherits the Coda access of the account that created it, and you can restrict it to specific docs. We recommend generating it from a dedicated service account so Promptless gets least-privilege access. A dedicated service account is a Coda account you control and use for integrations like this one. Whichever account you use must have access to the Coda docs you want Promptless to read. If you use a service account, add it as a collaborator on those docs, or on the workspace, so Promptless can read them.
2. Go to the [Integrations page](https://app.gopromptless.ai/integrations) in your Promptless dashboard.
3. Click **Connect** on the Coda integration card.
4. Paste the token and click **Connect**. Promptless validates the token when you connect.

@promptless promptless Bot Sep 11, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Citation

Citation withdrawn.

Verified: connect_coda_installation calls CodaClient.get_whoami() synchronously on connect and raises HTTP 401 "Invalid Coda API token" when the token fails, confirming the token is validated at connect time. Re-anchored from line 44 to 48 after the revision restructured the Configuration steps.

Source: coda.py:73–83 · 2b15859


import { Aside } from '@astrojs/starlight/components';

Coda integration provides **read-only** access to your team's Coda docs for documentation automation. When Coda is configured as a context source, Promptless searches Coda and reads page content when creating suggestions. It never modifies your Coda content.

@promptless promptless Bot Sep 11, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Citation

Citation withdrawn.

Verified: the Coda provider module docstring states it "exposes read-only Coda tools to the agent" (search, list pages, read a page); no write/create/update/delete tool exists for Coda content.

Source: coda.py:1–6 · 2b15859


When Coda is enabled as a context source:

- **Doc Search**: Promptless finds a Coda doc by its name when creating documentation suggestions. Search matches doc names, not the body text of pages.

@promptless promptless Bot Sep 11, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Citation

Citation withdrawn.

Verified: "Coda has no content search. GET /docs matches doc names only" — search_coda_docs tool matches document names, not page body text.

Source: coda.py:9–10 · 2b15859

</Aside>

<Aside type="note">
Promptless reads Coda pages as plain text, so it captures the words but not link targets, inline formatting, or tables.

@promptless promptless Bot Sep 11, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Citation

Citation withdrawn.

Verified: pages are read via the synchronous listPageContent endpoint with contentFormat=plainText; link targets, inline formatting, and tables are not carried by the plain-text lines. Re-anchored from line 28 to 32 after the revision inserted a new doc-name search tip Aside above this note.

Source: coda.py:11–16 · 2b15859

| Notion | None | Unscoped `notion` entry |
| Google Drive | None | Unscoped `google_drive` entry |
| Slite | None | Unscoped `slite` entry |
| Coda | None | Unscoped `coda` entry |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Citation

Verified: add_broad_context_sources seeds an unscoped CodaContextSource(source_type="coda") when Coda is connected and no "coda" entry already exists; this helper backs both onboarding synthesis and post-onboarding connect-time seeding.

Source: synthesis.py:94–98 · 2b15859


Coda authenticates with a personal API token that you generate in Coda and paste into Promptless. To connect Coda:

1. In Coda, generate a personal API token under **Account Settings > API Settings** (see [Coda's API documentation](https://coda.io/developers/apis/v1)). The token inherits the Coda access of the account that created it, and you can restrict it to specific docs. We recommend generating it from a dedicated service account so Promptless gets least-privilege access. A dedicated service account is a Coda account you control and use for integrations like this one. Whichever account you use must have access to the Coda docs you want Promptless to read. If you use a service account, add it as a collaborator on those docs, or on the workspace, so Promptless can read them.

@promptless promptless Bot Sep 11, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Citation

Citation withdrawn.

Verified: "A token inherits the permissions of the user who created it, and may additionally be restricted to specific docs at creation time." Matches the doc's claim that a token inherits the creating account's Coda access and can be doc-restricted; a service account with no doc/workspace access would read nothing.

Source: api_client.py:3–6 · 2b15859


Coda authenticates with a personal API token that you generate in Coda and paste into Promptless. To connect Coda:

1. In Coda, generate a personal API token under **Account Settings > API Settings** (see [Coda's API documentation](https://coda.io/developers/apis/v1)). The token inherits the Coda access of the account that created it, and you can restrict it to specific docs. We recommend generating it from a dedicated service account so Promptless gets least-privilege access. A dedicated service account is a Coda account you control and use for integrations like this one. Whichever account you use must have access to the Coda docs you want Promptless to read. If you use a service account, add it as a collaborator on those docs, or on the workspace, so Promptless can read them.

@promptless promptless Bot Sep 11, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Citation

Citation withdrawn.

Verified: the Coda connect modal (CodaModal) links "https://coda.io/developers/apis/v1" labeled "Coda API docs" — matches the doc's link exactly.

Source: IntegrationsList.tsx:1479–1490 · 2b15859

3. Click **Connect** on the Coda integration card.
4. Paste the token and click **Connect**. Promptless validates the token when you connect.

The Coda card on the [Integrations page](https://app.gopromptless.ai/integrations) shows the connection status. Use it to confirm the connection works and to spot a later problem, such as a token revoked in Coda. See [Connection health & troubleshooting](/docs/for-docs/connect/connection-health).

@promptless promptless Bot Sep 11, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Citation

Citation withdrawn.

Verified: _validate_coda exists and is registered for IntegrationType.CODA; it re-calls GET /whoami and classifies the resulting HTTPException (e.g. a revoked token surfaces as an unhealthy/credential-invalid state), backing the doc's claim that the Integrations page card reflects a later problem such as a revoked token. connection-health.mdx's slug (docs/for-docs/connect/connection-health) matches its frontmatter.

Source: validators.py:720–740 · 2b15859

…xt-source-docs

# Conflicts:
#	src/content/changelog/changelogs/september-2026.mdx
…xt-source-docs

# Conflicts:
#	src/content/changelog/changelogs/september-2026.mdx
…xt-source-docs

# Conflicts:
#	src/content/docs/docs/for-docs/security/access-and-permissions.mdx
…xt-source-docs

# Conflicts:
#	src/content/changelog/changelogs/september-2026.mdx
…xt-source-docs

# Conflicts:
#	src/content/changelog/changelogs/september-2026.mdx
…xt-source-docs

# Conflicts:
#	src/content/changelog/changelogs/september-2026.mdx
promptless Bot and others added 2 commits October 20, 2026 17:43
…xt-source-docs

# Conflicts:
#	src/content/docs/docs/for-docs/connect/context-sources.mdx
#	src/content/docs/docs/for-docs/reference/configuration-reference.mdx
#	src/content/docs/docs/for-docs/reference/integrations.mdx
#	src/content/docs/docs/for-docs/security/access-and-permissions.mdx
@promptless

promptless Bot commented Oct 20, 2026

Copy link
Copy Markdown
Contributor Author

I noticed that some CI checks failed for this PR. I'm investigating whether the failures are caused by this suggestion. If they're unrelated or pre-existing, I'll leave this suggestion unchanged and create a separate suggestion if a standalone docs fix is needed.

Comment thread src/content/docs/docs/for-docs/connect/context-sources/coda.mdx
Comment thread src/content/docs/docs/for-docs/connect/context-sources/coda.mdx
Comment thread src/content/docs/docs/for-docs/connect/context-sources/coda.mdx
Comment thread src/content/docs/docs/for-docs/connect/context-sources/coda.mdx
Comment thread src/content/docs/docs/for-docs/connect/context-sources/coda.mdx
Comment thread src/content/docs/docs/for-docs/connect/context-sources/coda.mdx
Comment thread src/content/docs/docs/for-docs/connect/context-sources/coda.mdx
Comment thread src/content/docs/docs/for-docs/connect/context-sources/coda.mdx

This branch was successfully deployed

1 active deployment
Preview — f28f5787 Deployed Oct 20, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants