THE INFXL ANGLE

Competitive-intelligence briefs on any company's competitors, market and prospects. Early access.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
84%
Qualität der Benennung
96%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~2,814Tokens (Tool-Definitionen)
~5.1 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.20% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "angle": {
      "url": "https://mcp.angle.app.infxl.com/mcp"
    }
  }
}

Remote-Endpunkte

https://mcp.angle.app.infxl.com/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (5)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢check_company(domain)

Check that a company's website is usable for a brief, before spending anything. Pass the domain (acme.com) or any URL on it. Returns the normalised domain, the company name if this company has been seen before (otherwise null), and the credits available. Free: no credit is spent and no brief is started. Errors explain how to fix the input; URL_REDIRECTS_ELSEWHERE includes a suggested_url.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048,
      "description": "The company's own website: a domain such as acme.com, or a URL on it. Not a LinkedIn or directory page."
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "The normalised domain: lowercase, no www."
    },
    "normalized_url": {
      "type": "string"
    },
    "company_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "From the identity cache when this company was seen before, otherwise null."
    },
    "credits_remaining": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "domain",
    "normalized_url",
    "company_name",
    "credits_remaining"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢request_brief(domain, lookback_days, idempotency_key)

Start a competitive-intelligence brief for one company. Returns at once with a brief_id; generation takes 3 to 6 minutes. Then call get_brief(brief_id) after poll_after_seconds. Cost: one credit is held now and spent only if the brief is ready with at least one item. An empty or failed brief costs nothing. Pass the same idempotency_key to retry safely: it returns the original brief instead of starting a second one.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048,
      "description": "The company's own website: a domain such as acme.com, or a URL on it. Not a LinkedIn or directory page."
    },
    "lookback_days": {
      "description": "Days of news to cover, 1 to 7. Defaults to 7. The search reaches 2 days further back, because news is often published a day or more after the event; the brief states the exact date range it covers.",
      "type": "integer",
      "minimum": 1,
      "maximum": 7
    },
    "idempotency_key": {
      "description": "Optional. Reusing the same key with the same parameters returns the original brief and spends nothing new, for 24 hours.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "brief_id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "queued",
        "generating",
        "ready",
        "empty",
        "failed"
      ]
    },
    "poll_after_seconds": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Seconds to wait before calling get_brief. 0 when the brief is already settled."
    },
    "credits_remaining": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Credits available after this request: the balance minus credits held by briefs in progress."
    },
    "duplicate": {
      "type": "boolean",
      "description": "True when this returned an earlier request instead of starting a new brief."
    }
  },
  "required": [
    "brief_id",
    "status",
    "poll_after_seconds",
    "credits_remaining",
    "duplicate"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_brief(brief_id, format)

Get the status of a brief started with request_brief and, once it is ready, the brief. While it is queued or generating, wait poll_after_seconds and call again. Call at most once every 15 seconds per brief. format: markdown (default, ready to relay in chat), json, or html (the full email render). structuredContent always holds the brief as JSON. Relay the markdown to the user unchanged, from the notice line to the footer: it is the whole brief, and it has no web page, so never link to the website as the brief. The brief states the date range its news is from; every item date falls inside it. The Focal Point names the most important development; the Wide Angle says what the news means together; each item's angle says what it means for the company and how to respond; Significance rates its urgency (CRITICAL, HIGH, MODERATE, LOW) and Signal type names the kind of move. empty means no news in the window and failed means it could not be generated; neither is charged.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "brief_id": {
      "type": "string",
      "pattern": "^b_[0-9a-f]{24}$",
      "description": "The brief_id returned by request_brief or list_briefs."
    },
    "format": {
      "description": "What the text block carries once the brief is ready: markdown (default, for chat), json, or html (the full email render, tens of KB). structuredContent always carries the JSON.",
      "type": "string",
      "enum": [
        "markdown",
        "json",
        "html"
      ]
    }
  },
  "required": [
    "brief_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "brief_id": {
      "type": "string"
    },
    "domain": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "queued",
        "generating",
        "ready",
        "empty",
        "failed"
      ]
    },
    "charged": {
      "type": "boolean",
      "description": "True only when the brief is ready with at least one item and a credit was spent."
    },
    "reason": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "target_unresolvable",
            "generation_failed"
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Set only when the status is failed."
    },
    "created_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "poll_after_seconds": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "Seconds to wait before calling get_brief again. Set only while queued or generating."
    },
    "brief": {
      "description": "Present only when the status is ready.",
      "type": "object",
      "properties": {
        "format_version": {
          "type": "number",
          "const": 2
        },
        "company": {
          "type": "string"
        },
        "company_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "generated_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "timezone": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "lookback_days": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "window_start": {
          "description": "First day of news the brief covers, YYYY-MM-DD. Up to 2 days before lookback_days, for news reported after the event. Every item date falls in this range.",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "window_end": {
          "description": "Last day of news the brief covers, YYYY-MM-DD: the day it was generated.",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "focal_point": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "wide_angle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "item_count": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "sections": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "competitors",
                  "market",
                  "growth_targets"
                ]
              },
              "heading": {
                "type": "string"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "entity": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "date": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "ISO 8601 publication date, when known."
                    },
                    "severity": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Significance: CRITICAL, HIGH, MODERATE or LOW."
                    },
                    "impact_category": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Signal type: the kind of move, such as Product Disruption or M&A Opportunity."
                    },
                    "summary": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "angle": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "What the news means for the company the brief is about."
                    },
                    "explore_url": {
                      "type": "string",
                      "description": "A web search for the headline: the Explore link of the web and email brief."
                    }
                  },
                  "required": [
                    "title",
                    "entity",
                    "date",
                    "severity",
                    "impact_category",
                    "summary",
                    "angle",
                    "explore_url"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "name",
              "heading",
              "items"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "format_version",
        "company",
        "company_url",
        "date",
        "generated_at",
        "timezone",
        "lookback_days",
        "focal_point",
        "wide_angle",
        "item_count",
        "sections"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "brief_id",
    "domain",
    "status",
    "charged",
    "reason",
    "created_at",
    "poll_after_seconds"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_briefs(limit)

List this account's briefs, newest first, with each brief_id, domain, status and creation time. Briefs are kept for 30 days. Use get_brief(brief_id) to read one.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "How many briefs to return, newest first. 1 to 50; defaults to 20.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "briefs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "brief_id": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "generating",
              "ready",
              "empty",
              "failed"
            ]
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "brief_id",
          "domain",
          "status",
          "created_at"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "briefs"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_account

Show this account: credits available, credits held by briefs in progress, the limits that apply, and whether this key is read-only. Free.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "active",
        "suspended"
      ]
    },
    "credits_remaining": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Credits available to spend: the balance minus credits held by briefs in progress."
    },
    "credits_reserved": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "briefs_in_progress": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "key_prefix": {
      "type": "string"
    },
    "read_only": {
      "type": "boolean"
    },
    "timezone": {
      "type": "string"
    },
    "limits": {
      "type": "object",
      "properties": {
        "briefs_in_progress_max": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "uncharged_briefs_per_day": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "check_company_per_hour": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "max_briefs_per_day": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "briefs_in_progress_max",
        "uncharged_briefs_per_day",
        "check_company_per_hour",
        "max_briefs_per_day"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "credits_remaining",
    "credits_reserved",
    "briefs_in_progress",
    "key_prefix",
    "read_only",
    "timezone",
    "limits"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet5 Tools