Agentic Workforce ME Developer PortalDocs 1.2 · Widget 0.1.0

Integration types

Knowledge sources

What agents read rather than act on: uploads, SharePoint, Confluence, Google Drive, S3 and websites indexed into a knowledge base, synced on a schedule, searched with kb.search.

A knowledge source is a system agents read rather than act on: its content is indexed into a knowledge base and searched with citations, with source permissions preserved.

مصدر المعرفة هو نظام يقرأه الوكلاء بدل أن يتصرّفوا فيه: يُفهرَس محتواه في قاعدة معرفة ويُبحث فيه مع الاستشهادات، مع الحفاظ على صلاحيات المصدر.

A system agents read: content indexed into a knowledge base and searched with kb.search, not called. That is the whole distinction from a connector: a connector gives an agent tools to act with; a knowledge source gives it text to cite. The same SharePoint site could be either — indexed as a knowledge source so agents can answer from the policy manual, or exposed through an MCP server so an agent can file a document into it. Ask which verb you need.

Knowledge source kinds

KindkindNotes
UploadsuploadFiles posted to POST /v1/knowledge-bases/:id/documents (multipart); ingested asynchronously.
SharePoint / OneDrivesharepointMicrosoft Graph. config.drive_id; credentials.access_token (a Graph token). Incremental by last-modified time.
Confluenceconfluenceconfig.base_url, optional config.space_key; credentials.email + credentials.api_token.
Google DrivegdriveOptional config.folder_id; credentials.access_token (a Drive OAuth token).
S3 (or S3-compatible)s3config.endpoint, config.region, config.bucket, optional config.prefix; credentials.access_key_id + credentials.secret_access_key (+ optional credentials.session_token).
WebwebWebsite crawl: config.url (or urls), optional config.depth and config.max_pages; no credentials.

Every kind lands in the same place: a knowledge base (/v1/knowledge-bases) that chunks and embeds the content and that an agent manifest binds by id. Uploads are the simplest source — a file posted once. The other five are connected sources: a definition (site, space, folder, bucket or start URL in config), a credential bag that is encrypted at rest and never returned (the API shows only credential_meta.keys), and a sync that fetches, diffs and re-indexes.

Sync schedule and state

FieldWhat it does
schedule + timezoneOptional cron expression for automatic sync. Omit it (or PATCH it to null) for manual-only sync.
POST …/connectors/:cid/syncRuns a sync now; answers 202 { status: "queued" } and the worker does the rest.
status, last_synced_at, last_errorThe source’s own sync record. last_error is redacted: a plain-language reason, never a credential or a full URL with a token.
enabledTurn a source off without deleting it; a disabled source keeps its documents but stops syncing.

Two items here are roadmap, not shipped, and are labelled wherever they appear. Next: a knowledge-source test-connection endpoint that probes the source before the first sync (today the first sync is the test — its result lands in status and last_error). Next: persisted health for knowledge sources, so the console badge derives from a recorded check rather than from the last sync.

Agents never see a knowledge source; they see the knowledge base through one builtin tool, kb.search, which retrieves the best-matching chunks with citations back to the source document. The manifest lists which knowledge bases an agent may search (knowledge_bases[]) and must name the tool in tools.builtin for the agent to search at all; approval rules match it as builtin:kb.search; and POST /v1/knowledge-bases/:id/search with { query, top_k? } performs the same retrieval from the outside — useful to see exactly what an agent would be handed before you point it at a source.

Permissions travel with the document

Source permissions are preserved rather than flattened. Each document carries an access-control list (…/documents/:docId/acls) of principals — public, an end_user id, or a group name that is matched against the end user’s attributes.groups — and retrieval filters chunks by the end user of the run, so a citizen on the widget and a case officer in the Workspace get different answers from the same knowledge base. An empty list means unrestricted within the tenant. Replacing a document’s ACLs is audited (kb.document.acl.set).

API mapping

The API path for connected sources is /v1/knowledge-bases/:id/connectors — labelled knowledge sources (path kept for compatibility). The noun changed so that “connector” means one thing on these pages; the path did not, so nothing you have written breaks. Every path takes an API key plus X-Tenant-Id; adding, changing, deleting or syncing a source needs the admin role (an API key acts as admin; a console session needs it explicitly); listing and searching need member.

ResourcePathNotes
Knowledge base/v1/knowledge-basesThe index agents search; POST /v1/knowledge-bases/:id/documents uploads files; POST /v1/knowledge-bases/:id/search is the same retrieval kb.search performs.
Knowledge sources (path kept for compatibility)/v1/knowledge-bases/:id/connectorsSharePoint, Confluence, Google Drive, S3 or a website with an optional cron schedule; POST …/:cid/sync runs a sync now. Secrets are write-only.
Source permissions/v1/knowledge-bases/:id/documents/:docId/aclsPer-document ACLs (public, end_user, group) so retrieval respects who may read what.