Skip to content

COMPOSIO_SEARCH_TOOLS recommends non-existent Attio tools (ATTIO_QUERY_RECORDS, ATTIO_SEARCH_RECORDS, ATTIO_LIST_ATTRIBUTES) #2543

@evanpaliotta

Description

@evanpaliotta

Bug Description

COMPOSIO_SEARCH_TOOLS returns tool recommendations that don't exist in the action registry, causing execution failures that appear as connection errors.

Environment

  • API Version: v2
  • Toolkit: Attio
  • Connected Account Status: ACTIVE

Reproduction Steps

1. Execute COMPOSIO_SEARCH_TOOLS

POST /api/v2/actions/COMPOSIO_SEARCH_TOOLS/execute
{
  "connectedAccountId": "<attio_connection_id>",
  "input": {
    "queries": [{
      "use_case": "query records from attio with filters",
      "known_fields": "object:people"
    }]
  }
}

2. Response includes non-existent tools

{
  "primary_tool_slugs": ["ATTIO_FIND_RECORD", "ATTIO_QUERY_RECORDS"],
  "related_tool_slugs": ["ATTIO_SEARCH_RECORDS", "ATTIO_LIST_ATTRIBUTES", "ATTIO_UPDATE_RECORD"]
}

The response even includes "known pitfalls" for these tools:

"[ATTIO_QUERY_RECORDS] Strict equality filters can miss near-matches"

3. Verify tools don't exist

# All return 404:
GET /api/v2/actions/ATTIO_QUERY_RECORDS
GET /api/v2/actions/ATTIO_SEARCH_RECORDS  
GET /api/v2/actions/ATTIO_LIST_ATTRIBUTES

Response:

{"message":"Tool ATTIO_QUERY_RECORDS not found","code":2401,"status":404}

4. Actual Attio tools that exist (11 total)

✅ ATTIO_CREATE_NOTE
✅ ATTIO_CREATE_RECORD
✅ ATTIO_DELETE_NOTE
✅ ATTIO_DELETE_RECORD
✅ ATTIO_FIND_RECORD
✅ ATTIO_GET_OBJECT
✅ ATTIO_LIST_LISTS
✅ ATTIO_LIST_NOTES
✅ ATTIO_LIST_OBJECTS
✅ ATTIO_LIST_RECORDS
✅ ATTIO_UPDATE_RECORD

Expected Behavior

COMPOSIO_SEARCH_TOOLS should only return tools that actually exist in the action registry.

Actual Behavior

The tool returns AI-generated recommendations for tools that sound plausible but don't exist:

  • ATTIO_QUERY_RECORDS - 404
  • ATTIO_SEARCH_RECORDS - 404
  • ATTIO_LIST_ATTRIBUTES - 404

When an LLM agent tries to execute these recommended tools, they fail with 404 errors that get masked as ECONNRESET/503 "connection interrupted" errors, making debugging extremely difficult.

Impact

  • User Experience: Customers waste significant time debugging "connection issues" that are actually 404s
  • Trust: Customers lose confidence when AI recommends tools that don't work
  • Workarounds: Requires manually discovering that ATTIO_FIND_RECORD is the only working query tool

Suggested Fix

  1. Validate tool recommendations against the actual action registry before returning
  2. Or add a parameter to COMPOSIO_SEARCH_TOOLS like only_existing_tools: true
  3. Don't mask 404 errors as connection errors - surface the actual "tool not found" message

Additional Context

The Attio native API does have a query endpoint (POST /v2/objects/{object}/records/query) that supports compound filters. It appears COMPOSIO_SEARCH_TOOLS is hallucinating tool names based on what the underlying API might support, rather than checking what's actually registered in Composio's toolkit.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions