knowledge_source

Call knowledge_source.add

Bring a new knowledge source into this workspace's brand knowledge base — 'add our blog as a source', 'ingest this competitor's site', 'keep this decision for everyone', 'remember this for the team', 'put what we agreed in the knowledge base'. Add a knowledge source to this workspace's brand knowledge base — a link, feed, YouTube channel, competitor handle, subreddit, an already-uploaded file, or a note: something the member asks you to save, remember or share with the team from this conversation, which every member's knowledge.search then finds. A member's chats are private to them, so a note is how a decision reaches the team; write it only when the member asks for it, never on your own. Reading a source or a note costs the workspace credits. Calling it raises the approval card showing what would be added, which is the operator's confirmation, so it can still be refused after you call it. Never say a source was added unless the result says so. Report the outcome from the result's status field, never from ingested: status 'ingested' means the source was read into the knowledge base just now; status 'catalogued' means it is saved but NOT read yet, so never claim the knowledge base already answers from it; status 'already_live' means it was ALREADY saved and read, so say it is already working and nothing needed doing — do not describe it as unread. Not for a fact about the brand itself that the member tells you (an offer, a location, a dated plan with no ask to save it for the team), which is brand_kit.suggest; not for reading one page right now without saving it — that is web.read. Over the API it answers in two calls: without confirmation_id it proposes — says what would happen, returns a confirmation_id and changes, spends and sends nothing; the same arguments again with that confirmation_id, on a member's own API key, do it.

Every result names the workspace it ran in. Say which workspace the answer is about. When the account has more than one workspace and none is selected, this tool refuses with workspace_ambiguous and lists the choices — offer them, never pick one.

post/api/v1/tools/knowledge_source.add

Request

  • Base URL: https://app.goosybear.ai
  • URL: https://app.goosybear.ai/api/v1/tools/knowledge_source.add
  • Auth: HTTP bearer

Headers

x-request-idstring

Your own id for this request, echoed back and recorded on the audit trail. 1–128 characters from A–Z a–z 0–9 . _ : -, starting with a letter or digit; anything else is replaced by a generated id.

Request body

kind'file_upload' | 'url' | 'rss_feed' | 'competitor_handle' | 'subreddit' | 'youtube_channel' | 'note' required

What this source is. Use 'note' for something the member asked you to save from this conversation, 'url' for a web page, 'youtube_channel' for a YouTube channel or video, 'rss_feed' for a feed, 'competitor_handle' or 'subreddit' for a monitored handle, 'file_upload' for a file already uploaded on the Knowledge screen.

display_namestring required

What the operator should see this source called, at least 2 characters. For a note, a short title naming the decision.

referencestring

The link, handle or filename this source points at, at least 2 characters. Never invent one — take it from the operator. Leave it out for a note.

textstring

For a note only: what to save, written from the conversation as plain sentences a colleague can read without it — the decision, its reasons and today's date, in the member's own facts. Never add a fact the conversation does not hold.

ingestion_cadence'one_shot' | 'weekly' | 'on_demand'

How often to re-read the source. Leave it out unless the member says how often: a web page then re-reads weekly, so its answers stay current.

confirmation_idstring uuid

Omit to propose: the first call says what would happen, returns a confirmation_id and changes nothing. To go ahead, send the same arguments again with that confirmation_id, on a member's own API key; a service account's key can propose but never confirm.

workspacestring

Which workspace to run in — its slug. Omit to use your default. With more than one reachable workspace and no default, the call is refused and the choices are listed.

Response

The call was admitted and dispatched. ok says whether the tool succeeded — a refusal the tool itself produced is still a 200, exactly as it is a successful JSON-RPC result over MCP.

OR

Changes

No recorded changes to this operation across all 6 revisions of this API.