Skip to main content
Connic

Predefined, custom,
or any MCP server

A growing catalog provides typed, tested tools. Custom tools are plain Python functions, while MCP servers make their tools available to every agent in the project.

Read the tools docs

Tools

6 attached
  • Custominvoices.parse_pdf
  • Custominvoices.store
  • Predefinedweb_search
  • MCPlinear.create_issue
  • MCPcontext7.search_docs
  • Custombilling.calculate_vat

Tools teams otherwise reimplement

A built-in catalog for the things every agent needs: semantic retrieval, the project database, agent-to-agent orchestration, and web access.

Retrieval
retrieval_query

Search the retrieval for relevant information.

Retrieval
retrieval_store

Queue new information for retrieval indexing.

Retrieval
retrieval_delete

Remove entries from the retrieval.

Retrieval
retrieval_list_namespaces

List retrieval namespaces and their hierarchy.

Database
db_find

Query documents from a collection using filters.

Database
db_insert

Insert one or more documents into a collection.

Database
db_update

Update documents matching a filter.

Database
db_upsert

Update the first matching document, or insert a new one when none matches.

Database
db_delete

Delete documents matching a filter.

Database
db_count

Count documents in a collection, optionally filtered.

Database
db_list_collections

List collections with counts and storage sizes.

Orchestration
trigger_agent

Trigger another agent within the same project.

Orchestration
trigger_agent_at

Schedule an agent to run at a future time.

Web
web_search

Search the web for real-time information.

Web
web_read_page

Fetch a web page and return its content as markdown.

Web
web_browser_open

Open a browser session.

Web
web_browser_observe

Read page content and available controls.

Web
web_browser_screenshot

Show the agent a screenshot of the browser viewport.

Web
web_browser_act

Click, type, use keyboard shortcuts, and navigate.

Web
web_browser_mouse

Move, click, double-click, drag, and scroll at viewport coordinates.

Web
web_browser_tabs

List, open, switch, and close browser tabs and popups.

Web
web_browser_dialog

Accept or dismiss browser dialogs and enter prompt text.

Web
web_browser_upload

Upload a file previously downloaded in the same browser session.

Web
web_browser_download

Download a file for reuse and optionally return it as an attachment.

Web
web_browser_close

Close the browser and settle its usage.

See docs for the full reference.

A Python function is a tool

Plain functions in tools/. Type hints and a docstring are everything Connic needs to expose them to an agent.

tools/billing.py
from datetime import date

def calculate_late_fee(
    invoice_total: float,
    due_date: date,
    paid_date: date,
) -> dict:
    """Compute the late fee for an overdue invoice.

    Args:
        invoice_total: The original invoice total in dollars
        due_date: The original due date
        paid_date: The date the invoice was paid

    Returns:
        Dict with the fee amount in cents and the days overdue.
    """
    days_overdue = max(0, (paid_date - due_date).days)
    fee_cents = int(invoice_total * 100 * 0.015 * days_overdue)
    return {"fee_cents": fee_cents, "days_overdue": days_overdue}
Type hints become the schema

The agent sees a typed JSON schema generated from the function signature. No decorators, no manual schema authoring.

Docstring becomes the description

The LLM uses the function docstring to decide when to call the tool. Parameters documented under Args help the model select the right one.

Auto-discovered from tools/

A file in the tools/ directory is referenced as module.function in the agent YAML. Wildcards such as calculator.* work too.

Any MCP server, every agent

Servers listed under mcp_servers in the agent YAML connect through Connic, which discovers their tools and exposes them to the LLM at runtime.

support-triage
calls tools as if local
MCP client
context7HTTP
research-hubHTTP
agents/support.yaml
mcp_servers:
  - name: context7
    url: https://mcp.context7.com/mcp

  - name: research-hub
    url: https://mcp.example.com/research
    headers:
      Authorization: "Bearer ${RESEARCH_TOKEN}"
    tools:
      - search_papers
      - fetch_abstract

  - name: internal-tools
    url: https://mcp.internal.company.com/tools
    headers:
      Authorization: "Bearer ${INTERNAL_TOKEN}"
    discoverable: true   # indexed for on-demand search, not loaded upfront

Production primitives, per call

Predefined, custom, and MCP tools all share the same discovery, observability, and lifecycle semantics.

Auto-discovery

A Python file in tools/ is referenced as module.function in the agent YAML. Subfolders and wildcards (calculator.*) both work.

Graceful stop & abort

StopProcessing from a tool ends the run successfully with a final message, while AbortTool from a hook skips a single call.

Built-in observability

Every tool call shows up in run details with inputs, output, and duration. Prints, stderr, and tools.* loggers stream to the Logs tab.

Discoverable tools

Rarely used tools or whole MCP servers can be marked as discoverable. They stay out of the LLM context until the agent searches for them by description.

Frequently Asked Questions

Custom tools are Python today. Logic written elsewhere can be wrapped in an MCP server and added under mcp_servers. The agent sees those tools natively alongside custom Python tools.

Plain Python functions in the tools/ directory are auto-discovered, with no decorators needed. Agent YAML references them as module.function (e.g. calculator.add). Wildcards (calculator.*, search.web_*) include multiple at once.

Yes. connic dev watches the tools/ directory and re-registers tools as soon as a file is saved. The dev-server docs provide more detail.

HTTP and SSE. STDIO isn't supported; MCP servers must be network-accessible from the agent container. Headers handle authentication (e.g. Authorization: Bearer ${TOKEN}), with ${VAR} syntax for secrets.

Predefined tools cover commodity work: semantic retrieval (retrieval_query), the project database (db_find, db_insert, …), agent orchestration (trigger_agent), and the web (web_search, web_read_page). Custom Python suits domain-specific logic such as calculations, internal API calls, or workflow orchestration. The recommended pattern for database tools is to wrap them in custom tools that speak the domain language.

Yes. The predefined trigger_agent tool lets the caller invoke another agent in the same project by name, optionally waiting for the response. trigger_agent_at schedules a future run by delay or absolute timestamp, up to 30 days out.